diff --git a/103/lib/ag/CoreRun/AbsSyn.ag b/103/lib/ag/CoreRun/AbsSyn.ag
--- a/103/lib/ag/CoreRun/AbsSyn.ag
+++ b/103/lib/ag/CoreRun/AbsSyn.ag
@@ -2,11 +2,12 @@
   | AGItf       module          : Mod
 
 DATA Mod
-  | Mod         ref2nm			: {Ref2Nm}		-- inverse lookup of locally introduced binding RRef's
+  | Mod         ref2nm			: {Ref2Nm}		-- inverse lookup of locally introduced binding RRef's, 20150817 TBD: to be replaced with exports (see below)
                 moduleNm        : {HsName}
-                moduleNr        : {Int}			-- sequence nr, index later into global table of modules
+                moduleNr        : {Maybe Int}	-- sequence nr, index later into global table of modules; 20150902 TBD: remove, the Expl run variant does not depend on it anymore, the Impl variant still does
                 stkDepth        : {Int}			-- max depth of stack for setting up globals
                 imports         : ImportL
+                exports         : ExportL
                 metas           : MetaL
                 binds           : {CRArray Bind}
                 mbbody			: MbExp
@@ -18,6 +19,14 @@
 
 SET AllImport		= Import ImportL
 
+DATA Export
+  | Export		nm				: {HsName}
+             	offset			: {Int}
+
+TYPE ExportL		= [Export]
+
+SET AllExport		= Export ExportL
+
 DATA Meta
   | Data		tyNm			: {HsName}
   				dataCons		: DataConL
@@ -104,4 +113,4 @@
   = Mod SExp AllExp Alt Pat
 
 SET AllNT
-  = AllCodeNT AllImport AllMetaNT
+  = AllCodeNT AllExport AllImport AllMetaNT
diff --git a/103/lib/ag/EH/AbsSyn.ag b/103/lib/ag/EH/AbsSyn.ag
--- a/103/lib/ag/EH/AbsSyn.ag
+++ b/103/lib/ag/EH/AbsSyn.ag
@@ -45,8 +45,9 @@
 
 DATA Decl
   | GenerRep        maxArity		: {Int}						-- max required unsaturated type arguments
+  					arity		    : {Int}						-- arity of this decl
   					tyNm            : {HsName}					-- type name
-  					conNmL			: {[HsName]}		-- constructors + field names
+  					conNmL			: {[HsName]}				-- constructors + field names
   					recFldNmL		: {[(HsName,[HsName])]}		-- record constructors + field names
 
 DATA Decl
@@ -315,7 +316,8 @@
       AllDataField
 
 DATA Decl
-  | Class           tyPrExpr        : TyExpr
+  | Class           clNm			: HsName
+                    tyPrExpr        : TyExpr
                     funcDeps        : FuncDeps
                     mbDefaultInstNm : {Maybe HsName}
                     decls           : Decls
diff --git a/103/lib/ag/Error/AbsSyn.ag b/103/lib/ag/Error/AbsSyn.ag
--- a/103/lib/ag/Error/AbsSyn.ag
+++ b/103/lib/ag/Error/AbsSyn.ag
@@ -147,4 +147,6 @@
                         inHI       : {[String]}
   | WrongMagic          modNm      : String
                         file       : String
+  | CannotCreateFile    modNm      : String
+                        file       : String
 
diff --git a/103/lib/ag/HS/AbsSyn.ag b/103/lib/ag/HS/AbsSyn.ag
--- a/103/lib/ag/HS/AbsSyn.ag
+++ b/103/lib/ag/HS/AbsSyn.ag
@@ -190,8 +190,9 @@
     | InstanceUseImplicitly
         range                    : Range
         expression               : Expression
-        name                     : Name
-        types                    : Types
+        -- name                     : Name
+        -- types                    : Types
+        type					 : Type
     | Default
         range                    : Range
         name                     : MaybeName
diff --git a/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.bcrr b/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.bcrr differ
diff --git a/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.crr b/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.crr
deleted file mode 100644
Binary files a/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.crr and /dev/null differ
diff --git a/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.hi b/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.hi
Binary files a/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.hi and b/103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.hi differ
diff --git a/103/lib/pkg/array-1.0.0.0/103/cr/plain/installed-pkg-config b/103/lib/pkg/array-1.0.0.0/103/cr/plain/installed-pkg-config
--- a/103/lib/pkg/array-1.0.0.0/103/cr/plain/installed-pkg-config
+++ b/103/lib/pkg/array-1.0.0.0/103/cr/plain/installed-pkg-config
@@ -1,2 +1,2 @@
 exposed-modules: Data.Array
-build-depends: uhcbase-1.1.8.12 base-3.0.0.0
+build-depends: uhcbase-1.1.9.1 base-3.0.0.0
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.bcrr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.bcrr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.cr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.cr
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.cr and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.cr differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.crr b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.crr
deleted file mode 100644
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.crr and /dev/null differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.hi b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.hi
Binary files a/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.hi and b/103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.hi differ
diff --git a/103/lib/pkg/base-3.0.0.0/103/cr/plain/installed-pkg-config b/103/lib/pkg/base-3.0.0.0/103/cr/plain/installed-pkg-config
--- a/103/lib/pkg/base-3.0.0.0/103/cr/plain/installed-pkg-config
+++ b/103/lib/pkg/base-3.0.0.0/103/cr/plain/installed-pkg-config
@@ -1,2 +1,2 @@
 exposed-modules: Control.Applicative Control.Arrow Control.Category Control.Monad.Fix Control.Monad.Instances Control.Monad.ST.Lazy Control.Monad.ST Data.Bool Data.Complex Data.Dynamic Data.Eq Data.Foldable Data.Function Data.Ix Data.Monoid Data.Ord Data.Ratio Data.String Data.Traversable Numeric Prelude System.Console.GetOpt System.Environment System.Exit Text.ParserCombinators.ReadP Text.ParserCombinators.ReadPrec Text.Read.Lex Text.Read Text.Show.Functions Text.Show
-build-depends: uhcbase-1.1.8.12
+build-depends: uhcbase-1.1.9.1
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.cr
deleted file mode 100644
# file too large to diff: 103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.cr
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.crr
deleted file mode 100644
# file too large to diff: 103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.crr
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.cr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.cr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.cr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.crr b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.crr
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.crr and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.hi b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.hi
deleted file mode 100644
Binary files a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.hi and /dev/null differ
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/CTypes.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/CTypes.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/CTypes.h
+++ /dev/null
@@ -1,231 +0,0 @@
-{- --------------------------------------------------------------------------
-// Dirty CPP hackery for CTypes/CTypesISO
-//
-// (c) The FFI task force, 2000
-// --------------------------------------------------------------------------
--}
-
-#ifndef CTYPES__H
-#define CTYPES__H
-
-#include "Typeable.h"
-
-{-
-// As long as there is no automatic derivation of classes for newtypes we resort
-// to extremely dirty cpp-hackery.   :-P   Some care has to be taken when the
-// macros below are modified, otherwise the layout rule will bite you.
--}
-
---  // A hacked version for GHC follows the Haskell 98 version...
-#ifndef __GLASGOW_HASKELL__
-
-#define NEWTYPE_TYPE_NODERIVING(T,B) \
-newtype T = T B ; 
-
-#define NEWTYPE_TYPE(T,B) \
-newtype T = T B deriving (Eq, Ord) ; 
-
-#define ARITHMETIC_TYPE_INSTANCES(T,C,S,B) \
-INSTANCE_NUM(T) ; \
-INSTANCE_REAL(T) ; \
-INSTANCE_READ(T,B) ; \
-INSTANCE_SHOW(T,B) ; \
-INSTANCE_ENUM(T) ; \
-INSTANCE_STORABLE(T) ; \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define INTEGRAL_TYPE_INSTANCES(T,C,S,B) \
-INSTANCE_BOUNDED(T) ; \
-INSTANCE_INTEGRAL(T) ; \
-INSTANCE_BITS(T)
-
-#define ARITHMETIC_TYPE(T,C,S,B) \
-NEWTYPE_TYPE(T,B) ; \
-ARITHMETIC_TYPE_INSTANCES(T,C,S,B) ;
-
-#define INTEGRAL_TYPE(T,C,S,B) \
-ARITHMETIC_TYPE(T,C,S,B) ; \
-INTEGRAL_TYPE_INSTANCES(T,C,S,B)
-
-#define FLOATING_TYPE(T,C,S,B) \
-ARITHMETIC_TYPE(T,C,S,B) ; \
-INSTANCE_FRACTIONAL(T) ; \
-INSTANCE_FLOATING(T) ; \
-INSTANCE_REALFRAC(T) ; \
-INSTANCE_REALFLOAT(T)
-
-#ifndef __GLASGOW_HASKELL__
-#define fakeMap map
-#endif
-
-#define INSTANCE_READ(T,B) \
-instance Read T where { \
-   readsPrec p s = fakeMap (\(x, t) -> (T x, t)) (readsPrec p s) }
-
-#define INSTANCE_SHOW(T,B) \
-instance Show T where { \
-   showsPrec p (T x) = showsPrec p x }
-
-#define INSTANCE_NUM(T) \
-instance Num T where { \
-   (T i) + (T j) = T (i + j) ; \
-   (T i) - (T j) = T (i - j) ; \
-   (T i) * (T j) = T (i * j) ; \
-   negate  (T i) = T (negate i) ; \
-   abs     (T i) = T (abs    i) ; \
-   signum  (T i) = T (signum i) ; \
-   fromInteger x = T (fromInteger x) }
-
-#define INSTANCE_EQ(T) \
-instance Eq T where { \
-   (T x1) == (T x2) = x1 == x2 }
-
-#define INSTANCE_ORD(T) \
-instance Ord T where { \
-   (T x1) `compare` (T x2) = x1 `compare` x2 }
-
-#define INSTANCE_BOUNDED(T) \
-instance Bounded T where { \
-   minBound = T minBound ; \
-   maxBound = T maxBound }
-
-#define INSTANCE_ENUM(T) \
-instance Enum T where { \
-   succ           (T i)             = T (succ i) ; \
-   pred           (T i)             = T (pred i) ; \
-   toEnum               x           = T (toEnum x) ; \
-   fromEnum       (T i)             = fromEnum i ; \
-   enumFrom       (T i)             = fakeMap T (enumFrom i) ; \
-   enumFromThen   (T i) (T j)       = fakeMap T (enumFromThen i j) ; \
-   enumFromTo     (T i) (T j)       = fakeMap T (enumFromTo i j) ; \
-   enumFromThenTo (T i) (T j) (T k) = fakeMap T (enumFromThenTo i j k) }
-
-#define INSTANCE_REAL(T) \
-instance Real T where { \
-   toRational (T i) = toRational i }
-
-#define INSTANCE_INTEGRAL(T) \
-instance Integral T where { \
-   (T i) `quot`    (T j) = T (i `quot` j) ; \
-   (T i) `rem`     (T j) = T (i `rem`  j) ; \
-   (T i) `div`     (T j) = T (i `div`  j) ; \
-   (T i) `mod`     (T j) = T (i `mod`  j) ; \
-   (T i) `quotRem` (T j) = let (q,r) = i `quotRem` j in (T q, T r) ; \
-   (T i) `divMod`  (T j) = let (d,m) = i `divMod`  j in (T d, T m) ; \
-   toInteger (T i)       = toInteger i }
-
-#define INSTANCE_BITS(T) \
-instance Bits T where { \
-  (T x) .&.     (T y)   = T (x .&.   y) ; \
-  (T x) .|.     (T y)   = T (x .|.   y) ; \
-  (T x) `xor`   (T y)   = T (x `xor` y) ; \
-  complement    (T x)   = T (complement x) ; \
-  shift         (T x) n = T (shift x n) ; \
-  rotate        (T x) n = T (rotate x n) ; \
-  bit                 n = T (bit n) ; \
-  setBit        (T x) n = T (setBit x n) ; \
-  clearBit      (T x) n = T (clearBit x n) ; \
-  complementBit (T x) n = T (complementBit x n) ; \
-  testBit       (T x) n = testBit x n ; \
-  bitSize       (T x)   = bitSize x ; \
-  isSigned      (T x)   = isSigned x }
-
-#define INSTANCE_FRACTIONAL(T) \
-instance Fractional T where { \
-   (T x) / (T y)  = T (x / y) ; \
-   recip   (T x)  = T (recip x) ; \
-   fromRational r = T (fromRational r) }
-
-#define INSTANCE_FLOATING(T) \
-instance Floating T where { \
-   pi                    = pi ; \
-   exp   (T x)           = T (exp   x) ; \
-   log   (T x)           = T (log   x) ; \
-   sqrt  (T x)           = T (sqrt  x) ; \
-   (T x) **        (T y) = T (x ** y) ; \
-   (T x) `logBase` (T y) = T (x `logBase` y) ; \
-   sin   (T x)           = T (sin   x) ; \
-   cos   (T x)           = T (cos   x) ; \
-   tan   (T x)           = T (tan   x) ; \
-   asin  (T x)           = T (asin  x) ; \
-   acos  (T x)           = T (acos  x) ; \
-   atan  (T x)           = T (atan  x) ; \
-   sinh  (T x)           = T (sinh  x) ; \
-   cosh  (T x)           = T (cosh  x) ; \
-   tanh  (T x)           = T (tanh  x) ; \
-   asinh (T x)           = T (asinh x) ; \
-   acosh (T x)           = T (acosh x) ; \
-   atanh (T x)           = T (atanh x) }
-
-#define INSTANCE_REALFRAC(T) \
-instance RealFrac T where { \
-   properFraction (T x) = let (m,y) = properFraction x in (m, T y) ; \
-   truncate (T x) = truncate x ; \
-   round    (T x) = round x ; \
-   ceiling  (T x) = ceiling x ; \
-   floor    (T x) = floor x }
-
-#define INSTANCE_REALFLOAT(T) \
-instance RealFloat T where { \
-   floatRadix     (T x) = floatRadix x ; \
-   floatDigits    (T x) = floatDigits x ; \
-   floatRange     (T x) = floatRange x ; \
-   decodeFloat    (T x) = decodeFloat x ; \
-   encodeFloat m n      = T (encodeFloat m n) ; \
-   exponent       (T x) = exponent x ; \
-   significand    (T x) = T (significand  x) ; \
-   scaleFloat n   (T x) = T (scaleFloat n x) ; \
-   isNaN          (T x) = isNaN x ; \
-   isInfinite     (T x) = isInfinite x ; \
-   isDenormalized (T x) = isDenormalized x ; \
-   isNegativeZero (T x) = isNegativeZero x ; \
-   isIEEE         (T x) = isIEEE x ; \
-   (T x) `atan2`  (T y) = T (x `atan2` y) }
-
-#define INSTANCE_STORABLE(T) \
-instance Storable T where { \
-   sizeOf    (T x)       = sizeOf x ; \
-   alignment (T x)       = alignment x ; \
-   peekElemOff a i       = liftM T (peekElemOff (castPtr a) i) ; \
-   pokeElemOff a i (T x) = pokeElemOff (castPtr a) i x }
-
-#else /* __GLASGOW_HASKELL__ */
-
---  // GHC can derive any class for a newtype, so we make use of that here...
-
-#define ARITHMETIC_CLASSES  Eq,Ord,Num,Enum,Storable,Real
-#define INTEGRAL_CLASSES Bounded,Integral,Bits
-#define FLOATING_CLASSES Fractional,Floating,RealFrac,RealFloat
-
-#define ARITHMETIC_TYPE(T,C,S,B) \
-newtype T = T B deriving (ARITHMETIC_CLASSES); \
-INSTANCE_READ(T,B); \
-INSTANCE_SHOW(T,B); \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define INTEGRAL_TYPE(T,C,S,B) \
-newtype T = T B deriving (ARITHMETIC_CLASSES, INTEGRAL_CLASSES); \
-INSTANCE_READ(T,B); \
-INSTANCE_SHOW(T,B); \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define FLOATING_TYPE(T,C,S,B) \
-newtype T = T B deriving (ARITHMETIC_CLASSES, FLOATING_CLASSES); \
-INSTANCE_READ(T,B); \
-INSTANCE_SHOW(T,B); \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define INSTANCE_READ(T,B) \
-instance Read T where { \
-   readsPrec            = unsafeCoerce# (readsPrec :: Int -> ReadS B); \
-   readList             = unsafeCoerce# (readList  :: ReadS [B]); }
-
-#define INSTANCE_SHOW(T,B) \
-instance Show T where { \
-   showsPrec            = unsafeCoerce# (showsPrec :: Int -> B -> ShowS); \
-   show                 = unsafeCoerce# (show :: B -> String); \
-   showList             = unsafeCoerce# (showList :: [B] -> ShowS); }
-
-#endif /* __GLASGOW_HASKELL__ */
-
-#endif
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBase.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBase.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBase.h
+++ /dev/null
@@ -1,757 +0,0 @@
-/* -----------------------------------------------------------------------------
- *
- * (c) The University of Glasgow 2001-2004
- *
- * Definitions for package `base' which are visible in Haskell land.
- *
- * Adapted for use in EHC
- *
- * ---------------------------------------------------------------------------*/
-
-#ifndef __HSBASE_H__
-#define __HSBASE_H__
-
-#include "HsBaseConfig.h"
-#ifdef __UHC_BUILDS_O__
-#include "rts.h"
-#endif
-
-/* ultra-evil... */
-#undef PACKAGE_BUGREPORT
-#undef PACKAGE_NAME
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-#undef PACKAGE_VERSION
-
-/* Needed to get the macro version of errno on some OSs (eg. Solaris).
-   We must do this, because these libs are only compiled once, but
-   must work in both single-threaded and multi-threaded programs. */
-#define _REENTRANT 1
-
-#ifndef __UHC__
-#include "HsFFI.h"
-#endif /* !__UHC__ */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#if HAVE_TERMIOS_H
-#include <termios.h>
-#endif
-#if HAVE_SIGNAL_H
-#include <signal.h>
-/* Ultra-ugly: OpenBSD uses broken macros for sigemptyset and sigfillset (missing casts) */
-#if __OpenBSD__
-#undef sigemptyset
-#undef sigfillset
-#endif
-#endif
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-#if HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#if HAVE_UTIME_H
-#include <utime.h>
-#endif
-#if HAVE_SYS_UTSNAME_H
-#include <sys/utsname.h>
-#endif
-#if HAVE_GETTIMEOFDAY
-#  if HAVE_SYS_TIME_H
-#   include <sys/time.h>
-#  endif
-#elif HAVE_GETCLOCK
-# if HAVE_SYS_TIMERS_H
-#  define POSIX_4D9 1
-#  include <sys/timers.h>
-# endif
-#endif
-#if HAVE_TIME_H
-#include <time.h>
-#endif
-#if HAVE_SYS_TIMEB_H
-#include <sys/timeb.h>
-#endif
-#if HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-#if HAVE_SYS_TIMES_H
-#include <sys/times.h>
-#endif
-#if HAVE_WINSOCK_H && defined(__MINGW32__)
-#include <winsock.h>
-#endif
-#if HAVE_LIMITS_H
-#include <limits.h>
-#endif
-#if HAVE_WCTYPE_H
-#include <wctype.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#elif HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-#if !defined(__MINGW32__) && !defined(irix_HOST_OS)
-# if HAVE_SYS_RESOURCE_H
-#  include <sys/resource.h>
-# endif
-#endif
-
-#if !HAVE_GETRUSAGE && HAVE_SYS_SYSCALL_H
-# include <sys/syscall.h>
-# if defined(SYS_GETRUSAGE)	/* hpux_HOST_OS */
-#  define getrusage(a, b)  syscall(SYS_GETRUSAGE, a, b)
-#  define HAVE_GETRUSAGE 1
-# endif
-#endif
-
-/* For System */
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#if HAVE_VFORK_H
-#include <vfork.h>
-#endif
-
-#ifndef __UHC__
-#include "dirUtils.h"
-#endif
-#ifndef __UHC__
-#include "WCsubst.h"
-#endif /* !__UHC__ */
-
-#if defined(__MINGW32__)
-/* in Win32Utils.c */
-extern void maperrno (void);
-extern HsWord64 getUSecOfDay(void);
-#endif
-
-#if defined(__MINGW32__)
-#include <io.h>
-#include <fcntl.h>
-#include <shlobj.h>
-#include <share.h>
-#endif
-
-#if HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-
-/* in inputReady.c */
-extern int fdReady(int fd, int write, int msecs, int isSock);
-
-#ifndef __UHC__
-/* in Signals.c */
-extern HsInt nocldstop;
-#endif /* !__UHC__ */
-
-#ifndef __UHC__
-/* -----------------------------------------------------------------------------
-   64-bit operations, defined in longlong.c
-   -------------------------------------------------------------------------- */
-
-#ifdef SUPPORT_LONG_LONGS
-
-HsBool hs_gtWord64 (HsWord64, HsWord64);
-HsBool hs_geWord64 (HsWord64, HsWord64);
-HsBool hs_eqWord64 (HsWord64, HsWord64);
-HsBool hs_neWord64 (HsWord64, HsWord64);
-HsBool hs_ltWord64 (HsWord64, HsWord64);
-HsBool hs_leWord64 (HsWord64, HsWord64);
-
-HsBool hs_gtInt64 (HsInt64, HsInt64);
-HsBool hs_geInt64 (HsInt64, HsInt64);
-HsBool hs_eqInt64 (HsInt64, HsInt64);
-HsBool hs_neInt64 (HsInt64, HsInt64);
-HsBool hs_ltInt64 (HsInt64, HsInt64);
-HsBool hs_leInt64 (HsInt64, HsInt64);
-
-HsWord64 hs_remWord64  (HsWord64, HsWord64);
-HsWord64 hs_quotWord64 (HsWord64, HsWord64);
-
-HsInt64 hs_remInt64    (HsInt64, HsInt64);
-HsInt64 hs_quotInt64   (HsInt64, HsInt64);
-HsInt64 hs_negateInt64 (HsInt64);
-HsInt64 hs_plusInt64   (HsInt64, HsInt64);
-HsInt64 hs_minusInt64  (HsInt64, HsInt64);
-HsInt64 hs_timesInt64  (HsInt64, HsInt64);
-
-HsWord64 hs_and64  (HsWord64, HsWord64);
-HsWord64 hs_or64   (HsWord64, HsWord64);
-HsWord64 hs_xor64  (HsWord64, HsWord64);
-HsWord64 hs_not64  (HsWord64);
-
-HsWord64 hs_uncheckedShiftL64   (HsWord64, HsInt);
-HsWord64 hs_uncheckedShiftRL64  (HsWord64, HsInt);
-HsInt64  hs_uncheckedIShiftL64  (HsInt64, HsInt);
-HsInt64  hs_uncheckedIShiftRA64 (HsInt64, HsInt);
-HsInt64  hs_uncheckedIShiftRL64 (HsInt64, HsInt);
-
-HsInt64  hs_intToInt64    (HsInt);
-HsInt    hs_int64ToInt    (HsInt64);
-HsWord64 hs_int64ToWord64 (HsInt64);
-HsWord64 hs_wordToWord64  (HsWord);
-HsWord   hs_word64ToWord  (HsWord64);
-HsInt64  hs_word64ToInt64 (HsWord64);
-
-HsWord64 hs_integerToWord64 (HsInt sa, StgByteArray /* Really: mp_limb_t* */ da);
-HsInt64  hs_integerToInt64 (HsInt sa, StgByteArray /* Really: mp_limb_t* */ da);
-
-#endif /* SUPPORT_LONG_LONGS */
-#endif /* !__UHC__ */
-
-/* -----------------------------------------------------------------------------
-   INLINE functions.
-
-   These functions are given as inlines here for when compiling via C,
-   but we also generate static versions into the cbits library for
-   when compiling to native code.
-   -------------------------------------------------------------------------- */
-
-#ifndef INLINE
-# if defined(_MSC_VER)
-#  define INLINE extern __inline
-# else
-#  define INLINE static inline
-# endif
-#endif
-
-INLINE int __hscore_get_errno(void) { return errno; }
-INLINE void __hscore_set_errno(int e) { errno = e; }
-
-#if !defined(_MSC_VER)
-INLINE int __hscore_s_isreg(mode_t m)  { return S_ISREG(m);  }
-INLINE int __hscore_s_isdir(mode_t m)  { return S_ISDIR(m);  }
-INLINE int __hscore_s_isfifo(mode_t m) { return S_ISFIFO(m); }
-INLINE int __hscore_s_isblk(mode_t m)  { return S_ISBLK(m);  }
-INLINE int __hscore_s_ischr(mode_t m)  { return S_ISCHR(m);  }
-#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__)
-INLINE int __hscore_s_issock(mode_t m) { return S_ISSOCK(m); }
-#endif
-#endif
-
-#if ( !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_WIN32) ) || defined(__CYGWIN__)
-INLINE int
-__hscore_sigemptyset( sigset_t *set )
-{ return sigemptyset(set); }
-
-INLINE int
-__hscore_sigfillset( sigset_t *set )
-{ return sigfillset(set); }
-
-INLINE int
-__hscore_sigaddset( sigset_t * set, int s )
-{ return sigaddset(set,s); }
-
-INLINE int
-__hscore_sigdelset( sigset_t * set, int s )
-{ return sigdelset(set,s); }
-
-INLINE int
-__hscore_sigismember( sigset_t * set, int s )
-{ return sigismember(set,s); }
-#endif
-
-INLINE void *
-__hscore_memcpy_dst_off( char *dst, int dst_off, char *src, size_t sz )
-{ return memcpy(dst+dst_off, src, sz); }
-
-INLINE void *
-__hscore_memcpy_src_off( char *dst, char *src, int src_off, size_t sz )
-{ return memcpy(dst, src+src_off, sz); }
-
-INLINE HsBool
-__hscore_supportsTextMode()
-{
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
-  return HS_BOOL_FALSE;
-#else
-  return HS_BOOL_TRUE;
-#endif
-}
-
-INLINE HsInt
-__hscore_bufsiz()
-{
-  return BUFSIZ;
-}
-
-INLINE int
-__hscore_seek_cur()
-{
-  return SEEK_CUR;
-}
-
-INLINE int
-__hscore_o_binary()
-{
-#if defined(_MSC_VER)
-  return O_BINARY;
-#else
-  return CONST_O_BINARY;
-#endif
-}
-
-INLINE int
-__hscore_o_rdonly()
-{
-#ifdef O_RDONLY
-  return O_RDONLY;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_wronly( void )
-{
-#ifdef O_WRONLY
-  return O_WRONLY;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_rdwr( void )
-{
-#ifdef O_RDWR
-  return O_RDWR;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_append( void )
-{
-#ifdef O_APPEND
-  return O_APPEND;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_creat( void )
-{
-#ifdef O_CREAT
-  return O_CREAT;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_excl( void )
-{
-#ifdef O_EXCL
-  return O_EXCL;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_trunc( void )
-{
-#ifdef O_TRUNC
-  return O_TRUNC;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_noctty( void )
-{
-#ifdef O_NOCTTY
-  return O_NOCTTY;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_nonblock( void )
-{
-#ifdef O_NONBLOCK
-  return O_NONBLOCK;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_seek_set( void )
-{
-  return SEEK_SET;
-}
-
-INLINE int
-__hscore_seek_end( void )
-{
-  return SEEK_END;
-}
-
-INLINE int
-__hscore_ftruncate( int fd, off_t where )
-{
-#if defined(HAVE_FTRUNCATE)
-  return ftruncate(fd,where);
-#elif defined(HAVE__CHSIZE)
-  return _chsize(fd,where);
-#else
-// ToDo: we should use _chsize_s() on Windows which allows a 64-bit
-// offset, but it doesn't seem to be available from mingw at this time 
-// --SDM (01/2008)
-#error at least ftruncate or _chsize functions are required to build
-#endif
-}
-
-#ifndef __UHC__
-INLINE int
-__hscore_setmode( int fd, HsBool toBin )
-{
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
-  return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT);
-#else
-  return 0;
-#endif
-}
-#endif /* !__UHC__ */
-
-#if __GLASGOW_HASKELL__
-
-INLINE int
-__hscore_PrelHandle_write( int fd, void *ptr, HsInt off, int sz )
-{
-  return write(fd,(char *)ptr + off, sz);
-}
-
-INLINE int
-__hscore_PrelHandle_read( int fd, void *ptr, HsInt off, int sz )
-{
-  return read(fd,(char *)ptr + off, sz);
-
-}
-
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
-INLINE int
-__hscore_PrelHandle_send( int fd, void *ptr, HsInt off, int sz )
-{
-    return send(fd,(char *)ptr + off, sz, 0);
-}
-
-INLINE int
-__hscore_PrelHandle_recv( int fd, void *ptr, HsInt off, int sz )
-{
-    return recv(fd,(char *)ptr + off, sz, 0);
-}
-#endif
-
-#endif /* __GLASGOW_HASKELL__ */
-
-INLINE int
-__hscore_mkdir( char *pathName, int mode )
-{
-#if ( defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32) ) && !defined(__CYGWIN__)
-  return mkdir(pathName);
-#else
-  return mkdir(pathName,mode);
-#endif
-}
-
-INLINE int
-__hscore_lstat( const char *fname, struct stat *st )
-{
-#if HAVE_LSTAT
-  return lstat(fname, st);
-#else
-  return stat(fname, st);
-#endif
-}
-
-INLINE char *
-__hscore_d_name( struct dirent* d )
-{
-  return (d->d_name);
-}
-
-INLINE int
-__hscore_end_of_dir( void )
-{
-  return READDIR_ERRNO_EOF;
-}
-
-INLINE void
-__hscore_free_dirent(struct dirent *dEnt)
-{
-#if HAVE_READDIR_R
-  free(dEnt);
-#endif
-}
-
-#if defined(__MINGW32__)
-// We want the versions of stat/fstat/lseek that use 64-bit offsets,
-// and you have to ask for those explicitly.  Unfortunately there
-// doesn't seem to be a 64-bit version of truncate/ftruncate, so while
-// hFileSize and hSeek will work with large files, hSetFileSize will not.
-#define stat(file,buf)       _stati64(file,buf)
-#define fstat(fd,buf)        _fstati64(fd,buf)
-typedef struct _stati64 struct_stat;
-typedef off64_t stsize_t;
-#else
-typedef struct stat struct_stat;
-typedef off_t stsize_t;
-#endif
-
-INLINE HsInt
-__hscore_sizeof_stat( void )
-{
-  return sizeof(struct_stat);
-}
-
-INLINE time_t __hscore_st_mtime ( struct_stat* st ) { return st->st_mtime; }
-INLINE stsize_t __hscore_st_size  ( struct_stat* st ) { return st->st_size; }
-#if !defined(_MSC_VER)
-INLINE mode_t __hscore_st_mode  ( struct_stat* st ) { return st->st_mode; }
-INLINE dev_t  __hscore_st_dev  ( struct_stat* st ) { return st->st_dev; }
-INLINE ino_t  __hscore_st_ino  ( struct_stat* st ) { return st->st_ino; }
-#endif
-
-#if HAVE_TERMIOS_H
-INLINE tcflag_t __hscore_lflag( struct termios* ts ) { return ts->c_lflag; }
-
-INLINE void
-__hscore_poke_lflag( struct termios* ts, tcflag_t t ) { ts->c_lflag = t; }
-
-INLINE unsigned char*
-__hscore_ptr_c_cc( struct termios* ts )
-{ return (unsigned char*) &ts->c_cc; }
-
-INLINE HsInt
-__hscore_sizeof_termios( void )
-{
-#ifndef __MINGW32__
-  return sizeof(struct termios);
-#else
-  return 0;
-#endif
-}
-#endif
-
-//sizeof_sigset_t is also use on windows systems which define tcflat_t. Why exclude it?
-// #if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_WIN32)
-INLINE HsInt
-__hscore_sizeof_sigset_t( void )
-{
-  return sizeof(sigset_t);
-}
-// #endif
-
-INLINE int
-__hscore_echo( void )
-{
-#ifdef ECHO
-  return ECHO;
-#else
-  return 0;
-#endif
-
-}
-
-INLINE int
-__hscore_tcsanow( void )
-{
-#ifdef TCSANOW
-  return TCSANOW;
-#else
-  return 0;
-#endif
-
-}
-
-INLINE int
-__hscore_icanon( void )
-{
-#ifdef ICANON
-  return ICANON;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_vmin( void )
-{
-#ifdef VMIN
-  return VMIN;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_vtime( void )
-{
-#ifdef VTIME
-  return VTIME;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_sigttou( void )
-{
-#ifdef SIGTTOU
-  return SIGTTOU;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_sig_block( void )
-{
-#ifdef SIG_BLOCK
-  return SIG_BLOCK;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_sig_setmask( void )
-{
-#ifdef SIG_SETMASK
-  return SIG_SETMASK;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_f_getfl( void )
-{
-#ifdef F_GETFL
-  return F_GETFL;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_f_setfl( void )
-{
-#ifdef F_SETFL
-  return F_SETFL;
-#else
-  return 0;
-#endif
-}
-
-// defined in rts/RtsStartup.c.
-extern void* __hscore_get_saved_termios(int fd);
-extern void __hscore_set_saved_termios(int fd, void* ts);
-
-INLINE int __hscore_hs_fileno (FILE *f) { return fileno (f); }
-
-INLINE int __hscore_open(char *file, int how, mode_t mode) {
-#ifdef __MINGW32__
-	if ((how & O_WRONLY) || (how & O_RDWR) || (how & O_APPEND))
-	  return _sopen(file,how,_SH_DENYRW,mode);
-	else
-	  return _sopen(file,how,_SH_DENYWR,mode);
-#else
-	return open(file,how,mode);
-#endif
-}
-
-// These are wrapped because on some OSs (eg. Linux) they are
-// macros which redirect to the 64-bit-off_t versions when large file
-// support is enabled.
-//
-#if defined(__MINGW32__)
-INLINE off64_t __hscore_lseek(int fd, off64_t off, int whence) {
-	return (_lseeki64(fd,off,whence));
-}
-#else
-INLINE off_t __hscore_lseek(int fd, off_t off, int whence) {
-	return (lseek(fd,off,whence));
-}
-#endif
-
-INLINE HsInt __hscore_stat(char *file, struct_stat *buf) {
-	return (stat(file,buf));
-}
-
-INLINE HsInt __hscore_fstat(int fd, struct_stat *buf) {
-	return (fstat(fd,buf));
-}
-
-// select-related stuff
-
-#if !defined(__MINGW32__)
-INLINE int  hsFD_SETSIZE(void) { return FD_SETSIZE; }
-INLINE int  hsFD_ISSET(int fd, fd_set *fds) { return FD_ISSET(fd, fds); }
-INLINE void hsFD_SET(int fd, fd_set *fds) { FD_SET(fd, fds); }
-INLINE HsInt sizeof_fd_set(void) { return sizeof(fd_set); }
-extern void hsFD_ZERO(fd_set *fds);
-#endif
-
-// gettimeofday()-related
-
-#if !defined(__MINGW32__)
-
-INLINE HsInt sizeofTimeVal(void) { return sizeof(struct timeval); }
-
-INLINE HsWord64 getUSecOfDay(void)
-{
-    struct timeval tv;
-    gettimeofday(&tv, (struct timezone *) NULL);
-    // Don't forget to cast *before* doing the arithmetic, otherwise
-    // the arithmetic happens at the type of tv_sec, which is probably
-    // only 'int'.
-    return ((HsWord64)tv.tv_sec * 1000000 + (HsWord64)tv.tv_usec);
-}
-
-INLINE void setTimevalTicks(struct timeval *p, HsWord64 usecs)
-{
-    p->tv_sec  = usecs / 1000000;
-    p->tv_usec = usecs % 1000000;
-}
-#endif /* !defined(__MINGW32__) */
-
-/* ToDo: write a feature test that doesn't assume 'environ' to
- *    be in scope at link-time. */
-extern char** environ;
-INLINE char **__hscore_environ() { return environ; }
-
-/* lossless conversions between pointers and integral types */
-INLINE void *    __hscore_from_uintptr(uintptr_t n) { return (void *)n; }
-INLINE void *    __hscore_from_intptr (intptr_t n)  { return (void *)n; }
-INLINE uintptr_t __hscore_to_uintptr  (void *p)     { return (uintptr_t)p; }
-INLINE intptr_t  __hscore_to_intptr   (void *p)     { return (intptr_t)p; }
-
-void errorBelch2(const char*s, char *t);
-void debugBelch2(const char*s, char *t);
-
-#endif /* __HSBASE_H__ */
-
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBaseConfig.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBaseConfig.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBaseConfig.h
+++ /dev/null
@@ -1,944 +0,0 @@
-/* ehclib/uhcbase/include/HsBaseConfig.h.  Generated from HsBaseConfig.h.in by configure.  */
-#ifndef HSBASECONFIG_H
-#define HSBASECONFIG_H
-
-#include "MachDeps.h"
-
-/********************************************************************/
-/**** Sizes                                                      ****/
-/********************************************************************/
-
-#if SIZEOF_INTPTR_T == 8
-#define HTYPE_INTPTR_T 			Int64
-#define HTYPE_UINTPTR_T 		Word64
-#else
-#define HTYPE_INTPTR_T 			Int32
-#define HTYPE_UINTPTR_T 		Word32
-#endif
-
-/* also here: typedef int sig_atomic_t
- */
-#if SIZEOF_INT == 8
-#define HTYPE_INT 				Int64
-#define HTYPE_UNSIGNED_INT 		Word64
-#define HTYPE_SIG_ATOMIC_T 		Word64
-#else
-#define HTYPE_INT 				Int32
-#define HTYPE_UNSIGNED_INT 		Word32
-#define HTYPE_SIG_ATOMIC_T 		Word32
-#endif
-
-#if SIZEOF_LONG == 8
-#define HTYPE_LONG 				Int64
-#define HTYPE_UNSIGNED_LONG 	Word64
-#else
-#define HTYPE_LONG 				Int32
-#define HTYPE_UNSIGNED_LONG 	Word32
-#endif
-
-#if SIZEOF_VOID_P == 8
-#define HTYPE_PTRDIFF_T 		Int64
-#else
-#define HTYPE_PTRDIFF_T 		Int32
-#endif
-
-#if SIZEOF_CLOCK_T == 8
-#define HTYPE_CLOCK_T 			Word64
-#else
-#define HTYPE_CLOCK_T 			Word32
-#endif
-
-#if SIZEOF_TIME_T == 8
-#define HTYPE_TIME_T 			Word64
-#else
-#define HTYPE_TIME_T 			Word32
-#endif
-
-#if SIZEOF_USECONDS_T == 8
-#define HTYPE_USECONDS_T 		Word64
-#else
-#define HTYPE_USECONDS_T 		Word32
-#endif
-
-#if SIZEOF_SIZE_T == 8
-#define HTYPE_SIZE_T 			Word64
-#else
-#define HTYPE_SIZE_T 			Word32
-#endif
-
-#if SIZEOF_WCHAR_T == 1
-#define HTYPE_WCHAR_T 			Word8
-#elif SIZEOF_WCHAR_T == 2
-#define HTYPE_WCHAR_T 			Word16
-#else
-#define HTYPE_WCHAR_T 			Word32
-#endif
-
-
-
-/* Define to Haskell type for char */
-#define HTYPE_CHAR Int8
-
-/* Define to Haskell type for double */
-#define HTYPE_DOUBLE Double
-
-/* Define to Haskell type for float */
-#define HTYPE_FLOAT Float
-
-/* Define to Haskell type for intmax_t */
-#define HTYPE_INTMAX_T Int64
-
-/* Define to Haskell type for long long */
-#define HTYPE_LONG_LONG Int64
-
-/* Define to Haskell type for short */
-#define HTYPE_SHORT Int16
-
-/* Define to Haskell type for signed char */
-#define HTYPE_SIGNED_CHAR Int8
-
-/* Define to Haskell type for uintmax_t */
-#define HTYPE_UINTMAX_T Word64
-
-/* Define to Haskell type for unsigned char */
-#define HTYPE_UNSIGNED_CHAR Word8
-
-/* Define to Haskell type for unsigned long long */
-#define HTYPE_UNSIGNED_LONG_LONG Word64
-
-/* Define to Haskell type for unsigned short */
-#define HTYPE_UNSIGNED_SHORT Word16
-
-
-
-/********************************************************************/
-/**** System tupes                                               ****/
-/********************************************************************/
-
-#ifdef SIZEOF_DEV_T
-# if SIZEOF_DEV_T == 8
-#  define HTYPE_DEV_T 			Word64
-# elif SIZEOF_DEV_T == 4
-#  define HTYPE_DEV_T 			Word32
-# elif SIZEOF_DEV_T == 2
-#  define HTYPE_DEV_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_INO_T
-# if SIZEOF_INO_T == 8
-#  define HTYPE_INO_T 			Word64
-# elif SIZEOF_INO_T == 4
-#  define HTYPE_INO_T 			Word32
-# elif SIZEOF_INO_T == 2
-#  define HTYPE_INO_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_MODE_T
-# if SIZEOF_MODE_T == 8
-#  define HTYPE_MODE_T 			Word64
-# elif SIZEOF_MODE_T == 4
-#  define HTYPE_MODE_T 			Word32
-# elif SIZEOF_MODE_T == 2
-#  define HTYPE_MODE_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_OFF_T
-# if SIZEOF_OFF_T == 8
-#  define HTYPE_OFF_T 			Word64
-# elif SIZEOF_OFF_T == 4
-#  define HTYPE_OFF_T 			Word32
-# elif SIZEOF_OFF_T == 2
-#  define HTYPE_OFF_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_PID_T
-# if SIZEOF_PID_T == 8
-#  define HTYPE_PID_T 			Word64
-# elif SIZEOF_PID_T == 4
-#  define HTYPE_PID_T 			Word32
-# elif SIZEOF_PID_T == 2
-#  define HTYPE_PID_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_SSIZE_T
-# if SIZEOF_SSIZE_T == 8
-#  define HTYPE_SSIZE_T 			Word64
-# elif SIZEOF_SSIZE_T == 4
-#  define HTYPE_SSIZE_T 			Word32
-# elif SIZEOF_SSIZE_T == 2
-#  define HTYPE_SSIZE_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_GID_T
-# if SIZEOF_GID_T == 8
-#  define HTYPE_GID_T 			Word64
-# elif SIZEOF_GID_T == 4
-#  define HTYPE_GID_T 			Word32
-# elif SIZEOF_GID_T == 2
-#  define HTYPE_GID_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_NLINK_T
-# if SIZEOF_NLINK_T == 8
-#  define HTYPE_NLINK_T 			Word64
-# elif SIZEOF_NLINK_T == 4
-#  define HTYPE_NLINK_T 			Word32
-# elif SIZEOF_NLINK_T == 2
-#  define HTYPE_NLINK_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_UID_T
-# if SIZEOF_UID_T == 8
-#  define HTYPE_UID_T 			Word64
-# elif SIZEOF_UID_T == 4
-#  define HTYPE_UID_T 			Word32
-# elif SIZEOF_UID_T == 2
-#  define HTYPE_UID_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_CC_T
-# if SIZEOF_CC_T == 8
-#  define HTYPE_CC_T 			Word64
-# elif SIZEOF_CC_T == 4
-#  define HTYPE_CC_T 			Word32
-# elif SIZEOF_CC_T == 2
-#  define HTYPE_CC_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_SPEED_T
-# if SIZEOF_SPEED_T == 8
-#  define HTYPE_SPEED_T 			Word64
-# elif SIZEOF_SPEED_T == 4
-#  define HTYPE_SPEED_T 			Word32
-# elif SIZEOF_SPEED_T == 2
-#  define HTYPE_SPEED_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_TCFLAG_T
-# if SIZEOF_TCFLAG_T == 8
-#  define HTYPE_TCFLAG_T 			Word64
-# elif SIZEOF_TCFLAG_T == 4
-#  define HTYPE_TCFLAG_T 			Word32
-# elif SIZEOF_TCFLAG_T == 2
-#  define HTYPE_TCFLAG_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_RLIM_T
-# if SIZEOF_RLIM_T == 8
-#  define HTYPE_RLIM_T 			Word64
-# elif SIZEOF_RLIM_T == 4
-#  define HTYPE_RLIM_T 			Word32
-# elif SIZEOF_RLIM_T == 2
-#  define HTYPE_RLIM_T 			Word16
-# else
-# endif
-#endif
-
-/********************************************************************/
-/**** Presence of include files                                  ****/
-/********************************************************************/
-
-#define HAVE_DIRENT_H 1
-#define HAVE_ERRNO_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_SIGNAL_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STRING_H 1
-#define HAVE_SYS_RESOURCE_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_SYSCALL_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMEB_H 1
-/* #undef HAVE_SYS_TIMERS_H */
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_UTSNAME_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_TERMIOS_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_UTIME_H 1
-/* #undef HAVE_VFORK_H */
-#define HAVE_WCTYPE_H 1
-/* #undef HAVE_WINDOWS_H */
-/* #undef HAVE_WINSOCK_H */
-
-/* #undef HAVE__CHSIZE */
-#define HAVE_FTRUNCATE 1
-/* #undef HAVE_GETCLOCK */
-#define HAVE_GETRUSAGE 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_LSTAT 1
-#define HAVE_READDIR_R 1
-
-/********************************************************************/
-/**** Runtime types                                              ****/
-/********************************************************************/
-
-#ifdef __UHC_BUILDS_O__
-
-#if defined(__UHC_TARGET_BC__) || defined(__UHC_TARGET_C__)
-// # define HsBool				Word
-// # define HsInt				Word
-// # define HsWord64			Word64
-// # define HsWord32			Word32
-// # define HsWord16			Word16
-// # define HsWord8			Word8
-// # ifdef __UHC_TARGET_BC__
-// #  define HS_BOOL_FALSE		gb_False
-// #  define HS_BOOL_TRUE		gb_True
-// # else
-// #  define HS_BOOL_FALSE		0
-// #  define HS_BOOL_TRUE		1
-// # endif
-#endif /* __UHC_TARGET_BC__ */
-
-#endif /* __UHC_BUILDS_O__ */
-
-/********************************************************************/
-/**** Read dir EOF error                                         ****/
-/********************************************************************/
-
-/* See remarks in GHC, libraries/base/aclocal.m4: MinGW platform returns non 0 value. We ignore that */
-#define	READDIR_ERRNO_EOF	0
-
-/********************************************************************/
-/**** C errors                                                   ****/
-/********************************************************************/
-
-/* (1) Assume errno.h is already included */
-/* (2) Error codes like EADV are not present on all platforms, so a dummy value is provided, this should be done for all codes */
-
-/* The value of E2BIG. */
-#if !defined(E2BIG)
-#define E2BIG 10000
-#endif
-#define CONST_E2BIG E2BIG
-
-/* The value of EACCES. */
-#if !defined(EACCES)
-#define EACCES 10000
-#endif
-#define CONST_EACCES EACCES
-
-/* The value of EADDRINUSE. */
-#if !defined(EADDRINUSE)
-#define EADDRINUSE 10000
-#endif
-#define CONST_EADDRINUSE EADDRINUSE
-
-/* The value of EADDRNOTAVAIL. */
-#define CONST_EADDRNOTAVAIL EADDRNOTAVAIL
-
-/* The value of EADV. */
-#if !defined(EADV)
-#define EADV 10000
-#endif
-#define CONST_EADV EADV
-
-/* The value of EAFNOSUPPORT. */
-#if !defined(EAFNOSUPPORT)
-#define EAFNOSUPPORT 10000
-#endif
-#define CONST_EAFNOSUPPORT EAFNOSUPPORT
-
-/* The value of EAGAIN. */
-#if !defined(EAGAIN)
-#define EAGAIN 10000
-#endif
-#define CONST_EAGAIN EAGAIN
-
-/* The value of EALREADY. */
-#if !defined(EALREADY)
-#define EALREADY 10000
-#endif
-#define CONST_EALREADY EALREADY
-
-/* The value of EBADF. */
-#if !defined(EBADF)
-#define EBADF 10000
-#endif
-#define CONST_EBADF EBADF
-
-/* The value of EBADMSG. */
-#if !defined(EBADMSG)
-#define EBADMSG 10000
-#endif
-#define CONST_EBADMSG EBADMSG
-
-/* The value of EBADRPC. */
-#if !defined(EBADRPC)
-#define EBADRPC 10000
-#endif
-#define CONST_EBADRPC EBADRPC
-
-/* The value of EBUSY. */
-#if !defined(EBUSY)
-#define EBUSY 10000
-#endif
-#define CONST_EBUSY EBUSY
-
-/* The value of ECHILD. */
-#if !defined(ECHILD)
-#define ECHILD 10000
-#endif
-#define CONST_ECHILD ECHILD
-
-/* The value of ECOMM. */
-#if !defined(ECOMM)
-#define ECOMM 10000
-#endif
-#define CONST_ECOMM ECOMM
-
-/* The value of ECONNABORTED. */
-#if !defined(ECONNABORTED)
-#define ECONNABORTED 10000
-#endif
-#define CONST_ECONNABORTED ECONNABORTED
-
-/* The value of ECONNREFUSED. */
-#if !defined(ECONNREFUSED)
-#define ECONNREFUSED 10000
-#endif
-#define CONST_ECONNREFUSED ECONNREFUSED
-
-/* The value of ECONNRESET. */
-#if !defined(ECONNRESET)
-#define ECONNRESET 10000
-#endif
-#define CONST_ECONNRESET ECONNRESET
-
-/* The value of EDEADLK. */
-#if !defined(EDEADLK)
-#define EDEADLK 10000
-#endif
-#define CONST_EDEADLK EDEADLK
-
-/* The value of EDESTADDRREQ. */
-#if !defined(EDESTADDRREQ)
-#define EDESTADDRREQ 10000
-#endif
-#define CONST_EDESTADDRREQ EDESTADDRREQ
-
-/* The value of EDIRTY. */
-#if !defined(EDIRTY)
-#define EDIRTY 10000
-#endif
-#define CONST_EDIRTY EDIRTY
-
-/* The value of EDOM. */
-#if !defined(EDOM)
-#define EDOM 10000
-#endif
-#define CONST_EDOM EDOM
-
-/* The value of EDQUOT. */
-#if !defined(EDQUOT)
-#define EDQUOT 10000
-#endif
-#define CONST_EDQUOT EDQUOT
-
-/* The value of EEXIST. */
-#if !defined(EEXIST)
-#define EEXIST 10000
-#endif
-#define CONST_EEXIST EEXIST
-
-/* The value of EFAULT. */
-#if !defined(EFAULT)
-#define EFAULT 10000
-#endif
-#define CONST_EFAULT EFAULT
-
-/* The value of EFBIG. */
-#if !defined(EFBIG)
-#define EFBIG 10000
-#endif
-#define CONST_EFBIG EFBIG
-
-/* The value of EFTYPE. */
-#if !defined(EFTYPE)
-#define EFTYPE 10000
-#endif
-#define CONST_EFTYPE EFTYPE
-
-/* The value of EHOSTDOWN. */
-#if !defined(EHOSTDOWN)
-#define EHOSTDOWN 10000
-#endif
-#define CONST_EHOSTDOWN EHOSTDOWN
-
-/* The value of EHOSTUNREACH. */
-#if !defined(EHOSTUNREACH)
-#define EHOSTUNREACH 10000
-#endif
-#define CONST_EHOSTUNREACH EHOSTUNREACH
-
-/* The value of EIDRM. */
-#if !defined(EIDRM)
-#define EIDRM 10000
-#endif
-#define CONST_EIDRM EIDRM
-
-/* The value of EILSEQ. */
-#if !defined(EILSEQ)
-#define EILSEQ 10000
-#endif
-#define CONST_EILSEQ EILSEQ
-
-/* The value of EINPROGRESS. */
-#if !defined(EINPROGRESS)
-#define EINPROGRESS 10000
-#endif
-#define CONST_EINPROGRESS EINPROGRESS
-
-/* The value of EINTR. */
-#if !defined(EINTR)
-#define EINTR 10000
-#endif
-#define CONST_EINTR EINTR
-
-/* The value of EINVAL. */
-#if !defined(EINVAL)
-#define EINVAL 10000
-#endif
-#define CONST_EINVAL EINVAL
-
-/* The value of EIO. */
-#if !defined(EIO)
-#define EIO 10000
-#endif
-#define CONST_EIO EIO
-
-/* The value of EISCONN. */
-#if !defined(EISCONN)
-#define EISCONN 10000
-#endif
-#define CONST_EISCONN EISCONN
-
-/* The value of EISDIR. */
-#if !defined(EISDIR)
-#define EISDIR 10000
-#endif
-#define CONST_EISDIR EISDIR
-
-/* The value of ELOOP. */
-#if !defined(ELOOP)
-#define ELOOP 10000
-#endif
-#define CONST_ELOOP ELOOP
-
-/* The value of EMFILE. */
-#if !defined(EMFILE)
-#define EMFILE 10000
-#endif
-#define CONST_EMFILE EMFILE
-
-/* The value of EMLINK. */
-#if !defined(EMLINK)
-#define EMLINK 10000
-#endif
-#define CONST_EMLINK EMLINK
-
-/* The value of EMSGSIZE. */
-#if !defined(EMSGSIZE)
-#define EMSGSIZE 10000
-#endif
-#define CONST_EMSGSIZE EMSGSIZE
-
-/* The value of EMULTIHOP. */
-#if !defined(EMULTIHOP)
-#define EMULTIHOP 10000
-#endif
-#define CONST_EMULTIHOP EMULTIHOP
-
-/* The value of ENAMETOOLONG. */
-#if !defined(ENAMETOOLONG)
-#define ENAMETOOLONG 10000
-#endif
-#define CONST_ENAMETOOLONG ENAMETOOLONG
-
-/* The value of ENETDOWN. */
-#if !defined(ENETDOWN)
-#define ENETDOWN 10000
-#endif
-#define CONST_ENETDOWN ENETDOWN
-
-/* The value of ENETRESET. */
-#if !defined(ENETRESET)
-#define ENETRESET 10000
-#endif
-#define CONST_ENETRESET ENETRESET
-
-/* The value of ENETUNREACH. */
-#if !defined(ENETUNREACH)
-#define ENETUNREACH 10000
-#endif
-#define CONST_ENETUNREACH ENETUNREACH
-
-/* The value of ENFILE. */
-#if !defined(ENFILE)
-#define ENFILE 10000
-#endif
-#define CONST_ENFILE ENFILE
-
-/* The value of ENOBUFS. */
-#if !defined(ENOBUFS)
-#define ENOBUFS 10000
-#endif
-#define CONST_ENOBUFS ENOBUFS
-
-/* The value of ENOCIGAR. */
-#if !defined(ENOCIGAR)
-#define ENOCIGAR 10000
-#endif
-#define CONST_ENOCIGAR ENOCIGAR
-
-/* The value of ENODATA. */
-#if !defined(ENODATA)
-#define ENODATA 10000
-#endif
-#define CONST_ENODATA ENODATA
-
-/* The value of ENODEV. */
-#if !defined(ENODEV)
-#define ENODEV 10000
-#endif
-#define CONST_ENODEV ENODEV
-
-/* The value of ENOENT. */
-#if !defined(ENOENT)
-#define ENOENT 10000
-#endif
-#define CONST_ENOENT ENOENT
-
-/* The value of ENOEXEC. */
-#if !defined(ENOEXEC)
-#define ENOEXEC 10000
-#endif
-#define CONST_ENOEXEC ENOEXEC
-
-/* The value of ENOLCK. */
-#if !defined(ENOLCK)
-#define ENOLCK 10000
-#endif
-#define CONST_ENOLCK ENOLCK
-
-/* The value of ENOLINK. */
-#if !defined(ENOLINK)
-#define ENOLINK 10000
-#endif
-#define CONST_ENOLINK ENOLINK
-
-/* The value of ENOMEM. */
-#if !defined(ENOMEM)
-#define ENOMEM 10000
-#endif
-#define CONST_ENOMEM ENOMEM
-
-/* The value of ENOMSG. */
-#if !defined(ENOMSG)
-#define ENOMSG 10000
-#endif
-#define CONST_ENOMSG ENOMSG
-
-/* The value of ENONET. */
-#if !defined(ENONET)
-#define ENONET 10000
-#endif
-#define CONST_ENONET ENONET
-
-/* The value of ENOPROTOOPT. */
-#if !defined(ENOPROTOOPT)
-#define ENOPROTOOPT 10000
-#endif
-#define CONST_ENOPROTOOPT ENOPROTOOPT
-
-/* The value of ENOSPC. */
-#if !defined(ENOSPC)
-#define ENOSPC 10000
-#endif
-#define CONST_ENOSPC ENOSPC
-
-/* The value of ENOSR. */
-#if !defined(ENOSR)
-#define ENOSR 10000
-#endif
-#define CONST_ENOSR ENOSR
-
-/* The value of ENOSTR. */
-#if !defined(ENOSTR)
-#define ENOSTR 10000
-#endif
-#define CONST_ENOSTR ENOSTR
-
-/* The value of ENOSYS. */
-#if !defined(ENOSYS)
-#define ENOSYS 10000
-#endif
-#define CONST_ENOSYS ENOSYS
-
-/* The value of ENOTBLK. */
-#if !defined(ENOTBLK)
-#define ENOTBLK 10000
-#endif
-#define CONST_ENOTBLK ENOTBLK
-
-/* The value of ENOTCONN. */
-#if !defined(ENOTCONN)
-#define ENOTCONN 10000
-#endif
-#define CONST_ENOTCONN ENOTCONN
-
-/* The value of ENOTDIR. */
-#if !defined(ENOTDIR)
-#define ENOTDIR 10000
-#endif
-#define CONST_ENOTDIR ENOTDIR
-
-/* The value of ENOTEMPTY. */
-#if !defined(ENOTEMPTY)
-#define ENOTEMPTY 10000
-#endif
-#define CONST_ENOTEMPTY ENOTEMPTY
-
-/* The value of ENOTSOCK. */
-#if !defined(ENOTSOCK)
-#define ENOTSOCK 10000
-#endif
-#define CONST_ENOTSOCK ENOTSOCK
-
-/* The value of ENOTTY. */
-#if !defined(ENOTTY)
-#define ENOTTY 10000
-#endif
-#define CONST_ENOTTY ENOTTY
-
-/* The value of ENXIO. */
-#if !defined(ENXIO)
-#define ENXIO 10000
-#endif
-#define CONST_ENXIO ENXIO
-
-/* The value of EOPNOTSUPP. */
-#if !defined(EOPNOTSUPP)
-#define EOPNOTSUPP 10000
-#endif
-#define CONST_EOPNOTSUPP EOPNOTSUPP
-
-/* The value of EPERM. */
-#if !defined(EPERM)
-#define EPERM 10000
-#endif
-#define CONST_EPERM EPERM
-
-/* The value of EPFNOSUPPORT. */
-#if !defined(EPFNOSUPPORT)
-#define EPFNOSUPPORT 10000
-#endif
-#define CONST_EPFNOSUPPORT EPFNOSUPPORT
-
-/* The value of EPIPE. */
-#if !defined(EPIPE)
-#define EPIPE 10000
-#endif
-#define CONST_EPIPE EPIPE
-
-/* The value of EPROCLIM. */
-#if !defined(EPROCLIM)
-#define EPROCLIM 10000
-#endif
-#define CONST_EPROCLIM EPROCLIM
-
-/* The value of EPROCUNAVAIL. */
-#if !defined(EPROCUNAVAIL)
-#define EPROCUNAVAIL 10000
-#endif
-#define CONST_EPROCUNAVAIL EPROCUNAVAIL
-
-/* The value of EPROGMISMATCH. */
-#if !defined(EPROGMISMATCH)
-#define EPROGMISMATCH 10000
-#endif
-#define CONST_EPROGMISMATCH EPROGMISMATCH
-
-/* The value of EPROGUNAVAIL. */
-#if !defined(EPROGUNAVAIL)
-#define EPROGUNAVAIL 10000
-#endif
-#define CONST_EPROGUNAVAIL EPROGUNAVAIL
-
-/* The value of EPROTO. */
-#if !defined(EPROTO)
-#define EPROTO 10000
-#endif
-#define CONST_EPROTO EPROTO
-
-/* The value of EPROTONOSUPPORT. */
-#if !defined(EPROTONOSUPPORT)
-#define EPROTONOSUPPORT 10000
-#endif
-#define CONST_EPROTONOSUPPORT EPROTONOSUPPORT
-
-/* The value of EPROTOTYPE. */
-#if !defined(EPROTOTYPE)
-#define EPROTOTYPE 10000
-#endif
-#define CONST_EPROTOTYPE EPROTOTYPE
-
-/* The value of ERANGE. */
-#if !defined(ERANGE)
-#define ERANGE 10000
-#endif
-#define CONST_ERANGE ERANGE
-
-/* The value of EREMCHG. */
-#if !defined(EREMCHG)
-#define EREMCHG 10000
-#endif
-#define CONST_EREMCHG EREMCHG
-
-/* The value of EREMOTE. */
-#if !defined(EREMOTE)
-#define EREMOTE 10000
-#endif
-#define CONST_EREMOTE EREMOTE
-
-/* The value of EROFS. */
-#if !defined(EROFS)
-#define EROFS 10000
-#endif
-#define CONST_EROFS EROFS
-
-/* The value of ERPCMISMATCH. */
-#if !defined(ERPCMISMATCH)
-#define ERPCMISMATCH 10000
-#endif
-#define CONST_ERPCMISMATCH ERPCMISMATCH
-
-/* The value of ERREMOTE. */
-#if !defined(ERREMOTE)
-#define ERREMOTE 10000
-#endif
-#define CONST_ERREMOTE ERREMOTE
-
-/* The value of ESHUTDOWN. */
-#if !defined(ESHUTDOWN)
-#define ESHUTDOWN 10000
-#endif
-#define CONST_ESHUTDOWN ESHUTDOWN
-
-/* The value of ESOCKTNOSUPPORT. */
-#if !defined(ESOCKTNOSUPPORT)
-#define ESOCKTNOSUPPORT 10000
-#endif
-#define CONST_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
-
-/* The value of ESPIPE. */
-#if !defined(ESPIPE)
-#define ESPIPE 10000
-#endif
-#define CONST_ESPIPE ESPIPE
-
-/* The value of ESRCH. */
-#if !defined(ESRCH)
-#define ESRCH 10000
-#endif
-#define CONST_ESRCH ESRCH
-
-/* The value of ESRMNT. */
-#if !defined(ESRMNT)
-#define ESRMNT 10000
-#endif
-#define CONST_ESRMNT ESRMNT
-
-/* The value of ESTALE. */
-#if !defined(ESTALE)
-#define ESTALE 10000
-#endif
-#define CONST_ESTALE ESTALE
-
-/* The value of ETIME. */
-#if !defined(ETIME)
-#define ETIME 10000
-#endif
-#define CONST_ETIME ETIME
-
-/* The value of ETIMEDOUT. */
-#if !defined(ETIMEDOUT)
-#define ETIMEDOUT 10000
-#endif
-#define CONST_ETIMEDOUT ETIMEDOUT
-
-/* The value of ETOOMANYREFS. */
-#if !defined(ETOOMANYREFS)
-#define ETOOMANYREFS 10000
-#endif
-#define CONST_ETOOMANYREFS ETOOMANYREFS
-
-/* The value of ETXTBSY. */
-#if !defined(ETXTBSY)
-#define ETXTBSY 10000
-#endif
-#define CONST_ETXTBSY ETXTBSY
-
-/* The value of EUSERS. */
-#if !defined(EUSERS)
-#define EUSERS 10000
-#endif
-#define CONST_EUSERS EUSERS
-
-/* The value of EWOULDBLOCK. */
-#if !defined(EWOULDBLOCK)
-#define EWOULDBLOCK 10000
-#endif
-#define CONST_EWOULDBLOCK EWOULDBLOCK
-
-/* The value of EXDEV. */
-#if !defined(EXDEV)
-#define EXDEV 10000
-#endif
-#define CONST_EXDEV EXDEV
-
-/* The value of O_BINARY. */
-#if !defined(O_BINARY)
-#define O_BINARY 10000
-#endif
-#define CONST_O_BINARY O_BINARY
-
-/* The value of SIGINT. */
-#if !defined(SIGINT)
-#define SIGINT 10000
-#endif
-#define CONST_SIGINT SIGINT
-
-
-#endif
-
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/IntLikeInstance.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/IntLikeInstance.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/IntLikeInstance.h
+++ /dev/null
@@ -1,242 +0,0 @@
-{- --------------------------------------------------------------------------
-// Macros to help make various instances for Int like types (Int8, ...).
-//
-// Primitives are defined by 2 forms of macros:
-//  - starting with PRIMS_  : name of Haskell function and primitive is the same
-//  - starting with PRIMS2_ : name of primitive is given explicitly, to allow sharing between primitives
-// --------------------------------------------------------------------------
--}
-
--- define conversion primitives
-#define PRIMS_CONVERSION_INTEGER(tycon,primIntegerTo,primToInteger) \
-foreign import prim primIntegerTo :: Integer -> tycon ; \
-foreign import prim primToInteger :: tycon -> Integer 
-
-#define PRIMS2_CONVERSION_INTEGER(tycon,primIntegerTo,primIntegerToNm,primToInteger,primToIntegerNm) \
-foreign import prim primIntegerToNm primIntegerTo :: Integer -> tycon ; \
-foreign import prim primToIntegerNm primToInteger :: tycon -> Integer 
-
-#define PRIMS_CONVERSION_INT(tycon,primIntTo,primToInt) \
-foreign import prim primIntTo     :: Int -> tycon ; \
-foreign import prim primToInt     :: tycon -> Int 
-
-
--- define Eq primitives
-#define PRIMS_EQ(tycon,primEq,primNe) \
-foreign import prim primEq      :: tycon -> tycon -> Bool ; \
-foreign import prim primNe      :: tycon -> tycon -> Bool 
-
-#define PRIMS2_EQ(tycon,primEq,primEqNm,primNe,primNeNm) \
-foreign import prim primEqNm primEq     :: tycon -> tycon -> Bool ; \
-foreign import prim primNeNm primNe     :: tycon -> tycon -> Bool
-
-
--- define Eq instance
-#define INSTANCE_EQ(tycon,primEq,primNe) \
-instance Eq tycon where \
-  { (==) = primEq ; \
-  	(/=) = primNe \
-  }
-
-
--- define Ord primitives
-
-#define PRIMS_ORD(tycon,primCmp,primLt,primGt,primLe,primGe) \
-foreign import prim primCmp     :: tycon -> tycon -> Ordering ; \
-foreign import prim primLt      :: tycon -> tycon -> Bool ; \
-foreign import prim primGt      :: tycon -> tycon -> Bool ; \
-foreign import prim primLe      :: tycon -> tycon -> Bool ; \
-foreign import prim primGe      :: tycon -> tycon -> Bool 
-
-#define PRIMS2_ORD(tycon,primCmp,primCmpNm,primLt,primLtNm,primGt,primGtNm,primLe,primLeNm,primGe,primGeNm) \
-foreign import prim primCmpNm primCmp     :: tycon -> tycon -> Ordering ; \
-foreign import prim primLtNm primLt      :: tycon -> tycon -> Bool ; \
-foreign import prim primGtNm primGt      :: tycon -> tycon -> Bool ; \
-foreign import prim primLeNm primLe      :: tycon -> tycon -> Bool ; \
-foreign import prim primGeNm primGe      :: tycon -> tycon -> Bool 
-
-
--- define Ord instance
-
-#define INSTANCE_ORD(tycon,primCmp,primLt,primGt,primLe,primGe) \
-instance Ord tycon where \
-  { compare = primCmp \
-  ; (<) = primLt \
-  ; (>) = primGt \
-  ; (<=) = primLe \
-  ; (>=) = primGe \
-  }
-
-
--- define Bounded primitives
-#define PRIMS_BOUNDED(tycon,primMin,primMax) \
-foreign import prim primMin     :: tycon ; \
-foreign import prim primMax     :: tycon 
-
-
--- define Bounded instance
-#define INSTANCE_BOUNDED(tycon,primMin,primMax) \
-instance Bounded tycon where \
-  { minBound = primMin \
-  ; maxBound = primMax \
-  }
-
-
--- define Num primitives
-#define PRIMS_NUM(tycon,primAdd,primSub,primMul,primNeg) \
-foreign import prim primAdd       :: tycon -> tycon -> tycon ; \
-foreign import prim primSub       :: tycon -> tycon -> tycon ; \
-foreign import prim primMul       :: tycon -> tycon -> tycon ; \
-foreign import prim primNeg       :: tycon -> tycon 
-
-#define PRIMS2_NUM(tycon,primAdd,primAddNm,primSub,primSubNm,primMul,primMulNm,primNeg,primNegNm) \
-foreign import prim primAddNm 			primAdd       :: tycon -> tycon -> tycon ; \
-foreign import prim primSubNm 			primSub       :: tycon -> tycon -> tycon ; \
-foreign import prim primMulNm 			primMul       :: tycon -> tycon -> tycon ; \
-foreign import prim primNegNm 			primNeg       :: tycon -> tycon 
-
-
--- define Num instance
-#define INSTANCE_NUM(tycon,primAdd,primSub,primMul,primNeg,primIntegerTo,primIntTo) \
-instance Num tycon where \
-  { (+)         = primAdd \
-  ; (-)         = primSub \
-  ; (*)         = primMul \
-  ; negate      = primNeg \
-  ; fromInteger = primIntegerTo \
-  ; fromInt     = primIntTo \
-  ; abs         = absReal \
-  ; signum      = signumReal \
-  }
-
-
--- define Enum instance
-#define INSTANCE_ENUM(tycon,primToEnum,primFromEnum) \
-instance Enum tycon where \
-  { succ           = boundedSucc \
-  ; pred           = boundedPred \
-  ; toEnum         = primToEnum \
-  ; fromEnum       = primFromEnum \
-  ; enumFrom       = boundedEnumFrom \
-  ; enumFromTo     = boundedEnumFromTo \
-  ; enumFromThen   = boundedEnumFromThen \
-  ; enumFromThenTo = boundedEnumFromThenTo \
-  }
-
-
--- define Real instance
-#define INSTANCE_REAL(tycon) \
-instance Real tycon where \
-  { toRational x = toInteger x % 1 \
-  }
-
-
--- define Integral primitives
-#define PRIMS_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem) \
-foreign import prim primDiv       :: tycon -> tycon -> tycon ; \
-foreign import prim primMod       :: tycon -> tycon -> tycon ; \
-foreign import prim primQuot      :: tycon -> tycon -> tycon ; \
-foreign import prim primRem       :: tycon -> tycon -> tycon 
-
-#define PRIMS2_INTEGRAL1(tycon,primDiv,primDivNm,primMod,primModNm,primQuot,primQuotNm,primRem,primRemNm) \
-foreign import prim primDivNm 			primDiv       :: tycon -> tycon -> tycon ; \
-foreign import prim primModNm 			primMod       :: tycon -> tycon -> tycon ; \
-foreign import prim primQuotNm 			primQuot      :: tycon -> tycon -> tycon ; \
-foreign import prim primRemNm 			primRem       :: tycon -> tycon -> tycon 
-
-#define PRIMS_INTEGRAL2(tycon,primDiv,primMod,primDivMod,primQuot,primRem,primQuotRem) \
-PRIMS_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem) ; \
-foreign import prim primDivMod    :: tycon -> tycon -> (tycon,tycon) ; \
-foreign import prim primQuotRem   :: tycon -> tycon -> (tycon,tycon) 
-
-#define PRIMS2_INTEGRAL2(tycon,primDiv,primDivNm,primMod,primModNm,primDivMod,primDivModNm,primQuot,primQuotNm,primRem,primRemNm,primQuotRem,primQuotRemNm) \
-PRIMS2_INTEGRAL1(tycon,primDiv,primDivNm,primMod,primModNm,primQuot,primQuotNm,primRem,primQuotRemNm) ; \
-foreign import prim primDivModNm 	primDivMod    :: tycon -> tycon -> (tycon,tycon) ; \
-foreign import prim primQuotRemNm 	primQuotRem   :: tycon -> tycon -> (tycon,tycon) 
-
-
--- define Integral instance, assume default for divMod
-#define INSTANCE_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem,primToInteger,primToInt) \
-instance Integral tycon where \
-  { quotRem d m \
-              = (primQuot d m, primRem d m) \
-  ; div       = primDiv \
-  ; quot      = primQuot \
-  ; rem       = primRem \
-  ; mod       = primMod \
-  ; toInteger = primToInteger \
-  ; toInt     = primToInt \
-  }
-
-#define INSTANCE_INTEGRAL2(tycon,primDiv,primMod,primDivMod,primQuot,primRem,primQuotRem,primToInteger,primToInt) \
-instance Integral tycon where \
-  { divMod    = primDivMod \
-  ; quotRem   = primQuotRem \
-  ; div       = primDiv \
-  ; quot      = primQuot \
-  ; rem       = primRem \
-  ; mod       = primMod \
-  ; toInteger = primToInteger \
-  ; toInt     = primToInt \
-  }
-
-
--- define Show instance
-#define INSTANCE_SHOW(tycon) \
-instance Show tycon where \
-  { show = show . toInteger \
-  }
-
-
--- define Read instance
-#define INSTANCE_READ(tycon) \
-instance Read tycon where \
-  { readsPrec p = readSigned readDec \
-  }
-
-
--- define Bits primitives
-#define PRIMS_BITLOGIC(tycon,primAnd,primOr,primXor) \
-foreign import prim primAnd       	:: tycon -> tycon -> tycon ; \
-foreign import prim primOr       	:: tycon -> tycon -> tycon ; \
-foreign import prim primXor      	:: tycon -> tycon -> tycon
-
-#define PRIMS_BITSHIFT(tycon,primComplement,primShiftLeft,primShiftRight,primRotateLeft,primRotateRight) \
-foreign import prim primComplement	:: tycon -> tycon ; \
-foreign import prim primShiftLeft  	:: tycon -> Int -> tycon ; \
-foreign import prim primShiftRight 	:: tycon -> Int -> tycon ; \
-foreign import prim primRotateLeft  :: tycon -> Int -> tycon ; \
-foreign import prim primRotateRight :: tycon -> Int -> tycon
-
-#define PRIMS2_BITLOGIC(tycon,primAnd,primAndNm,primOr,primOrNm,primXor,primXorNm) \
-foreign import prim primAndNm       	primAnd       	:: tycon -> tycon -> tycon ; \
-foreign import prim primOrNm       		primOr       	:: tycon -> tycon -> tycon ; \
-foreign import prim primXorNm      		primXor      	:: tycon -> tycon -> tycon
-
-#define PRIMS2_BITSHIFT(tycon,primComplement,primComplementNm,primShiftLeft,primShiftLeftNm,primShiftRight,primShiftRightNm,primRotateLeft,primRotateLeftNm,primRotateRight,primRotateRightNm) \
-foreign import prim primComplementNm	primComplement	:: tycon -> tycon ; \
-foreign import prim primShiftLeftNm  	primShiftLeft  	:: tycon -> Int -> tycon ; \
-foreign import prim primShiftRightNm 	primShiftRight 	:: tycon -> Int -> tycon ; \
-foreign import prim primRotateLeftNm  	primRotateLeft  :: tycon -> Int -> tycon ; \
-foreign import prim primRotateRightNm 	primRotateRight :: tycon -> Int -> tycon
-
--- define Bits instance
-#define INSTANCE_BITS1(tycon,size,signed,primAnd,primOr,primXor,primComplement,primShiftLeft,primShiftRight,primRotateLeft,primRotateRight) \
-instance Bits tycon where \
-  { (.&.)   	= primAnd \
-  ; (.|.)   	= primOr \
-  ; xor	   		= primXor \
-  ; complement  = primComplement \
-  ; shiftL      = primShiftLeft \
-  ; shiftR      = primShiftRight \
-  ; rotateL     = primRotateLeft \
-  ; rotateR     = primRotateRight \
-  ; bitSize _   = size \
-  ; isSigned _  = signed \
-  }
-
-
-
-
-
-
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/MachDeps.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/MachDeps.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/MachDeps.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* ehclib/uhcbase/include/MachDeps.h.  Generated from MachDeps.h.in by configure.  */
-#ifndef MACHDEPS_H
-#define MACHDEPS_H
-
-#define SIZEOF_INTPTR_T 8
-#define SIZEOF_CHAR 1
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#define SIZEOF_LONG 8
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_UNSIGNED_CHAR 1
-#define SIZEOF_UNSIGNED_SHORT 2
-#define SIZEOF_UNSIGNED_INT 4
-#define SIZEOF_UNSIGNED_LONG 8
-#define SIZEOF_UNSIGNED_LONG_LONG 8
-#define SIZEOF_VOID_P 8
-
-#define SIZEOF_DEV_T 4
-#define SIZEOF_INO_T 8
-#define SIZEOF_OFF_T 8
-#define SIZEOF_MODE_T 2
-#define SIZEOF_PID_T 4
-#define SIZEOF_SSIZE_T 8
-#define SIZEOF_GID_T 4
-#define SIZEOF_NLINK_T 2
-#define SIZEOF_UID_T 4
-#define SIZEOF_RLIM_T 8
-#define SIZEOF_CLOCK_T 8
-#define SIZEOF_TIME_T 8
-#define SIZEOF_SIZE_T 8
-#define SIZEOF_WCHAR_T 4
-
-#define SIZEOF_CC_T 1
-#define SIZEOF_SPEED_T 8
-#define SIZEOF_TCFLAG_T 8
-
-#define ALIGNOF_INTPTR_T 8
-#define ALIGNOF_CHAR 1
-#define ALIGNOF_SHORT 2
-#define ALIGNOF_INT 4
-#define ALIGNOF_LONG 8
-#define ALIGNOF_LONG_LONG 8
-#define ALIGNOF_FLOAT 4
-#define ALIGNOF_DOUBLE 8
-#define ALIGNOF_UNSIGNED_CHAR 1
-#define ALIGNOF_UNSIGNED_SHORT 2
-#define ALIGNOF_UNSIGNED_INT 4
-#define ALIGNOF_UNSIGNED_LONG 8
-#define ALIGNOF_UNSIGNED_LONG_LONG 8
-#define ALIGNOF_VOID_P 8
-
-#define ALIGNOF_UINT8_T 1
-#define ALIGNOF_UINT16_T 2
-#define ALIGNOF_UINT32_T 4
-#define ALIGNOF_UINT64_T 8
-
-#if SIZEOF_INTPTR_T == 8
-#define USE_64_BITS 1
-#define USE_32_BITS 0
-#else
-#define USE_64_BITS 0
-#define USE_32_BITS 1
-#endif
-
-#ifdef __UHC_TARGET_BC__
-#define BITSIZEOF_WORDTAG		1
-#else
-#define BITSIZEOF_WORDTAG		0
-#endif
-
-#define SIZEOF_HSCHAR           SIZEOF_INTPTR_T
-#define ALIGNMENT_HSCHAR        ALIGNOF_UINT32_T
-
-#define SIZEOF_HSINT            SIZEOF_INTPTR_T
-#define ALIGNMENT_HSINT         ALIGNOF_INTPTR_T
-
-#define SIZEOF_HSWORD			SIZEOF_INTPTR_T
-#define ALIGNMENT_HSWORD		ALIGNOF_INTPTR_T
-
-#define SIZEOF_HSDOUBLE			SIZEOF_DOUBLE
-#define ALIGNMENT_HSDOUBLE		ALIGNOF_DOUBLE
-
-#define SIZEOF_HSFLOAT			SIZEOF_FLOAT
-#define ALIGNMENT_HSFLOAT		ALIGNOF_FLOAT
-
-#define SIZEOF_HSPTR            SIZEOF_VOID_P
-#define ALIGNMENT_HSPTR         ALIGNOF_VOID_P
-
-#define SIZEOF_HSFUNPTR         SIZEOF_VOID_P
-#define ALIGNMENT_HSFUNPTR      ALIGNOF_VOID_P
-
-#define SIZEOF_HSFOREIGNPTR     SIZEOF_VOID_P
-#define ALIGNMENT_HSFOREIGNPTR  ALIGNOF_VOID_P
-
-#define SIZEOF_HSSTABLEPTR      SIZEOF_VOID_P
-#define ALIGNMENT_HSSTABLEPTR   ALIGNOF_VOID_P
-
-#define SIZEOF_INT8             8
-#define ALIGNMENT_INT8          ALIGNOF_UINT8_T
-
-#define SIZEOF_WORD8            8
-#define ALIGNMENT_WORD8         ALIGNOF_UINT8_T
-
-#define SIZEOF_INT16            16
-#define ALIGNMENT_INT16         ALIGNOF_UINT16_T
-
-#define SIZEOF_WORD16           16
-#define ALIGNMENT_WORD16        ALIGNOF_UINT16_T
-
-#define SIZEOF_INT32            32
-#define ALIGNMENT_INT32         ALIGNOF_UINT32_T
-
-#define SIZEOF_WORD32           32
-#define ALIGNMENT_WORD32        ALIGNOF_UINT32_T
-
-#define SIZEOF_INT64            64
-#define ALIGNMENT_INT64         ALIGNOF_UINT64_T
-
-#define SIZEOF_WORD64           64
-#define ALIGNMENT_WORD64        ALIGNOF_UINT64_T
-
-
-#endif
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/TupleInstance.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/TupleInstance.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/TupleInstance.h
+++ /dev/null
@@ -1,147 +0,0 @@
-{- --------------------------------------------------------------------------
-// Macros to help make various instances for tuples.
-// A kind of poor mans deriving.
-//
-// --------------------------------------------------------------------------
--}
-
-#define	COMMA	,
-
-{- --------------------------------------------------------------------------
-// 2 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE2_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b) => clscon (a,b) where \
-  { op1 op1preArg (a,b) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 3 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE3_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c) => clscon (a,b,c) where \
-  { op1 op1preArg (a,b,c) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        sep op1subop c \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 4 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE4_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d) => clscon (a,b,c,d) where \
-  { op1 op1preArg (a,b,c,d) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        sep op1subop c \
-        sep op1subop d \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 5 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE5_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d, clscon e) => clscon (a,b,c,d,e) where \
-  { op1 op1preArg (a,b,c,d,e) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        sep op1subop c \
-        sep op1subop d \
-        sep op1subop e \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// Set of 2..n tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE_UNOP1_INSTANCES(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-{ TUPLE2_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
-  TUPLE3_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
-  TUPLE4_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
-  TUPLE5_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-}
-
-{- --------------------------------------------------------------------------
-// 2 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE2_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b) => clscon (a,b) where \
-  { (a1,b1) op1 (a2,b2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 3 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE3_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c) => clscon (a,b,c) where \
-  { (a1,b1,c1) op1 (a2,b2,c2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        sep c1 op1subop c2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 4 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE4_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d) => clscon (a,b,c,d) where \
-  { (a1,b1,c1,d1) op1 (a2,b2,c2,d2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        sep c1 op1subop c2 \
-        sep d1 op1subop d2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 5 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE5_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d, clscon e) => clscon (a,b,c,d,e) where \
-  { (a1,b1,c1,d1,e1) op1 (a2,b2,c2,d2,e2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        sep c1 op1subop c2 \
-        sep d1 op1subop d2 \
-        sep e1 op1subop e2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// Set of 2..n tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE_BINOP1_INSTANCES(clscon,op1,op1subop,pre,sep,post) \
-{ TUPLE2_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
-  TUPLE3_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
-  TUPLE4_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
-  TUPLE5_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-}
-
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/Typeable.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/Typeable.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/Typeable.h
+++ /dev/null
@@ -1,149 +0,0 @@
-{- --------------------------------------------------------------------------
-// Macros to help make Typeable instances.
-//
-// INSTANCE_TYPEABLEn(tc,tcname,"tc") defines
-//
-//	instance Typeable/n/ tc
-//	instance Typeable a => Typeable/n-1/ (tc a)
-//	instance (Typeable a, Typeable b) => Typeable/n-2/ (tc a b)
-//	...
-//	instance (Typeable a1, ..., Typeable an) => Typeable (tc a1 ... an)
-// --------------------------------------------------------------------------
--}
-
-#ifndef TYPEABLE_H
-#define TYPEABLE_H
-
-#define INSTANCE_TYPEABLE0(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable tycon where { typeOf _ = mkTyConApp tcname [] }
-
-#ifdef __GLASGOW_HASKELL__
-
---  // For GHC, the extra instances follow from general instance declarations
---  // defined in Data.Typeable.
-
-#define INSTANCE_TYPEABLE1(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE2(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE3(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable3 tycon where { typeOf3 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE4(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable4 tycon where { typeOf4 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE5(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable5 tycon where { typeOf5 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE6(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable6 tycon where { typeOf6 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE7(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable7 tycon where { typeOf7 _ = mkTyConApp tcname [] }
-
-#else /* !__GLASGOW_HASKELL__ */
-
-#define INSTANCE_TYPEABLE1(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable (tycon a) where { typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE2(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable1 (tycon a) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b) => Typeable (tycon a b) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE3(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable3 tycon where { typeOf3 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable2 (tycon a) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b) => Typeable1 (tycon a b) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable (tycon a b c) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE4(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable4 tycon where { typeOf4 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable3 (tycon a) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b) => Typeable2 (tycon a b) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable1 (tycon a b c) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable (tycon a b c d) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE5(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable5 tycon where { typeOf5 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable4 (tycon a) where { \
-  typeOf4 = typeOf4Default }; \
-instance (Typeable a, Typeable b) => Typeable3 (tycon a b) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable2 (tycon a b c) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable1 (tycon a b c d) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable (tycon a b c d e) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE6(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable6 tycon where { typeOf6 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable5 (tycon a) where { \
-  typeOf5 = typeOf5Default }; \
-instance (Typeable a, Typeable b) => Typeable4 (tycon a b) where { \
-  typeOf4 = typeOf4Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable3 (tycon a b c) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable2 (tycon a b c d) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable1 (tycon a b c d e) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f) => Typeable (tycon a b c d e f) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE7(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable7 tycon where { typeOf7 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable6 (tycon a) where { \
-  typeOf6 = typeOf6Default }; \
-instance (Typeable a, Typeable b) => Typeable5 (tycon a b) where { \
-  typeOf5 = typeOf5Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable4 (tycon a b c) where { \
-  typeOf4 = typeOf4Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable3 (tycon a b c d) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable2 (tycon a b c d e) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f) => Typeable1 (tycon a b c d e f) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f, Typeable g) => Typeable (tycon a b c d e f g) where { \
-  typeOf = typeOfDefault }
-
-#endif /* !__GLASGOW_HASKELL__ */
-
-#endif
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/dirUtils.h b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/dirUtils.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/dirUtils.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* 
- * (c) The University of Glasgow 2002
- *
- * Directory Runtime Support
- */
-#ifndef __DIRUTILS_H__
-#define __DIRUTILS_H__
-
-extern int __hscore_readdir(DIR *dirPtr, struct dirent **pDirEnt);
-
-#endif /* __DIRUTILS_H__ */
diff --git a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/installed-pkg-config b/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/installed-pkg-config
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/installed-pkg-config
+++ /dev/null
@@ -1,2 +0,0 @@
-exposed-modules: Control.Monad Data.Bits Data.Char Data.Either Data.Int Data.IORef Data.List Data.Maybe Data.Typeable Data.Word Debug.Trace Foreign.C.Error Foreign.C.String Foreign.C.Types Foreign.C Foreign.ForeignPtr Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Error Foreign.Marshal.Pool Foreign.Marshal.Utils Foreign.Marshal Foreign.Ptr Foreign.StablePtr Foreign.Storable Foreign System.IO.Error System.IO.Fix System.IO.Unsafe System.IO System.Posix.Internals System.Posix.Types UHC.Array UHC.Base UHC.Bits UHC.Bounded UHC.BoxArray UHC.ByteArray UHC.Char UHC.Conc UHC.Enum UHC.Eq UHC.Float UHC.ForeignPtr UHC.GC UHC.Generics.Tuple UHC.Generics UHC.Handle UHC.Int UHC.IO UHC.IOBase UHC.Ix UHC.LazyST UHC.MutVar UHC.MVar UHC.OldException UHC.OldIO UHC.Ord UHC.Prims UHC.Ptr UHC.Read UHC.Real UHC.Run UHC.Show UHC.ST UHC.StablePtr UHC.StackTrace UHC.Storable UHC.STRef UHC.Types UHC.Weak UHC.WeakPtr UHC.Word Unsafe.Coerce
-build-depends: 
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/CTypes.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/CTypes.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/CTypes.h
+++ /dev/null
@@ -1,231 +0,0 @@
-{- --------------------------------------------------------------------------
-// Dirty CPP hackery for CTypes/CTypesISO
-//
-// (c) The FFI task force, 2000
-// --------------------------------------------------------------------------
--}
-
-#ifndef CTYPES__H
-#define CTYPES__H
-
-#include "Typeable.h"
-
-{-
-// As long as there is no automatic derivation of classes for newtypes we resort
-// to extremely dirty cpp-hackery.   :-P   Some care has to be taken when the
-// macros below are modified, otherwise the layout rule will bite you.
--}
-
---  // A hacked version for GHC follows the Haskell 98 version...
-#ifndef __GLASGOW_HASKELL__
-
-#define NEWTYPE_TYPE_NODERIVING(T,B) \
-newtype T = T B ; 
-
-#define NEWTYPE_TYPE(T,B) \
-newtype T = T B deriving (Eq, Ord) ; 
-
-#define ARITHMETIC_TYPE_INSTANCES(T,C,S,B) \
-INSTANCE_NUM(T) ; \
-INSTANCE_REAL(T) ; \
-INSTANCE_READ(T,B) ; \
-INSTANCE_SHOW(T,B) ; \
-INSTANCE_ENUM(T) ; \
-INSTANCE_STORABLE(T) ; \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define INTEGRAL_TYPE_INSTANCES(T,C,S,B) \
-INSTANCE_BOUNDED(T) ; \
-INSTANCE_INTEGRAL(T) ; \
-INSTANCE_BITS(T)
-
-#define ARITHMETIC_TYPE(T,C,S,B) \
-NEWTYPE_TYPE(T,B) ; \
-ARITHMETIC_TYPE_INSTANCES(T,C,S,B) ;
-
-#define INTEGRAL_TYPE(T,C,S,B) \
-ARITHMETIC_TYPE(T,C,S,B) ; \
-INTEGRAL_TYPE_INSTANCES(T,C,S,B)
-
-#define FLOATING_TYPE(T,C,S,B) \
-ARITHMETIC_TYPE(T,C,S,B) ; \
-INSTANCE_FRACTIONAL(T) ; \
-INSTANCE_FLOATING(T) ; \
-INSTANCE_REALFRAC(T) ; \
-INSTANCE_REALFLOAT(T)
-
-#ifndef __GLASGOW_HASKELL__
-#define fakeMap map
-#endif
-
-#define INSTANCE_READ(T,B) \
-instance Read T where { \
-   readsPrec p s = fakeMap (\(x, t) -> (T x, t)) (readsPrec p s) }
-
-#define INSTANCE_SHOW(T,B) \
-instance Show T where { \
-   showsPrec p (T x) = showsPrec p x }
-
-#define INSTANCE_NUM(T) \
-instance Num T where { \
-   (T i) + (T j) = T (i + j) ; \
-   (T i) - (T j) = T (i - j) ; \
-   (T i) * (T j) = T (i * j) ; \
-   negate  (T i) = T (negate i) ; \
-   abs     (T i) = T (abs    i) ; \
-   signum  (T i) = T (signum i) ; \
-   fromInteger x = T (fromInteger x) }
-
-#define INSTANCE_EQ(T) \
-instance Eq T where { \
-   (T x1) == (T x2) = x1 == x2 }
-
-#define INSTANCE_ORD(T) \
-instance Ord T where { \
-   (T x1) `compare` (T x2) = x1 `compare` x2 }
-
-#define INSTANCE_BOUNDED(T) \
-instance Bounded T where { \
-   minBound = T minBound ; \
-   maxBound = T maxBound }
-
-#define INSTANCE_ENUM(T) \
-instance Enum T where { \
-   succ           (T i)             = T (succ i) ; \
-   pred           (T i)             = T (pred i) ; \
-   toEnum               x           = T (toEnum x) ; \
-   fromEnum       (T i)             = fromEnum i ; \
-   enumFrom       (T i)             = fakeMap T (enumFrom i) ; \
-   enumFromThen   (T i) (T j)       = fakeMap T (enumFromThen i j) ; \
-   enumFromTo     (T i) (T j)       = fakeMap T (enumFromTo i j) ; \
-   enumFromThenTo (T i) (T j) (T k) = fakeMap T (enumFromThenTo i j k) }
-
-#define INSTANCE_REAL(T) \
-instance Real T where { \
-   toRational (T i) = toRational i }
-
-#define INSTANCE_INTEGRAL(T) \
-instance Integral T where { \
-   (T i) `quot`    (T j) = T (i `quot` j) ; \
-   (T i) `rem`     (T j) = T (i `rem`  j) ; \
-   (T i) `div`     (T j) = T (i `div`  j) ; \
-   (T i) `mod`     (T j) = T (i `mod`  j) ; \
-   (T i) `quotRem` (T j) = let (q,r) = i `quotRem` j in (T q, T r) ; \
-   (T i) `divMod`  (T j) = let (d,m) = i `divMod`  j in (T d, T m) ; \
-   toInteger (T i)       = toInteger i }
-
-#define INSTANCE_BITS(T) \
-instance Bits T where { \
-  (T x) .&.     (T y)   = T (x .&.   y) ; \
-  (T x) .|.     (T y)   = T (x .|.   y) ; \
-  (T x) `xor`   (T y)   = T (x `xor` y) ; \
-  complement    (T x)   = T (complement x) ; \
-  shift         (T x) n = T (shift x n) ; \
-  rotate        (T x) n = T (rotate x n) ; \
-  bit                 n = T (bit n) ; \
-  setBit        (T x) n = T (setBit x n) ; \
-  clearBit      (T x) n = T (clearBit x n) ; \
-  complementBit (T x) n = T (complementBit x n) ; \
-  testBit       (T x) n = testBit x n ; \
-  bitSize       (T x)   = bitSize x ; \
-  isSigned      (T x)   = isSigned x }
-
-#define INSTANCE_FRACTIONAL(T) \
-instance Fractional T where { \
-   (T x) / (T y)  = T (x / y) ; \
-   recip   (T x)  = T (recip x) ; \
-   fromRational r = T (fromRational r) }
-
-#define INSTANCE_FLOATING(T) \
-instance Floating T where { \
-   pi                    = pi ; \
-   exp   (T x)           = T (exp   x) ; \
-   log   (T x)           = T (log   x) ; \
-   sqrt  (T x)           = T (sqrt  x) ; \
-   (T x) **        (T y) = T (x ** y) ; \
-   (T x) `logBase` (T y) = T (x `logBase` y) ; \
-   sin   (T x)           = T (sin   x) ; \
-   cos   (T x)           = T (cos   x) ; \
-   tan   (T x)           = T (tan   x) ; \
-   asin  (T x)           = T (asin  x) ; \
-   acos  (T x)           = T (acos  x) ; \
-   atan  (T x)           = T (atan  x) ; \
-   sinh  (T x)           = T (sinh  x) ; \
-   cosh  (T x)           = T (cosh  x) ; \
-   tanh  (T x)           = T (tanh  x) ; \
-   asinh (T x)           = T (asinh x) ; \
-   acosh (T x)           = T (acosh x) ; \
-   atanh (T x)           = T (atanh x) }
-
-#define INSTANCE_REALFRAC(T) \
-instance RealFrac T where { \
-   properFraction (T x) = let (m,y) = properFraction x in (m, T y) ; \
-   truncate (T x) = truncate x ; \
-   round    (T x) = round x ; \
-   ceiling  (T x) = ceiling x ; \
-   floor    (T x) = floor x }
-
-#define INSTANCE_REALFLOAT(T) \
-instance RealFloat T where { \
-   floatRadix     (T x) = floatRadix x ; \
-   floatDigits    (T x) = floatDigits x ; \
-   floatRange     (T x) = floatRange x ; \
-   decodeFloat    (T x) = decodeFloat x ; \
-   encodeFloat m n      = T (encodeFloat m n) ; \
-   exponent       (T x) = exponent x ; \
-   significand    (T x) = T (significand  x) ; \
-   scaleFloat n   (T x) = T (scaleFloat n x) ; \
-   isNaN          (T x) = isNaN x ; \
-   isInfinite     (T x) = isInfinite x ; \
-   isDenormalized (T x) = isDenormalized x ; \
-   isNegativeZero (T x) = isNegativeZero x ; \
-   isIEEE         (T x) = isIEEE x ; \
-   (T x) `atan2`  (T y) = T (x `atan2` y) }
-
-#define INSTANCE_STORABLE(T) \
-instance Storable T where { \
-   sizeOf    (T x)       = sizeOf x ; \
-   alignment (T x)       = alignment x ; \
-   peekElemOff a i       = liftM T (peekElemOff (castPtr a) i) ; \
-   pokeElemOff a i (T x) = pokeElemOff (castPtr a) i x }
-
-#else /* __GLASGOW_HASKELL__ */
-
---  // GHC can derive any class for a newtype, so we make use of that here...
-
-#define ARITHMETIC_CLASSES  Eq,Ord,Num,Enum,Storable,Real
-#define INTEGRAL_CLASSES Bounded,Integral,Bits
-#define FLOATING_CLASSES Fractional,Floating,RealFrac,RealFloat
-
-#define ARITHMETIC_TYPE(T,C,S,B) \
-newtype T = T B deriving (ARITHMETIC_CLASSES); \
-INSTANCE_READ(T,B); \
-INSTANCE_SHOW(T,B); \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define INTEGRAL_TYPE(T,C,S,B) \
-newtype T = T B deriving (ARITHMETIC_CLASSES, INTEGRAL_CLASSES); \
-INSTANCE_READ(T,B); \
-INSTANCE_SHOW(T,B); \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define FLOATING_TYPE(T,C,S,B) \
-newtype T = T B deriving (ARITHMETIC_CLASSES, FLOATING_CLASSES); \
-INSTANCE_READ(T,B); \
-INSTANCE_SHOW(T,B); \
-INSTANCE_TYPEABLE0(T,C,S) ;
-
-#define INSTANCE_READ(T,B) \
-instance Read T where { \
-   readsPrec            = unsafeCoerce# (readsPrec :: Int -> ReadS B); \
-   readList             = unsafeCoerce# (readList  :: ReadS [B]); }
-
-#define INSTANCE_SHOW(T,B) \
-instance Show T where { \
-   showsPrec            = unsafeCoerce# (showsPrec :: Int -> B -> ShowS); \
-   show                 = unsafeCoerce# (show :: B -> String); \
-   showList             = unsafeCoerce# (showList :: [B] -> ShowS); }
-
-#endif /* __GLASGOW_HASKELL__ */
-
-#endif
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBase.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBase.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBase.h
+++ /dev/null
@@ -1,757 +0,0 @@
-/* -----------------------------------------------------------------------------
- *
- * (c) The University of Glasgow 2001-2004
- *
- * Definitions for package `base' which are visible in Haskell land.
- *
- * Adapted for use in EHC
- *
- * ---------------------------------------------------------------------------*/
-
-#ifndef __HSBASE_H__
-#define __HSBASE_H__
-
-#include "HsBaseConfig.h"
-#ifdef __UHC_BUILDS_O__
-#include "rts.h"
-#endif
-
-/* ultra-evil... */
-#undef PACKAGE_BUGREPORT
-#undef PACKAGE_NAME
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-#undef PACKAGE_VERSION
-
-/* Needed to get the macro version of errno on some OSs (eg. Solaris).
-   We must do this, because these libs are only compiled once, but
-   must work in both single-threaded and multi-threaded programs. */
-#define _REENTRANT 1
-
-#ifndef __UHC__
-#include "HsFFI.h"
-#endif /* !__UHC__ */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#if HAVE_TERMIOS_H
-#include <termios.h>
-#endif
-#if HAVE_SIGNAL_H
-#include <signal.h>
-/* Ultra-ugly: OpenBSD uses broken macros for sigemptyset and sigfillset (missing casts) */
-#if __OpenBSD__
-#undef sigemptyset
-#undef sigfillset
-#endif
-#endif
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-#if HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#if HAVE_UTIME_H
-#include <utime.h>
-#endif
-#if HAVE_SYS_UTSNAME_H
-#include <sys/utsname.h>
-#endif
-#if HAVE_GETTIMEOFDAY
-#  if HAVE_SYS_TIME_H
-#   include <sys/time.h>
-#  endif
-#elif HAVE_GETCLOCK
-# if HAVE_SYS_TIMERS_H
-#  define POSIX_4D9 1
-#  include <sys/timers.h>
-# endif
-#endif
-#if HAVE_TIME_H
-#include <time.h>
-#endif
-#if HAVE_SYS_TIMEB_H
-#include <sys/timeb.h>
-#endif
-#if HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-#if HAVE_SYS_TIMES_H
-#include <sys/times.h>
-#endif
-#if HAVE_WINSOCK_H && defined(__MINGW32__)
-#include <winsock.h>
-#endif
-#if HAVE_LIMITS_H
-#include <limits.h>
-#endif
-#if HAVE_WCTYPE_H
-#include <wctype.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#elif HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-#if !defined(__MINGW32__) && !defined(irix_HOST_OS)
-# if HAVE_SYS_RESOURCE_H
-#  include <sys/resource.h>
-# endif
-#endif
-
-#if !HAVE_GETRUSAGE && HAVE_SYS_SYSCALL_H
-# include <sys/syscall.h>
-# if defined(SYS_GETRUSAGE)	/* hpux_HOST_OS */
-#  define getrusage(a, b)  syscall(SYS_GETRUSAGE, a, b)
-#  define HAVE_GETRUSAGE 1
-# endif
-#endif
-
-/* For System */
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#if HAVE_VFORK_H
-#include <vfork.h>
-#endif
-
-#ifndef __UHC__
-#include "dirUtils.h"
-#endif
-#ifndef __UHC__
-#include "WCsubst.h"
-#endif /* !__UHC__ */
-
-#if defined(__MINGW32__)
-/* in Win32Utils.c */
-extern void maperrno (void);
-extern HsWord64 getUSecOfDay(void);
-#endif
-
-#if defined(__MINGW32__)
-#include <io.h>
-#include <fcntl.h>
-#include <shlobj.h>
-#include <share.h>
-#endif
-
-#if HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-
-/* in inputReady.c */
-extern int fdReady(int fd, int write, int msecs, int isSock);
-
-#ifndef __UHC__
-/* in Signals.c */
-extern HsInt nocldstop;
-#endif /* !__UHC__ */
-
-#ifndef __UHC__
-/* -----------------------------------------------------------------------------
-   64-bit operations, defined in longlong.c
-   -------------------------------------------------------------------------- */
-
-#ifdef SUPPORT_LONG_LONGS
-
-HsBool hs_gtWord64 (HsWord64, HsWord64);
-HsBool hs_geWord64 (HsWord64, HsWord64);
-HsBool hs_eqWord64 (HsWord64, HsWord64);
-HsBool hs_neWord64 (HsWord64, HsWord64);
-HsBool hs_ltWord64 (HsWord64, HsWord64);
-HsBool hs_leWord64 (HsWord64, HsWord64);
-
-HsBool hs_gtInt64 (HsInt64, HsInt64);
-HsBool hs_geInt64 (HsInt64, HsInt64);
-HsBool hs_eqInt64 (HsInt64, HsInt64);
-HsBool hs_neInt64 (HsInt64, HsInt64);
-HsBool hs_ltInt64 (HsInt64, HsInt64);
-HsBool hs_leInt64 (HsInt64, HsInt64);
-
-HsWord64 hs_remWord64  (HsWord64, HsWord64);
-HsWord64 hs_quotWord64 (HsWord64, HsWord64);
-
-HsInt64 hs_remInt64    (HsInt64, HsInt64);
-HsInt64 hs_quotInt64   (HsInt64, HsInt64);
-HsInt64 hs_negateInt64 (HsInt64);
-HsInt64 hs_plusInt64   (HsInt64, HsInt64);
-HsInt64 hs_minusInt64  (HsInt64, HsInt64);
-HsInt64 hs_timesInt64  (HsInt64, HsInt64);
-
-HsWord64 hs_and64  (HsWord64, HsWord64);
-HsWord64 hs_or64   (HsWord64, HsWord64);
-HsWord64 hs_xor64  (HsWord64, HsWord64);
-HsWord64 hs_not64  (HsWord64);
-
-HsWord64 hs_uncheckedShiftL64   (HsWord64, HsInt);
-HsWord64 hs_uncheckedShiftRL64  (HsWord64, HsInt);
-HsInt64  hs_uncheckedIShiftL64  (HsInt64, HsInt);
-HsInt64  hs_uncheckedIShiftRA64 (HsInt64, HsInt);
-HsInt64  hs_uncheckedIShiftRL64 (HsInt64, HsInt);
-
-HsInt64  hs_intToInt64    (HsInt);
-HsInt    hs_int64ToInt    (HsInt64);
-HsWord64 hs_int64ToWord64 (HsInt64);
-HsWord64 hs_wordToWord64  (HsWord);
-HsWord   hs_word64ToWord  (HsWord64);
-HsInt64  hs_word64ToInt64 (HsWord64);
-
-HsWord64 hs_integerToWord64 (HsInt sa, StgByteArray /* Really: mp_limb_t* */ da);
-HsInt64  hs_integerToInt64 (HsInt sa, StgByteArray /* Really: mp_limb_t* */ da);
-
-#endif /* SUPPORT_LONG_LONGS */
-#endif /* !__UHC__ */
-
-/* -----------------------------------------------------------------------------
-   INLINE functions.
-
-   These functions are given as inlines here for when compiling via C,
-   but we also generate static versions into the cbits library for
-   when compiling to native code.
-   -------------------------------------------------------------------------- */
-
-#ifndef INLINE
-# if defined(_MSC_VER)
-#  define INLINE extern __inline
-# else
-#  define INLINE static inline
-# endif
-#endif
-
-INLINE int __hscore_get_errno(void) { return errno; }
-INLINE void __hscore_set_errno(int e) { errno = e; }
-
-#if !defined(_MSC_VER)
-INLINE int __hscore_s_isreg(mode_t m)  { return S_ISREG(m);  }
-INLINE int __hscore_s_isdir(mode_t m)  { return S_ISDIR(m);  }
-INLINE int __hscore_s_isfifo(mode_t m) { return S_ISFIFO(m); }
-INLINE int __hscore_s_isblk(mode_t m)  { return S_ISBLK(m);  }
-INLINE int __hscore_s_ischr(mode_t m)  { return S_ISCHR(m);  }
-#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__)
-INLINE int __hscore_s_issock(mode_t m) { return S_ISSOCK(m); }
-#endif
-#endif
-
-#if ( !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_WIN32) ) || defined(__CYGWIN__)
-INLINE int
-__hscore_sigemptyset( sigset_t *set )
-{ return sigemptyset(set); }
-
-INLINE int
-__hscore_sigfillset( sigset_t *set )
-{ return sigfillset(set); }
-
-INLINE int
-__hscore_sigaddset( sigset_t * set, int s )
-{ return sigaddset(set,s); }
-
-INLINE int
-__hscore_sigdelset( sigset_t * set, int s )
-{ return sigdelset(set,s); }
-
-INLINE int
-__hscore_sigismember( sigset_t * set, int s )
-{ return sigismember(set,s); }
-#endif
-
-INLINE void *
-__hscore_memcpy_dst_off( char *dst, int dst_off, char *src, size_t sz )
-{ return memcpy(dst+dst_off, src, sz); }
-
-INLINE void *
-__hscore_memcpy_src_off( char *dst, char *src, int src_off, size_t sz )
-{ return memcpy(dst, src+src_off, sz); }
-
-INLINE HsBool
-__hscore_supportsTextMode()
-{
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
-  return HS_BOOL_FALSE;
-#else
-  return HS_BOOL_TRUE;
-#endif
-}
-
-INLINE HsInt
-__hscore_bufsiz()
-{
-  return BUFSIZ;
-}
-
-INLINE int
-__hscore_seek_cur()
-{
-  return SEEK_CUR;
-}
-
-INLINE int
-__hscore_o_binary()
-{
-#if defined(_MSC_VER)
-  return O_BINARY;
-#else
-  return CONST_O_BINARY;
-#endif
-}
-
-INLINE int
-__hscore_o_rdonly()
-{
-#ifdef O_RDONLY
-  return O_RDONLY;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_wronly( void )
-{
-#ifdef O_WRONLY
-  return O_WRONLY;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_rdwr( void )
-{
-#ifdef O_RDWR
-  return O_RDWR;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_append( void )
-{
-#ifdef O_APPEND
-  return O_APPEND;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_creat( void )
-{
-#ifdef O_CREAT
-  return O_CREAT;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_excl( void )
-{
-#ifdef O_EXCL
-  return O_EXCL;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_trunc( void )
-{
-#ifdef O_TRUNC
-  return O_TRUNC;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_noctty( void )
-{
-#ifdef O_NOCTTY
-  return O_NOCTTY;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_o_nonblock( void )
-{
-#ifdef O_NONBLOCK
-  return O_NONBLOCK;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_seek_set( void )
-{
-  return SEEK_SET;
-}
-
-INLINE int
-__hscore_seek_end( void )
-{
-  return SEEK_END;
-}
-
-INLINE int
-__hscore_ftruncate( int fd, off_t where )
-{
-#if defined(HAVE_FTRUNCATE)
-  return ftruncate(fd,where);
-#elif defined(HAVE__CHSIZE)
-  return _chsize(fd,where);
-#else
-// ToDo: we should use _chsize_s() on Windows which allows a 64-bit
-// offset, but it doesn't seem to be available from mingw at this time 
-// --SDM (01/2008)
-#error at least ftruncate or _chsize functions are required to build
-#endif
-}
-
-#ifndef __UHC__
-INLINE int
-__hscore_setmode( int fd, HsBool toBin )
-{
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
-  return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT);
-#else
-  return 0;
-#endif
-}
-#endif /* !__UHC__ */
-
-#if __GLASGOW_HASKELL__
-
-INLINE int
-__hscore_PrelHandle_write( int fd, void *ptr, HsInt off, int sz )
-{
-  return write(fd,(char *)ptr + off, sz);
-}
-
-INLINE int
-__hscore_PrelHandle_read( int fd, void *ptr, HsInt off, int sz )
-{
-  return read(fd,(char *)ptr + off, sz);
-
-}
-
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
-INLINE int
-__hscore_PrelHandle_send( int fd, void *ptr, HsInt off, int sz )
-{
-    return send(fd,(char *)ptr + off, sz, 0);
-}
-
-INLINE int
-__hscore_PrelHandle_recv( int fd, void *ptr, HsInt off, int sz )
-{
-    return recv(fd,(char *)ptr + off, sz, 0);
-}
-#endif
-
-#endif /* __GLASGOW_HASKELL__ */
-
-INLINE int
-__hscore_mkdir( char *pathName, int mode )
-{
-#if ( defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32) ) && !defined(__CYGWIN__)
-  return mkdir(pathName);
-#else
-  return mkdir(pathName,mode);
-#endif
-}
-
-INLINE int
-__hscore_lstat( const char *fname, struct stat *st )
-{
-#if HAVE_LSTAT
-  return lstat(fname, st);
-#else
-  return stat(fname, st);
-#endif
-}
-
-INLINE char *
-__hscore_d_name( struct dirent* d )
-{
-  return (d->d_name);
-}
-
-INLINE int
-__hscore_end_of_dir( void )
-{
-  return READDIR_ERRNO_EOF;
-}
-
-INLINE void
-__hscore_free_dirent(struct dirent *dEnt)
-{
-#if HAVE_READDIR_R
-  free(dEnt);
-#endif
-}
-
-#if defined(__MINGW32__)
-// We want the versions of stat/fstat/lseek that use 64-bit offsets,
-// and you have to ask for those explicitly.  Unfortunately there
-// doesn't seem to be a 64-bit version of truncate/ftruncate, so while
-// hFileSize and hSeek will work with large files, hSetFileSize will not.
-#define stat(file,buf)       _stati64(file,buf)
-#define fstat(fd,buf)        _fstati64(fd,buf)
-typedef struct _stati64 struct_stat;
-typedef off64_t stsize_t;
-#else
-typedef struct stat struct_stat;
-typedef off_t stsize_t;
-#endif
-
-INLINE HsInt
-__hscore_sizeof_stat( void )
-{
-  return sizeof(struct_stat);
-}
-
-INLINE time_t __hscore_st_mtime ( struct_stat* st ) { return st->st_mtime; }
-INLINE stsize_t __hscore_st_size  ( struct_stat* st ) { return st->st_size; }
-#if !defined(_MSC_VER)
-INLINE mode_t __hscore_st_mode  ( struct_stat* st ) { return st->st_mode; }
-INLINE dev_t  __hscore_st_dev  ( struct_stat* st ) { return st->st_dev; }
-INLINE ino_t  __hscore_st_ino  ( struct_stat* st ) { return st->st_ino; }
-#endif
-
-#if HAVE_TERMIOS_H
-INLINE tcflag_t __hscore_lflag( struct termios* ts ) { return ts->c_lflag; }
-
-INLINE void
-__hscore_poke_lflag( struct termios* ts, tcflag_t t ) { ts->c_lflag = t; }
-
-INLINE unsigned char*
-__hscore_ptr_c_cc( struct termios* ts )
-{ return (unsigned char*) &ts->c_cc; }
-
-INLINE HsInt
-__hscore_sizeof_termios( void )
-{
-#ifndef __MINGW32__
-  return sizeof(struct termios);
-#else
-  return 0;
-#endif
-}
-#endif
-
-//sizeof_sigset_t is also use on windows systems which define tcflat_t. Why exclude it?
-// #if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_WIN32)
-INLINE HsInt
-__hscore_sizeof_sigset_t( void )
-{
-  return sizeof(sigset_t);
-}
-// #endif
-
-INLINE int
-__hscore_echo( void )
-{
-#ifdef ECHO
-  return ECHO;
-#else
-  return 0;
-#endif
-
-}
-
-INLINE int
-__hscore_tcsanow( void )
-{
-#ifdef TCSANOW
-  return TCSANOW;
-#else
-  return 0;
-#endif
-
-}
-
-INLINE int
-__hscore_icanon( void )
-{
-#ifdef ICANON
-  return ICANON;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_vmin( void )
-{
-#ifdef VMIN
-  return VMIN;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_vtime( void )
-{
-#ifdef VTIME
-  return VTIME;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_sigttou( void )
-{
-#ifdef SIGTTOU
-  return SIGTTOU;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_sig_block( void )
-{
-#ifdef SIG_BLOCK
-  return SIG_BLOCK;
-#else
-  return 0;
-#endif
-}
-
-INLINE int __hscore_sig_setmask( void )
-{
-#ifdef SIG_SETMASK
-  return SIG_SETMASK;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_f_getfl( void )
-{
-#ifdef F_GETFL
-  return F_GETFL;
-#else
-  return 0;
-#endif
-}
-
-INLINE int
-__hscore_f_setfl( void )
-{
-#ifdef F_SETFL
-  return F_SETFL;
-#else
-  return 0;
-#endif
-}
-
-// defined in rts/RtsStartup.c.
-extern void* __hscore_get_saved_termios(int fd);
-extern void __hscore_set_saved_termios(int fd, void* ts);
-
-INLINE int __hscore_hs_fileno (FILE *f) { return fileno (f); }
-
-INLINE int __hscore_open(char *file, int how, mode_t mode) {
-#ifdef __MINGW32__
-	if ((how & O_WRONLY) || (how & O_RDWR) || (how & O_APPEND))
-	  return _sopen(file,how,_SH_DENYRW,mode);
-	else
-	  return _sopen(file,how,_SH_DENYWR,mode);
-#else
-	return open(file,how,mode);
-#endif
-}
-
-// These are wrapped because on some OSs (eg. Linux) they are
-// macros which redirect to the 64-bit-off_t versions when large file
-// support is enabled.
-//
-#if defined(__MINGW32__)
-INLINE off64_t __hscore_lseek(int fd, off64_t off, int whence) {
-	return (_lseeki64(fd,off,whence));
-}
-#else
-INLINE off_t __hscore_lseek(int fd, off_t off, int whence) {
-	return (lseek(fd,off,whence));
-}
-#endif
-
-INLINE HsInt __hscore_stat(char *file, struct_stat *buf) {
-	return (stat(file,buf));
-}
-
-INLINE HsInt __hscore_fstat(int fd, struct_stat *buf) {
-	return (fstat(fd,buf));
-}
-
-// select-related stuff
-
-#if !defined(__MINGW32__)
-INLINE int  hsFD_SETSIZE(void) { return FD_SETSIZE; }
-INLINE int  hsFD_ISSET(int fd, fd_set *fds) { return FD_ISSET(fd, fds); }
-INLINE void hsFD_SET(int fd, fd_set *fds) { FD_SET(fd, fds); }
-INLINE HsInt sizeof_fd_set(void) { return sizeof(fd_set); }
-extern void hsFD_ZERO(fd_set *fds);
-#endif
-
-// gettimeofday()-related
-
-#if !defined(__MINGW32__)
-
-INLINE HsInt sizeofTimeVal(void) { return sizeof(struct timeval); }
-
-INLINE HsWord64 getUSecOfDay(void)
-{
-    struct timeval tv;
-    gettimeofday(&tv, (struct timezone *) NULL);
-    // Don't forget to cast *before* doing the arithmetic, otherwise
-    // the arithmetic happens at the type of tv_sec, which is probably
-    // only 'int'.
-    return ((HsWord64)tv.tv_sec * 1000000 + (HsWord64)tv.tv_usec);
-}
-
-INLINE void setTimevalTicks(struct timeval *p, HsWord64 usecs)
-{
-    p->tv_sec  = usecs / 1000000;
-    p->tv_usec = usecs % 1000000;
-}
-#endif /* !defined(__MINGW32__) */
-
-/* ToDo: write a feature test that doesn't assume 'environ' to
- *    be in scope at link-time. */
-extern char** environ;
-INLINE char **__hscore_environ() { return environ; }
-
-/* lossless conversions between pointers and integral types */
-INLINE void *    __hscore_from_uintptr(uintptr_t n) { return (void *)n; }
-INLINE void *    __hscore_from_intptr (intptr_t n)  { return (void *)n; }
-INLINE uintptr_t __hscore_to_uintptr  (void *p)     { return (uintptr_t)p; }
-INLINE intptr_t  __hscore_to_intptr   (void *p)     { return (intptr_t)p; }
-
-void errorBelch2(const char*s, char *t);
-void debugBelch2(const char*s, char *t);
-
-#endif /* __HSBASE_H__ */
-
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBaseConfig.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBaseConfig.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBaseConfig.h
+++ /dev/null
@@ -1,944 +0,0 @@
-/* ehclib/uhcbase/include/HsBaseConfig.h.  Generated from HsBaseConfig.h.in by configure.  */
-#ifndef HSBASECONFIG_H
-#define HSBASECONFIG_H
-
-#include "MachDeps.h"
-
-/********************************************************************/
-/**** Sizes                                                      ****/
-/********************************************************************/
-
-#if SIZEOF_INTPTR_T == 8
-#define HTYPE_INTPTR_T 			Int64
-#define HTYPE_UINTPTR_T 		Word64
-#else
-#define HTYPE_INTPTR_T 			Int32
-#define HTYPE_UINTPTR_T 		Word32
-#endif
-
-/* also here: typedef int sig_atomic_t
- */
-#if SIZEOF_INT == 8
-#define HTYPE_INT 				Int64
-#define HTYPE_UNSIGNED_INT 		Word64
-#define HTYPE_SIG_ATOMIC_T 		Word64
-#else
-#define HTYPE_INT 				Int32
-#define HTYPE_UNSIGNED_INT 		Word32
-#define HTYPE_SIG_ATOMIC_T 		Word32
-#endif
-
-#if SIZEOF_LONG == 8
-#define HTYPE_LONG 				Int64
-#define HTYPE_UNSIGNED_LONG 	Word64
-#else
-#define HTYPE_LONG 				Int32
-#define HTYPE_UNSIGNED_LONG 	Word32
-#endif
-
-#if SIZEOF_VOID_P == 8
-#define HTYPE_PTRDIFF_T 		Int64
-#else
-#define HTYPE_PTRDIFF_T 		Int32
-#endif
-
-#if SIZEOF_CLOCK_T == 8
-#define HTYPE_CLOCK_T 			Word64
-#else
-#define HTYPE_CLOCK_T 			Word32
-#endif
-
-#if SIZEOF_TIME_T == 8
-#define HTYPE_TIME_T 			Word64
-#else
-#define HTYPE_TIME_T 			Word32
-#endif
-
-#if SIZEOF_USECONDS_T == 8
-#define HTYPE_USECONDS_T 		Word64
-#else
-#define HTYPE_USECONDS_T 		Word32
-#endif
-
-#if SIZEOF_SIZE_T == 8
-#define HTYPE_SIZE_T 			Word64
-#else
-#define HTYPE_SIZE_T 			Word32
-#endif
-
-#if SIZEOF_WCHAR_T == 1
-#define HTYPE_WCHAR_T 			Word8
-#elif SIZEOF_WCHAR_T == 2
-#define HTYPE_WCHAR_T 			Word16
-#else
-#define HTYPE_WCHAR_T 			Word32
-#endif
-
-
-
-/* Define to Haskell type for char */
-#define HTYPE_CHAR Int8
-
-/* Define to Haskell type for double */
-#define HTYPE_DOUBLE Double
-
-/* Define to Haskell type for float */
-#define HTYPE_FLOAT Float
-
-/* Define to Haskell type for intmax_t */
-#define HTYPE_INTMAX_T Int64
-
-/* Define to Haskell type for long long */
-#define HTYPE_LONG_LONG Int64
-
-/* Define to Haskell type for short */
-#define HTYPE_SHORT Int16
-
-/* Define to Haskell type for signed char */
-#define HTYPE_SIGNED_CHAR Int8
-
-/* Define to Haskell type for uintmax_t */
-#define HTYPE_UINTMAX_T Word64
-
-/* Define to Haskell type for unsigned char */
-#define HTYPE_UNSIGNED_CHAR Word8
-
-/* Define to Haskell type for unsigned long long */
-#define HTYPE_UNSIGNED_LONG_LONG Word64
-
-/* Define to Haskell type for unsigned short */
-#define HTYPE_UNSIGNED_SHORT Word16
-
-
-
-/********************************************************************/
-/**** System tupes                                               ****/
-/********************************************************************/
-
-#ifdef SIZEOF_DEV_T
-# if SIZEOF_DEV_T == 8
-#  define HTYPE_DEV_T 			Word64
-# elif SIZEOF_DEV_T == 4
-#  define HTYPE_DEV_T 			Word32
-# elif SIZEOF_DEV_T == 2
-#  define HTYPE_DEV_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_INO_T
-# if SIZEOF_INO_T == 8
-#  define HTYPE_INO_T 			Word64
-# elif SIZEOF_INO_T == 4
-#  define HTYPE_INO_T 			Word32
-# elif SIZEOF_INO_T == 2
-#  define HTYPE_INO_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_MODE_T
-# if SIZEOF_MODE_T == 8
-#  define HTYPE_MODE_T 			Word64
-# elif SIZEOF_MODE_T == 4
-#  define HTYPE_MODE_T 			Word32
-# elif SIZEOF_MODE_T == 2
-#  define HTYPE_MODE_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_OFF_T
-# if SIZEOF_OFF_T == 8
-#  define HTYPE_OFF_T 			Word64
-# elif SIZEOF_OFF_T == 4
-#  define HTYPE_OFF_T 			Word32
-# elif SIZEOF_OFF_T == 2
-#  define HTYPE_OFF_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_PID_T
-# if SIZEOF_PID_T == 8
-#  define HTYPE_PID_T 			Word64
-# elif SIZEOF_PID_T == 4
-#  define HTYPE_PID_T 			Word32
-# elif SIZEOF_PID_T == 2
-#  define HTYPE_PID_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_SSIZE_T
-# if SIZEOF_SSIZE_T == 8
-#  define HTYPE_SSIZE_T 			Word64
-# elif SIZEOF_SSIZE_T == 4
-#  define HTYPE_SSIZE_T 			Word32
-# elif SIZEOF_SSIZE_T == 2
-#  define HTYPE_SSIZE_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_GID_T
-# if SIZEOF_GID_T == 8
-#  define HTYPE_GID_T 			Word64
-# elif SIZEOF_GID_T == 4
-#  define HTYPE_GID_T 			Word32
-# elif SIZEOF_GID_T == 2
-#  define HTYPE_GID_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_NLINK_T
-# if SIZEOF_NLINK_T == 8
-#  define HTYPE_NLINK_T 			Word64
-# elif SIZEOF_NLINK_T == 4
-#  define HTYPE_NLINK_T 			Word32
-# elif SIZEOF_NLINK_T == 2
-#  define HTYPE_NLINK_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_UID_T
-# if SIZEOF_UID_T == 8
-#  define HTYPE_UID_T 			Word64
-# elif SIZEOF_UID_T == 4
-#  define HTYPE_UID_T 			Word32
-# elif SIZEOF_UID_T == 2
-#  define HTYPE_UID_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_CC_T
-# if SIZEOF_CC_T == 8
-#  define HTYPE_CC_T 			Word64
-# elif SIZEOF_CC_T == 4
-#  define HTYPE_CC_T 			Word32
-# elif SIZEOF_CC_T == 2
-#  define HTYPE_CC_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_SPEED_T
-# if SIZEOF_SPEED_T == 8
-#  define HTYPE_SPEED_T 			Word64
-# elif SIZEOF_SPEED_T == 4
-#  define HTYPE_SPEED_T 			Word32
-# elif SIZEOF_SPEED_T == 2
-#  define HTYPE_SPEED_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_TCFLAG_T
-# if SIZEOF_TCFLAG_T == 8
-#  define HTYPE_TCFLAG_T 			Word64
-# elif SIZEOF_TCFLAG_T == 4
-#  define HTYPE_TCFLAG_T 			Word32
-# elif SIZEOF_TCFLAG_T == 2
-#  define HTYPE_TCFLAG_T 			Word16
-# else
-# endif
-#endif
-
-#ifdef SIZEOF_RLIM_T
-# if SIZEOF_RLIM_T == 8
-#  define HTYPE_RLIM_T 			Word64
-# elif SIZEOF_RLIM_T == 4
-#  define HTYPE_RLIM_T 			Word32
-# elif SIZEOF_RLIM_T == 2
-#  define HTYPE_RLIM_T 			Word16
-# else
-# endif
-#endif
-
-/********************************************************************/
-/**** Presence of include files                                  ****/
-/********************************************************************/
-
-#define HAVE_DIRENT_H 1
-#define HAVE_ERRNO_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_SIGNAL_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STRING_H 1
-#define HAVE_SYS_RESOURCE_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_SYSCALL_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMEB_H 1
-/* #undef HAVE_SYS_TIMERS_H */
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_UTSNAME_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_TERMIOS_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_UTIME_H 1
-/* #undef HAVE_VFORK_H */
-#define HAVE_WCTYPE_H 1
-/* #undef HAVE_WINDOWS_H */
-/* #undef HAVE_WINSOCK_H */
-
-/* #undef HAVE__CHSIZE */
-#define HAVE_FTRUNCATE 1
-/* #undef HAVE_GETCLOCK */
-#define HAVE_GETRUSAGE 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_LSTAT 1
-#define HAVE_READDIR_R 1
-
-/********************************************************************/
-/**** Runtime types                                              ****/
-/********************************************************************/
-
-#ifdef __UHC_BUILDS_O__
-
-#if defined(__UHC_TARGET_BC__) || defined(__UHC_TARGET_C__)
-// # define HsBool				Word
-// # define HsInt				Word
-// # define HsWord64			Word64
-// # define HsWord32			Word32
-// # define HsWord16			Word16
-// # define HsWord8			Word8
-// # ifdef __UHC_TARGET_BC__
-// #  define HS_BOOL_FALSE		gb_False
-// #  define HS_BOOL_TRUE		gb_True
-// # else
-// #  define HS_BOOL_FALSE		0
-// #  define HS_BOOL_TRUE		1
-// # endif
-#endif /* __UHC_TARGET_BC__ */
-
-#endif /* __UHC_BUILDS_O__ */
-
-/********************************************************************/
-/**** Read dir EOF error                                         ****/
-/********************************************************************/
-
-/* See remarks in GHC, libraries/base/aclocal.m4: MinGW platform returns non 0 value. We ignore that */
-#define	READDIR_ERRNO_EOF	0
-
-/********************************************************************/
-/**** C errors                                                   ****/
-/********************************************************************/
-
-/* (1) Assume errno.h is already included */
-/* (2) Error codes like EADV are not present on all platforms, so a dummy value is provided, this should be done for all codes */
-
-/* The value of E2BIG. */
-#if !defined(E2BIG)
-#define E2BIG 10000
-#endif
-#define CONST_E2BIG E2BIG
-
-/* The value of EACCES. */
-#if !defined(EACCES)
-#define EACCES 10000
-#endif
-#define CONST_EACCES EACCES
-
-/* The value of EADDRINUSE. */
-#if !defined(EADDRINUSE)
-#define EADDRINUSE 10000
-#endif
-#define CONST_EADDRINUSE EADDRINUSE
-
-/* The value of EADDRNOTAVAIL. */
-#define CONST_EADDRNOTAVAIL EADDRNOTAVAIL
-
-/* The value of EADV. */
-#if !defined(EADV)
-#define EADV 10000
-#endif
-#define CONST_EADV EADV
-
-/* The value of EAFNOSUPPORT. */
-#if !defined(EAFNOSUPPORT)
-#define EAFNOSUPPORT 10000
-#endif
-#define CONST_EAFNOSUPPORT EAFNOSUPPORT
-
-/* The value of EAGAIN. */
-#if !defined(EAGAIN)
-#define EAGAIN 10000
-#endif
-#define CONST_EAGAIN EAGAIN
-
-/* The value of EALREADY. */
-#if !defined(EALREADY)
-#define EALREADY 10000
-#endif
-#define CONST_EALREADY EALREADY
-
-/* The value of EBADF. */
-#if !defined(EBADF)
-#define EBADF 10000
-#endif
-#define CONST_EBADF EBADF
-
-/* The value of EBADMSG. */
-#if !defined(EBADMSG)
-#define EBADMSG 10000
-#endif
-#define CONST_EBADMSG EBADMSG
-
-/* The value of EBADRPC. */
-#if !defined(EBADRPC)
-#define EBADRPC 10000
-#endif
-#define CONST_EBADRPC EBADRPC
-
-/* The value of EBUSY. */
-#if !defined(EBUSY)
-#define EBUSY 10000
-#endif
-#define CONST_EBUSY EBUSY
-
-/* The value of ECHILD. */
-#if !defined(ECHILD)
-#define ECHILD 10000
-#endif
-#define CONST_ECHILD ECHILD
-
-/* The value of ECOMM. */
-#if !defined(ECOMM)
-#define ECOMM 10000
-#endif
-#define CONST_ECOMM ECOMM
-
-/* The value of ECONNABORTED. */
-#if !defined(ECONNABORTED)
-#define ECONNABORTED 10000
-#endif
-#define CONST_ECONNABORTED ECONNABORTED
-
-/* The value of ECONNREFUSED. */
-#if !defined(ECONNREFUSED)
-#define ECONNREFUSED 10000
-#endif
-#define CONST_ECONNREFUSED ECONNREFUSED
-
-/* The value of ECONNRESET. */
-#if !defined(ECONNRESET)
-#define ECONNRESET 10000
-#endif
-#define CONST_ECONNRESET ECONNRESET
-
-/* The value of EDEADLK. */
-#if !defined(EDEADLK)
-#define EDEADLK 10000
-#endif
-#define CONST_EDEADLK EDEADLK
-
-/* The value of EDESTADDRREQ. */
-#if !defined(EDESTADDRREQ)
-#define EDESTADDRREQ 10000
-#endif
-#define CONST_EDESTADDRREQ EDESTADDRREQ
-
-/* The value of EDIRTY. */
-#if !defined(EDIRTY)
-#define EDIRTY 10000
-#endif
-#define CONST_EDIRTY EDIRTY
-
-/* The value of EDOM. */
-#if !defined(EDOM)
-#define EDOM 10000
-#endif
-#define CONST_EDOM EDOM
-
-/* The value of EDQUOT. */
-#if !defined(EDQUOT)
-#define EDQUOT 10000
-#endif
-#define CONST_EDQUOT EDQUOT
-
-/* The value of EEXIST. */
-#if !defined(EEXIST)
-#define EEXIST 10000
-#endif
-#define CONST_EEXIST EEXIST
-
-/* The value of EFAULT. */
-#if !defined(EFAULT)
-#define EFAULT 10000
-#endif
-#define CONST_EFAULT EFAULT
-
-/* The value of EFBIG. */
-#if !defined(EFBIG)
-#define EFBIG 10000
-#endif
-#define CONST_EFBIG EFBIG
-
-/* The value of EFTYPE. */
-#if !defined(EFTYPE)
-#define EFTYPE 10000
-#endif
-#define CONST_EFTYPE EFTYPE
-
-/* The value of EHOSTDOWN. */
-#if !defined(EHOSTDOWN)
-#define EHOSTDOWN 10000
-#endif
-#define CONST_EHOSTDOWN EHOSTDOWN
-
-/* The value of EHOSTUNREACH. */
-#if !defined(EHOSTUNREACH)
-#define EHOSTUNREACH 10000
-#endif
-#define CONST_EHOSTUNREACH EHOSTUNREACH
-
-/* The value of EIDRM. */
-#if !defined(EIDRM)
-#define EIDRM 10000
-#endif
-#define CONST_EIDRM EIDRM
-
-/* The value of EILSEQ. */
-#if !defined(EILSEQ)
-#define EILSEQ 10000
-#endif
-#define CONST_EILSEQ EILSEQ
-
-/* The value of EINPROGRESS. */
-#if !defined(EINPROGRESS)
-#define EINPROGRESS 10000
-#endif
-#define CONST_EINPROGRESS EINPROGRESS
-
-/* The value of EINTR. */
-#if !defined(EINTR)
-#define EINTR 10000
-#endif
-#define CONST_EINTR EINTR
-
-/* The value of EINVAL. */
-#if !defined(EINVAL)
-#define EINVAL 10000
-#endif
-#define CONST_EINVAL EINVAL
-
-/* The value of EIO. */
-#if !defined(EIO)
-#define EIO 10000
-#endif
-#define CONST_EIO EIO
-
-/* The value of EISCONN. */
-#if !defined(EISCONN)
-#define EISCONN 10000
-#endif
-#define CONST_EISCONN EISCONN
-
-/* The value of EISDIR. */
-#if !defined(EISDIR)
-#define EISDIR 10000
-#endif
-#define CONST_EISDIR EISDIR
-
-/* The value of ELOOP. */
-#if !defined(ELOOP)
-#define ELOOP 10000
-#endif
-#define CONST_ELOOP ELOOP
-
-/* The value of EMFILE. */
-#if !defined(EMFILE)
-#define EMFILE 10000
-#endif
-#define CONST_EMFILE EMFILE
-
-/* The value of EMLINK. */
-#if !defined(EMLINK)
-#define EMLINK 10000
-#endif
-#define CONST_EMLINK EMLINK
-
-/* The value of EMSGSIZE. */
-#if !defined(EMSGSIZE)
-#define EMSGSIZE 10000
-#endif
-#define CONST_EMSGSIZE EMSGSIZE
-
-/* The value of EMULTIHOP. */
-#if !defined(EMULTIHOP)
-#define EMULTIHOP 10000
-#endif
-#define CONST_EMULTIHOP EMULTIHOP
-
-/* The value of ENAMETOOLONG. */
-#if !defined(ENAMETOOLONG)
-#define ENAMETOOLONG 10000
-#endif
-#define CONST_ENAMETOOLONG ENAMETOOLONG
-
-/* The value of ENETDOWN. */
-#if !defined(ENETDOWN)
-#define ENETDOWN 10000
-#endif
-#define CONST_ENETDOWN ENETDOWN
-
-/* The value of ENETRESET. */
-#if !defined(ENETRESET)
-#define ENETRESET 10000
-#endif
-#define CONST_ENETRESET ENETRESET
-
-/* The value of ENETUNREACH. */
-#if !defined(ENETUNREACH)
-#define ENETUNREACH 10000
-#endif
-#define CONST_ENETUNREACH ENETUNREACH
-
-/* The value of ENFILE. */
-#if !defined(ENFILE)
-#define ENFILE 10000
-#endif
-#define CONST_ENFILE ENFILE
-
-/* The value of ENOBUFS. */
-#if !defined(ENOBUFS)
-#define ENOBUFS 10000
-#endif
-#define CONST_ENOBUFS ENOBUFS
-
-/* The value of ENOCIGAR. */
-#if !defined(ENOCIGAR)
-#define ENOCIGAR 10000
-#endif
-#define CONST_ENOCIGAR ENOCIGAR
-
-/* The value of ENODATA. */
-#if !defined(ENODATA)
-#define ENODATA 10000
-#endif
-#define CONST_ENODATA ENODATA
-
-/* The value of ENODEV. */
-#if !defined(ENODEV)
-#define ENODEV 10000
-#endif
-#define CONST_ENODEV ENODEV
-
-/* The value of ENOENT. */
-#if !defined(ENOENT)
-#define ENOENT 10000
-#endif
-#define CONST_ENOENT ENOENT
-
-/* The value of ENOEXEC. */
-#if !defined(ENOEXEC)
-#define ENOEXEC 10000
-#endif
-#define CONST_ENOEXEC ENOEXEC
-
-/* The value of ENOLCK. */
-#if !defined(ENOLCK)
-#define ENOLCK 10000
-#endif
-#define CONST_ENOLCK ENOLCK
-
-/* The value of ENOLINK. */
-#if !defined(ENOLINK)
-#define ENOLINK 10000
-#endif
-#define CONST_ENOLINK ENOLINK
-
-/* The value of ENOMEM. */
-#if !defined(ENOMEM)
-#define ENOMEM 10000
-#endif
-#define CONST_ENOMEM ENOMEM
-
-/* The value of ENOMSG. */
-#if !defined(ENOMSG)
-#define ENOMSG 10000
-#endif
-#define CONST_ENOMSG ENOMSG
-
-/* The value of ENONET. */
-#if !defined(ENONET)
-#define ENONET 10000
-#endif
-#define CONST_ENONET ENONET
-
-/* The value of ENOPROTOOPT. */
-#if !defined(ENOPROTOOPT)
-#define ENOPROTOOPT 10000
-#endif
-#define CONST_ENOPROTOOPT ENOPROTOOPT
-
-/* The value of ENOSPC. */
-#if !defined(ENOSPC)
-#define ENOSPC 10000
-#endif
-#define CONST_ENOSPC ENOSPC
-
-/* The value of ENOSR. */
-#if !defined(ENOSR)
-#define ENOSR 10000
-#endif
-#define CONST_ENOSR ENOSR
-
-/* The value of ENOSTR. */
-#if !defined(ENOSTR)
-#define ENOSTR 10000
-#endif
-#define CONST_ENOSTR ENOSTR
-
-/* The value of ENOSYS. */
-#if !defined(ENOSYS)
-#define ENOSYS 10000
-#endif
-#define CONST_ENOSYS ENOSYS
-
-/* The value of ENOTBLK. */
-#if !defined(ENOTBLK)
-#define ENOTBLK 10000
-#endif
-#define CONST_ENOTBLK ENOTBLK
-
-/* The value of ENOTCONN. */
-#if !defined(ENOTCONN)
-#define ENOTCONN 10000
-#endif
-#define CONST_ENOTCONN ENOTCONN
-
-/* The value of ENOTDIR. */
-#if !defined(ENOTDIR)
-#define ENOTDIR 10000
-#endif
-#define CONST_ENOTDIR ENOTDIR
-
-/* The value of ENOTEMPTY. */
-#if !defined(ENOTEMPTY)
-#define ENOTEMPTY 10000
-#endif
-#define CONST_ENOTEMPTY ENOTEMPTY
-
-/* The value of ENOTSOCK. */
-#if !defined(ENOTSOCK)
-#define ENOTSOCK 10000
-#endif
-#define CONST_ENOTSOCK ENOTSOCK
-
-/* The value of ENOTTY. */
-#if !defined(ENOTTY)
-#define ENOTTY 10000
-#endif
-#define CONST_ENOTTY ENOTTY
-
-/* The value of ENXIO. */
-#if !defined(ENXIO)
-#define ENXIO 10000
-#endif
-#define CONST_ENXIO ENXIO
-
-/* The value of EOPNOTSUPP. */
-#if !defined(EOPNOTSUPP)
-#define EOPNOTSUPP 10000
-#endif
-#define CONST_EOPNOTSUPP EOPNOTSUPP
-
-/* The value of EPERM. */
-#if !defined(EPERM)
-#define EPERM 10000
-#endif
-#define CONST_EPERM EPERM
-
-/* The value of EPFNOSUPPORT. */
-#if !defined(EPFNOSUPPORT)
-#define EPFNOSUPPORT 10000
-#endif
-#define CONST_EPFNOSUPPORT EPFNOSUPPORT
-
-/* The value of EPIPE. */
-#if !defined(EPIPE)
-#define EPIPE 10000
-#endif
-#define CONST_EPIPE EPIPE
-
-/* The value of EPROCLIM. */
-#if !defined(EPROCLIM)
-#define EPROCLIM 10000
-#endif
-#define CONST_EPROCLIM EPROCLIM
-
-/* The value of EPROCUNAVAIL. */
-#if !defined(EPROCUNAVAIL)
-#define EPROCUNAVAIL 10000
-#endif
-#define CONST_EPROCUNAVAIL EPROCUNAVAIL
-
-/* The value of EPROGMISMATCH. */
-#if !defined(EPROGMISMATCH)
-#define EPROGMISMATCH 10000
-#endif
-#define CONST_EPROGMISMATCH EPROGMISMATCH
-
-/* The value of EPROGUNAVAIL. */
-#if !defined(EPROGUNAVAIL)
-#define EPROGUNAVAIL 10000
-#endif
-#define CONST_EPROGUNAVAIL EPROGUNAVAIL
-
-/* The value of EPROTO. */
-#if !defined(EPROTO)
-#define EPROTO 10000
-#endif
-#define CONST_EPROTO EPROTO
-
-/* The value of EPROTONOSUPPORT. */
-#if !defined(EPROTONOSUPPORT)
-#define EPROTONOSUPPORT 10000
-#endif
-#define CONST_EPROTONOSUPPORT EPROTONOSUPPORT
-
-/* The value of EPROTOTYPE. */
-#if !defined(EPROTOTYPE)
-#define EPROTOTYPE 10000
-#endif
-#define CONST_EPROTOTYPE EPROTOTYPE
-
-/* The value of ERANGE. */
-#if !defined(ERANGE)
-#define ERANGE 10000
-#endif
-#define CONST_ERANGE ERANGE
-
-/* The value of EREMCHG. */
-#if !defined(EREMCHG)
-#define EREMCHG 10000
-#endif
-#define CONST_EREMCHG EREMCHG
-
-/* The value of EREMOTE. */
-#if !defined(EREMOTE)
-#define EREMOTE 10000
-#endif
-#define CONST_EREMOTE EREMOTE
-
-/* The value of EROFS. */
-#if !defined(EROFS)
-#define EROFS 10000
-#endif
-#define CONST_EROFS EROFS
-
-/* The value of ERPCMISMATCH. */
-#if !defined(ERPCMISMATCH)
-#define ERPCMISMATCH 10000
-#endif
-#define CONST_ERPCMISMATCH ERPCMISMATCH
-
-/* The value of ERREMOTE. */
-#if !defined(ERREMOTE)
-#define ERREMOTE 10000
-#endif
-#define CONST_ERREMOTE ERREMOTE
-
-/* The value of ESHUTDOWN. */
-#if !defined(ESHUTDOWN)
-#define ESHUTDOWN 10000
-#endif
-#define CONST_ESHUTDOWN ESHUTDOWN
-
-/* The value of ESOCKTNOSUPPORT. */
-#if !defined(ESOCKTNOSUPPORT)
-#define ESOCKTNOSUPPORT 10000
-#endif
-#define CONST_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
-
-/* The value of ESPIPE. */
-#if !defined(ESPIPE)
-#define ESPIPE 10000
-#endif
-#define CONST_ESPIPE ESPIPE
-
-/* The value of ESRCH. */
-#if !defined(ESRCH)
-#define ESRCH 10000
-#endif
-#define CONST_ESRCH ESRCH
-
-/* The value of ESRMNT. */
-#if !defined(ESRMNT)
-#define ESRMNT 10000
-#endif
-#define CONST_ESRMNT ESRMNT
-
-/* The value of ESTALE. */
-#if !defined(ESTALE)
-#define ESTALE 10000
-#endif
-#define CONST_ESTALE ESTALE
-
-/* The value of ETIME. */
-#if !defined(ETIME)
-#define ETIME 10000
-#endif
-#define CONST_ETIME ETIME
-
-/* The value of ETIMEDOUT. */
-#if !defined(ETIMEDOUT)
-#define ETIMEDOUT 10000
-#endif
-#define CONST_ETIMEDOUT ETIMEDOUT
-
-/* The value of ETOOMANYREFS. */
-#if !defined(ETOOMANYREFS)
-#define ETOOMANYREFS 10000
-#endif
-#define CONST_ETOOMANYREFS ETOOMANYREFS
-
-/* The value of ETXTBSY. */
-#if !defined(ETXTBSY)
-#define ETXTBSY 10000
-#endif
-#define CONST_ETXTBSY ETXTBSY
-
-/* The value of EUSERS. */
-#if !defined(EUSERS)
-#define EUSERS 10000
-#endif
-#define CONST_EUSERS EUSERS
-
-/* The value of EWOULDBLOCK. */
-#if !defined(EWOULDBLOCK)
-#define EWOULDBLOCK 10000
-#endif
-#define CONST_EWOULDBLOCK EWOULDBLOCK
-
-/* The value of EXDEV. */
-#if !defined(EXDEV)
-#define EXDEV 10000
-#endif
-#define CONST_EXDEV EXDEV
-
-/* The value of O_BINARY. */
-#if !defined(O_BINARY)
-#define O_BINARY 10000
-#endif
-#define CONST_O_BINARY O_BINARY
-
-/* The value of SIGINT. */
-#if !defined(SIGINT)
-#define SIGINT 10000
-#endif
-#define CONST_SIGINT SIGINT
-
-
-#endif
-
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/IntLikeInstance.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/IntLikeInstance.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/IntLikeInstance.h
+++ /dev/null
@@ -1,242 +0,0 @@
-{- --------------------------------------------------------------------------
-// Macros to help make various instances for Int like types (Int8, ...).
-//
-// Primitives are defined by 2 forms of macros:
-//  - starting with PRIMS_  : name of Haskell function and primitive is the same
-//  - starting with PRIMS2_ : name of primitive is given explicitly, to allow sharing between primitives
-// --------------------------------------------------------------------------
--}
-
--- define conversion primitives
-#define PRIMS_CONVERSION_INTEGER(tycon,primIntegerTo,primToInteger) \
-foreign import prim primIntegerTo :: Integer -> tycon ; \
-foreign import prim primToInteger :: tycon -> Integer 
-
-#define PRIMS2_CONVERSION_INTEGER(tycon,primIntegerTo,primIntegerToNm,primToInteger,primToIntegerNm) \
-foreign import prim primIntegerToNm primIntegerTo :: Integer -> tycon ; \
-foreign import prim primToIntegerNm primToInteger :: tycon -> Integer 
-
-#define PRIMS_CONVERSION_INT(tycon,primIntTo,primToInt) \
-foreign import prim primIntTo     :: Int -> tycon ; \
-foreign import prim primToInt     :: tycon -> Int 
-
-
--- define Eq primitives
-#define PRIMS_EQ(tycon,primEq,primNe) \
-foreign import prim primEq      :: tycon -> tycon -> Bool ; \
-foreign import prim primNe      :: tycon -> tycon -> Bool 
-
-#define PRIMS2_EQ(tycon,primEq,primEqNm,primNe,primNeNm) \
-foreign import prim primEqNm primEq     :: tycon -> tycon -> Bool ; \
-foreign import prim primNeNm primNe     :: tycon -> tycon -> Bool
-
-
--- define Eq instance
-#define INSTANCE_EQ(tycon,primEq,primNe) \
-instance Eq tycon where \
-  { (==) = primEq ; \
-  	(/=) = primNe \
-  }
-
-
--- define Ord primitives
-
-#define PRIMS_ORD(tycon,primCmp,primLt,primGt,primLe,primGe) \
-foreign import prim primCmp     :: tycon -> tycon -> Ordering ; \
-foreign import prim primLt      :: tycon -> tycon -> Bool ; \
-foreign import prim primGt      :: tycon -> tycon -> Bool ; \
-foreign import prim primLe      :: tycon -> tycon -> Bool ; \
-foreign import prim primGe      :: tycon -> tycon -> Bool 
-
-#define PRIMS2_ORD(tycon,primCmp,primCmpNm,primLt,primLtNm,primGt,primGtNm,primLe,primLeNm,primGe,primGeNm) \
-foreign import prim primCmpNm primCmp     :: tycon -> tycon -> Ordering ; \
-foreign import prim primLtNm primLt      :: tycon -> tycon -> Bool ; \
-foreign import prim primGtNm primGt      :: tycon -> tycon -> Bool ; \
-foreign import prim primLeNm primLe      :: tycon -> tycon -> Bool ; \
-foreign import prim primGeNm primGe      :: tycon -> tycon -> Bool 
-
-
--- define Ord instance
-
-#define INSTANCE_ORD(tycon,primCmp,primLt,primGt,primLe,primGe) \
-instance Ord tycon where \
-  { compare = primCmp \
-  ; (<) = primLt \
-  ; (>) = primGt \
-  ; (<=) = primLe \
-  ; (>=) = primGe \
-  }
-
-
--- define Bounded primitives
-#define PRIMS_BOUNDED(tycon,primMin,primMax) \
-foreign import prim primMin     :: tycon ; \
-foreign import prim primMax     :: tycon 
-
-
--- define Bounded instance
-#define INSTANCE_BOUNDED(tycon,primMin,primMax) \
-instance Bounded tycon where \
-  { minBound = primMin \
-  ; maxBound = primMax \
-  }
-
-
--- define Num primitives
-#define PRIMS_NUM(tycon,primAdd,primSub,primMul,primNeg) \
-foreign import prim primAdd       :: tycon -> tycon -> tycon ; \
-foreign import prim primSub       :: tycon -> tycon -> tycon ; \
-foreign import prim primMul       :: tycon -> tycon -> tycon ; \
-foreign import prim primNeg       :: tycon -> tycon 
-
-#define PRIMS2_NUM(tycon,primAdd,primAddNm,primSub,primSubNm,primMul,primMulNm,primNeg,primNegNm) \
-foreign import prim primAddNm 			primAdd       :: tycon -> tycon -> tycon ; \
-foreign import prim primSubNm 			primSub       :: tycon -> tycon -> tycon ; \
-foreign import prim primMulNm 			primMul       :: tycon -> tycon -> tycon ; \
-foreign import prim primNegNm 			primNeg       :: tycon -> tycon 
-
-
--- define Num instance
-#define INSTANCE_NUM(tycon,primAdd,primSub,primMul,primNeg,primIntegerTo,primIntTo) \
-instance Num tycon where \
-  { (+)         = primAdd \
-  ; (-)         = primSub \
-  ; (*)         = primMul \
-  ; negate      = primNeg \
-  ; fromInteger = primIntegerTo \
-  ; fromInt     = primIntTo \
-  ; abs         = absReal \
-  ; signum      = signumReal \
-  }
-
-
--- define Enum instance
-#define INSTANCE_ENUM(tycon,primToEnum,primFromEnum) \
-instance Enum tycon where \
-  { succ           = boundedSucc \
-  ; pred           = boundedPred \
-  ; toEnum         = primToEnum \
-  ; fromEnum       = primFromEnum \
-  ; enumFrom       = boundedEnumFrom \
-  ; enumFromTo     = boundedEnumFromTo \
-  ; enumFromThen   = boundedEnumFromThen \
-  ; enumFromThenTo = boundedEnumFromThenTo \
-  }
-
-
--- define Real instance
-#define INSTANCE_REAL(tycon) \
-instance Real tycon where \
-  { toRational x = toInteger x % 1 \
-  }
-
-
--- define Integral primitives
-#define PRIMS_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem) \
-foreign import prim primDiv       :: tycon -> tycon -> tycon ; \
-foreign import prim primMod       :: tycon -> tycon -> tycon ; \
-foreign import prim primQuot      :: tycon -> tycon -> tycon ; \
-foreign import prim primRem       :: tycon -> tycon -> tycon 
-
-#define PRIMS2_INTEGRAL1(tycon,primDiv,primDivNm,primMod,primModNm,primQuot,primQuotNm,primRem,primRemNm) \
-foreign import prim primDivNm 			primDiv       :: tycon -> tycon -> tycon ; \
-foreign import prim primModNm 			primMod       :: tycon -> tycon -> tycon ; \
-foreign import prim primQuotNm 			primQuot      :: tycon -> tycon -> tycon ; \
-foreign import prim primRemNm 			primRem       :: tycon -> tycon -> tycon 
-
-#define PRIMS_INTEGRAL2(tycon,primDiv,primMod,primDivMod,primQuot,primRem,primQuotRem) \
-PRIMS_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem) ; \
-foreign import prim primDivMod    :: tycon -> tycon -> (tycon,tycon) ; \
-foreign import prim primQuotRem   :: tycon -> tycon -> (tycon,tycon) 
-
-#define PRIMS2_INTEGRAL2(tycon,primDiv,primDivNm,primMod,primModNm,primDivMod,primDivModNm,primQuot,primQuotNm,primRem,primRemNm,primQuotRem,primQuotRemNm) \
-PRIMS2_INTEGRAL1(tycon,primDiv,primDivNm,primMod,primModNm,primQuot,primQuotNm,primRem,primQuotRemNm) ; \
-foreign import prim primDivModNm 	primDivMod    :: tycon -> tycon -> (tycon,tycon) ; \
-foreign import prim primQuotRemNm 	primQuotRem   :: tycon -> tycon -> (tycon,tycon) 
-
-
--- define Integral instance, assume default for divMod
-#define INSTANCE_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem,primToInteger,primToInt) \
-instance Integral tycon where \
-  { quotRem d m \
-              = (primQuot d m, primRem d m) \
-  ; div       = primDiv \
-  ; quot      = primQuot \
-  ; rem       = primRem \
-  ; mod       = primMod \
-  ; toInteger = primToInteger \
-  ; toInt     = primToInt \
-  }
-
-#define INSTANCE_INTEGRAL2(tycon,primDiv,primMod,primDivMod,primQuot,primRem,primQuotRem,primToInteger,primToInt) \
-instance Integral tycon where \
-  { divMod    = primDivMod \
-  ; quotRem   = primQuotRem \
-  ; div       = primDiv \
-  ; quot      = primQuot \
-  ; rem       = primRem \
-  ; mod       = primMod \
-  ; toInteger = primToInteger \
-  ; toInt     = primToInt \
-  }
-
-
--- define Show instance
-#define INSTANCE_SHOW(tycon) \
-instance Show tycon where \
-  { show = show . toInteger \
-  }
-
-
--- define Read instance
-#define INSTANCE_READ(tycon) \
-instance Read tycon where \
-  { readsPrec p = readSigned readDec \
-  }
-
-
--- define Bits primitives
-#define PRIMS_BITLOGIC(tycon,primAnd,primOr,primXor) \
-foreign import prim primAnd       	:: tycon -> tycon -> tycon ; \
-foreign import prim primOr       	:: tycon -> tycon -> tycon ; \
-foreign import prim primXor      	:: tycon -> tycon -> tycon
-
-#define PRIMS_BITSHIFT(tycon,primComplement,primShiftLeft,primShiftRight,primRotateLeft,primRotateRight) \
-foreign import prim primComplement	:: tycon -> tycon ; \
-foreign import prim primShiftLeft  	:: tycon -> Int -> tycon ; \
-foreign import prim primShiftRight 	:: tycon -> Int -> tycon ; \
-foreign import prim primRotateLeft  :: tycon -> Int -> tycon ; \
-foreign import prim primRotateRight :: tycon -> Int -> tycon
-
-#define PRIMS2_BITLOGIC(tycon,primAnd,primAndNm,primOr,primOrNm,primXor,primXorNm) \
-foreign import prim primAndNm       	primAnd       	:: tycon -> tycon -> tycon ; \
-foreign import prim primOrNm       		primOr       	:: tycon -> tycon -> tycon ; \
-foreign import prim primXorNm      		primXor      	:: tycon -> tycon -> tycon
-
-#define PRIMS2_BITSHIFT(tycon,primComplement,primComplementNm,primShiftLeft,primShiftLeftNm,primShiftRight,primShiftRightNm,primRotateLeft,primRotateLeftNm,primRotateRight,primRotateRightNm) \
-foreign import prim primComplementNm	primComplement	:: tycon -> tycon ; \
-foreign import prim primShiftLeftNm  	primShiftLeft  	:: tycon -> Int -> tycon ; \
-foreign import prim primShiftRightNm 	primShiftRight 	:: tycon -> Int -> tycon ; \
-foreign import prim primRotateLeftNm  	primRotateLeft  :: tycon -> Int -> tycon ; \
-foreign import prim primRotateRightNm 	primRotateRight :: tycon -> Int -> tycon
-
--- define Bits instance
-#define INSTANCE_BITS1(tycon,size,signed,primAnd,primOr,primXor,primComplement,primShiftLeft,primShiftRight,primRotateLeft,primRotateRight) \
-instance Bits tycon where \
-  { (.&.)   	= primAnd \
-  ; (.|.)   	= primOr \
-  ; xor	   		= primXor \
-  ; complement  = primComplement \
-  ; shiftL      = primShiftLeft \
-  ; shiftR      = primShiftRight \
-  ; rotateL     = primRotateLeft \
-  ; rotateR     = primRotateRight \
-  ; bitSize _   = size \
-  ; isSigned _  = signed \
-  }
-
-
-
-
-
-
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/MachDeps.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/MachDeps.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/MachDeps.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* ehclib/uhcbase/include/MachDeps.h.  Generated from MachDeps.h.in by configure.  */
-#ifndef MACHDEPS_H
-#define MACHDEPS_H
-
-#define SIZEOF_INTPTR_T 8
-#define SIZEOF_CHAR 1
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#define SIZEOF_LONG 8
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_UNSIGNED_CHAR 1
-#define SIZEOF_UNSIGNED_SHORT 2
-#define SIZEOF_UNSIGNED_INT 4
-#define SIZEOF_UNSIGNED_LONG 8
-#define SIZEOF_UNSIGNED_LONG_LONG 8
-#define SIZEOF_VOID_P 8
-
-#define SIZEOF_DEV_T 4
-#define SIZEOF_INO_T 8
-#define SIZEOF_OFF_T 8
-#define SIZEOF_MODE_T 2
-#define SIZEOF_PID_T 4
-#define SIZEOF_SSIZE_T 8
-#define SIZEOF_GID_T 4
-#define SIZEOF_NLINK_T 2
-#define SIZEOF_UID_T 4
-#define SIZEOF_RLIM_T 8
-#define SIZEOF_CLOCK_T 8
-#define SIZEOF_TIME_T 8
-#define SIZEOF_SIZE_T 8
-#define SIZEOF_WCHAR_T 4
-
-#define SIZEOF_CC_T 1
-#define SIZEOF_SPEED_T 8
-#define SIZEOF_TCFLAG_T 8
-
-#define ALIGNOF_INTPTR_T 8
-#define ALIGNOF_CHAR 1
-#define ALIGNOF_SHORT 2
-#define ALIGNOF_INT 4
-#define ALIGNOF_LONG 8
-#define ALIGNOF_LONG_LONG 8
-#define ALIGNOF_FLOAT 4
-#define ALIGNOF_DOUBLE 8
-#define ALIGNOF_UNSIGNED_CHAR 1
-#define ALIGNOF_UNSIGNED_SHORT 2
-#define ALIGNOF_UNSIGNED_INT 4
-#define ALIGNOF_UNSIGNED_LONG 8
-#define ALIGNOF_UNSIGNED_LONG_LONG 8
-#define ALIGNOF_VOID_P 8
-
-#define ALIGNOF_UINT8_T 1
-#define ALIGNOF_UINT16_T 2
-#define ALIGNOF_UINT32_T 4
-#define ALIGNOF_UINT64_T 8
-
-#if SIZEOF_INTPTR_T == 8
-#define USE_64_BITS 1
-#define USE_32_BITS 0
-#else
-#define USE_64_BITS 0
-#define USE_32_BITS 1
-#endif
-
-#ifdef __UHC_TARGET_BC__
-#define BITSIZEOF_WORDTAG		1
-#else
-#define BITSIZEOF_WORDTAG		0
-#endif
-
-#define SIZEOF_HSCHAR           SIZEOF_INTPTR_T
-#define ALIGNMENT_HSCHAR        ALIGNOF_UINT32_T
-
-#define SIZEOF_HSINT            SIZEOF_INTPTR_T
-#define ALIGNMENT_HSINT         ALIGNOF_INTPTR_T
-
-#define SIZEOF_HSWORD			SIZEOF_INTPTR_T
-#define ALIGNMENT_HSWORD		ALIGNOF_INTPTR_T
-
-#define SIZEOF_HSDOUBLE			SIZEOF_DOUBLE
-#define ALIGNMENT_HSDOUBLE		ALIGNOF_DOUBLE
-
-#define SIZEOF_HSFLOAT			SIZEOF_FLOAT
-#define ALIGNMENT_HSFLOAT		ALIGNOF_FLOAT
-
-#define SIZEOF_HSPTR            SIZEOF_VOID_P
-#define ALIGNMENT_HSPTR         ALIGNOF_VOID_P
-
-#define SIZEOF_HSFUNPTR         SIZEOF_VOID_P
-#define ALIGNMENT_HSFUNPTR      ALIGNOF_VOID_P
-
-#define SIZEOF_HSFOREIGNPTR     SIZEOF_VOID_P
-#define ALIGNMENT_HSFOREIGNPTR  ALIGNOF_VOID_P
-
-#define SIZEOF_HSSTABLEPTR      SIZEOF_VOID_P
-#define ALIGNMENT_HSSTABLEPTR   ALIGNOF_VOID_P
-
-#define SIZEOF_INT8             8
-#define ALIGNMENT_INT8          ALIGNOF_UINT8_T
-
-#define SIZEOF_WORD8            8
-#define ALIGNMENT_WORD8         ALIGNOF_UINT8_T
-
-#define SIZEOF_INT16            16
-#define ALIGNMENT_INT16         ALIGNOF_UINT16_T
-
-#define SIZEOF_WORD16           16
-#define ALIGNMENT_WORD16        ALIGNOF_UINT16_T
-
-#define SIZEOF_INT32            32
-#define ALIGNMENT_INT32         ALIGNOF_UINT32_T
-
-#define SIZEOF_WORD32           32
-#define ALIGNMENT_WORD32        ALIGNOF_UINT32_T
-
-#define SIZEOF_INT64            64
-#define ALIGNMENT_INT64         ALIGNOF_UINT64_T
-
-#define SIZEOF_WORD64           64
-#define ALIGNMENT_WORD64        ALIGNOF_UINT64_T
-
-
-#endif
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/TupleInstance.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/TupleInstance.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/TupleInstance.h
+++ /dev/null
@@ -1,147 +0,0 @@
-{- --------------------------------------------------------------------------
-// Macros to help make various instances for tuples.
-// A kind of poor mans deriving.
-//
-// --------------------------------------------------------------------------
--}
-
-#define	COMMA	,
-
-{- --------------------------------------------------------------------------
-// 2 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE2_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b) => clscon (a,b) where \
-  { op1 op1preArg (a,b) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 3 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE3_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c) => clscon (a,b,c) where \
-  { op1 op1preArg (a,b,c) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        sep op1subop c \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 4 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE4_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d) => clscon (a,b,c,d) where \
-  { op1 op1preArg (a,b,c,d) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        sep op1subop c \
-        sep op1subop d \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 5 tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE5_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d, clscon e) => clscon (a,b,c,d,e) where \
-  { op1 op1preArg (a,b,c,d,e) op1postArg \
-      = pre \
-            op1subop a \
-        sep op1subop b \
-        sep op1subop c \
-        sep op1subop d \
-        sep op1subop e \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// Set of 2..n tuple, 1 unary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE_UNOP1_INSTANCES(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-{ TUPLE2_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
-  TUPLE3_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
-  TUPLE4_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
-  TUPLE5_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
-}
-
-{- --------------------------------------------------------------------------
-// 2 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE2_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b) => clscon (a,b) where \
-  { (a1,b1) op1 (a2,b2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 3 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE3_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c) => clscon (a,b,c) where \
-  { (a1,b1,c1) op1 (a2,b2,c2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        sep c1 op1subop c2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 4 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE4_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d) => clscon (a,b,c,d) where \
-  { (a1,b1,c1,d1) op1 (a2,b2,c2,d2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        sep c1 op1subop c2 \
-        sep d1 op1subop d2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// 5 tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE5_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-instance (clscon a, clscon b, clscon c, clscon d, clscon e) => clscon (a,b,c,d,e) where \
-  { (a1,b1,c1,d1,e1) op1 (a2,b2,c2,d2,e2) \
-      = pre \
-            a1 op1subop a2 \
-        sep b1 op1subop b2 \
-        sep c1 op1subop c2 \
-        sep d1 op1subop d2 \
-        sep e1 op1subop e2 \
-        post \
-  }
-
-{- --------------------------------------------------------------------------
-// Set of 2..n tuple, 1 binary op
-// --------------------------------------------------------------------------
--}
-#define TUPLE_BINOP1_INSTANCES(clscon,op1,op1subop,pre,sep,post) \
-{ TUPLE2_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
-  TUPLE3_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
-  TUPLE4_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
-  TUPLE5_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
-}
-
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/Typeable.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/Typeable.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/Typeable.h
+++ /dev/null
@@ -1,149 +0,0 @@
-{- --------------------------------------------------------------------------
-// Macros to help make Typeable instances.
-//
-// INSTANCE_TYPEABLEn(tc,tcname,"tc") defines
-//
-//	instance Typeable/n/ tc
-//	instance Typeable a => Typeable/n-1/ (tc a)
-//	instance (Typeable a, Typeable b) => Typeable/n-2/ (tc a b)
-//	...
-//	instance (Typeable a1, ..., Typeable an) => Typeable (tc a1 ... an)
-// --------------------------------------------------------------------------
--}
-
-#ifndef TYPEABLE_H
-#define TYPEABLE_H
-
-#define INSTANCE_TYPEABLE0(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable tycon where { typeOf _ = mkTyConApp tcname [] }
-
-#ifdef __GLASGOW_HASKELL__
-
---  // For GHC, the extra instances follow from general instance declarations
---  // defined in Data.Typeable.
-
-#define INSTANCE_TYPEABLE1(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE2(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE3(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable3 tycon where { typeOf3 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE4(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable4 tycon where { typeOf4 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE5(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable5 tycon where { typeOf5 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE6(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable6 tycon where { typeOf6 _ = mkTyConApp tcname [] }
-
-#define INSTANCE_TYPEABLE7(tycon,tcname,str) \
-tcname :: TyCon; \
-tcname = mkTyCon str; \
-instance Typeable7 tycon where { typeOf7 _ = mkTyConApp tcname [] }
-
-#else /* !__GLASGOW_HASKELL__ */
-
-#define INSTANCE_TYPEABLE1(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable (tycon a) where { typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE2(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable1 (tycon a) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b) => Typeable (tycon a b) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE3(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable3 tycon where { typeOf3 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable2 (tycon a) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b) => Typeable1 (tycon a b) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable (tycon a b c) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE4(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable4 tycon where { typeOf4 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable3 (tycon a) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b) => Typeable2 (tycon a b) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable1 (tycon a b c) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable (tycon a b c d) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE5(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable5 tycon where { typeOf5 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable4 (tycon a) where { \
-  typeOf4 = typeOf4Default }; \
-instance (Typeable a, Typeable b) => Typeable3 (tycon a b) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable2 (tycon a b c) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable1 (tycon a b c d) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable (tycon a b c d e) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE6(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable6 tycon where { typeOf6 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable5 (tycon a) where { \
-  typeOf5 = typeOf5Default }; \
-instance (Typeable a, Typeable b) => Typeable4 (tycon a b) where { \
-  typeOf4 = typeOf4Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable3 (tycon a b c) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable2 (tycon a b c d) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable1 (tycon a b c d e) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f) => Typeable (tycon a b c d e f) where { \
-  typeOf = typeOfDefault }
-
-#define INSTANCE_TYPEABLE7(tycon,tcname,str) \
-tcname = mkTyCon str; \
-instance Typeable7 tycon where { typeOf7 _ = mkTyConApp tcname [] }; \
-instance Typeable a => Typeable6 (tycon a) where { \
-  typeOf6 = typeOf6Default }; \
-instance (Typeable a, Typeable b) => Typeable5 (tycon a b) where { \
-  typeOf5 = typeOf5Default }; \
-instance (Typeable a, Typeable b, Typeable c) => Typeable4 (tycon a b c) where { \
-  typeOf4 = typeOf4Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable3 (tycon a b c d) where { \
-  typeOf3 = typeOf3Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable2 (tycon a b c d e) where { \
-  typeOf2 = typeOf2Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f) => Typeable1 (tycon a b c d e f) where { \
-  typeOf1 = typeOf1Default }; \
-instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f, Typeable g) => Typeable (tycon a b c d e f g) where { \
-  typeOf = typeOfDefault }
-
-#endif /* !__GLASGOW_HASKELL__ */
-
-#endif
diff --git a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/dirUtils.h b/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/dirUtils.h
deleted file mode 100644
--- a/103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/dirUtils.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* 
- * (c) The University of Glasgow 2002
- *
- * Directory Runtime Support
- */
-#ifndef __DIRUTILS_H__
-#define __DIRUTILS_H__
-
-extern int __hscore_readdir(DIR *dirPtr, struct dirent **pDirEnt);
-
-#endif /* __DIRUTILS_H__ */
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.bcrr
new file mode 100644
# file too large to diff: 103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.bcrr
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.bcrr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.bcrr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.bcrr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.cr b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.cr
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.cr differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.hi b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.hi
new file mode 100644
Binary files /dev/null and b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.hi differ
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/CTypes.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/CTypes.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/CTypes.h
@@ -0,0 +1,231 @@
+{- --------------------------------------------------------------------------
+// Dirty CPP hackery for CTypes/CTypesISO
+//
+// (c) The FFI task force, 2000
+// --------------------------------------------------------------------------
+-}
+
+#ifndef CTYPES__H
+#define CTYPES__H
+
+#include "Typeable.h"
+
+{-
+// As long as there is no automatic derivation of classes for newtypes we resort
+// to extremely dirty cpp-hackery.   :-P   Some care has to be taken when the
+// macros below are modified, otherwise the layout rule will bite you.
+-}
+
+--  // A hacked version for GHC follows the Haskell 98 version...
+#ifndef __GLASGOW_HASKELL__
+
+#define NEWTYPE_TYPE_NODERIVING(T,B) \
+newtype T = T B ; 
+
+#define NEWTYPE_TYPE(T,B) \
+newtype T = T B deriving (Eq, Ord) ; 
+
+#define ARITHMETIC_TYPE_INSTANCES(T,C,S,B) \
+INSTANCE_NUM(T) ; \
+INSTANCE_REAL(T) ; \
+INSTANCE_READ(T,B) ; \
+INSTANCE_SHOW(T,B) ; \
+INSTANCE_ENUM(T) ; \
+INSTANCE_STORABLE(T) ; \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define INTEGRAL_TYPE_INSTANCES(T,C,S,B) \
+INSTANCE_BOUNDED(T) ; \
+INSTANCE_INTEGRAL(T) ; \
+INSTANCE_BITS(T)
+
+#define ARITHMETIC_TYPE(T,C,S,B) \
+NEWTYPE_TYPE(T,B) ; \
+ARITHMETIC_TYPE_INSTANCES(T,C,S,B) ;
+
+#define INTEGRAL_TYPE(T,C,S,B) \
+ARITHMETIC_TYPE(T,C,S,B) ; \
+INTEGRAL_TYPE_INSTANCES(T,C,S,B)
+
+#define FLOATING_TYPE(T,C,S,B) \
+ARITHMETIC_TYPE(T,C,S,B) ; \
+INSTANCE_FRACTIONAL(T) ; \
+INSTANCE_FLOATING(T) ; \
+INSTANCE_REALFRAC(T) ; \
+INSTANCE_REALFLOAT(T)
+
+#ifndef __GLASGOW_HASKELL__
+#define fakeMap map
+#endif
+
+#define INSTANCE_READ(T,B) \
+instance Read T where { \
+   readsPrec p s = fakeMap (\(x, t) -> (T x, t)) (readsPrec p s) }
+
+#define INSTANCE_SHOW(T,B) \
+instance Show T where { \
+   showsPrec p (T x) = showsPrec p x }
+
+#define INSTANCE_NUM(T) \
+instance Num T where { \
+   (T i) + (T j) = T (i + j) ; \
+   (T i) - (T j) = T (i - j) ; \
+   (T i) * (T j) = T (i * j) ; \
+   negate  (T i) = T (negate i) ; \
+   abs     (T i) = T (abs    i) ; \
+   signum  (T i) = T (signum i) ; \
+   fromInteger x = T (fromInteger x) }
+
+#define INSTANCE_EQ(T) \
+instance Eq T where { \
+   (T x1) == (T x2) = x1 == x2 }
+
+#define INSTANCE_ORD(T) \
+instance Ord T where { \
+   (T x1) `compare` (T x2) = x1 `compare` x2 }
+
+#define INSTANCE_BOUNDED(T) \
+instance Bounded T where { \
+   minBound = T minBound ; \
+   maxBound = T maxBound }
+
+#define INSTANCE_ENUM(T) \
+instance Enum T where { \
+   succ           (T i)             = T (succ i) ; \
+   pred           (T i)             = T (pred i) ; \
+   toEnum               x           = T (toEnum x) ; \
+   fromEnum       (T i)             = fromEnum i ; \
+   enumFrom       (T i)             = fakeMap T (enumFrom i) ; \
+   enumFromThen   (T i) (T j)       = fakeMap T (enumFromThen i j) ; \
+   enumFromTo     (T i) (T j)       = fakeMap T (enumFromTo i j) ; \
+   enumFromThenTo (T i) (T j) (T k) = fakeMap T (enumFromThenTo i j k) }
+
+#define INSTANCE_REAL(T) \
+instance Real T where { \
+   toRational (T i) = toRational i }
+
+#define INSTANCE_INTEGRAL(T) \
+instance Integral T where { \
+   (T i) `quot`    (T j) = T (i `quot` j) ; \
+   (T i) `rem`     (T j) = T (i `rem`  j) ; \
+   (T i) `div`     (T j) = T (i `div`  j) ; \
+   (T i) `mod`     (T j) = T (i `mod`  j) ; \
+   (T i) `quotRem` (T j) = let (q,r) = i `quotRem` j in (T q, T r) ; \
+   (T i) `divMod`  (T j) = let (d,m) = i `divMod`  j in (T d, T m) ; \
+   toInteger (T i)       = toInteger i }
+
+#define INSTANCE_BITS(T) \
+instance Bits T where { \
+  (T x) .&.     (T y)   = T (x .&.   y) ; \
+  (T x) .|.     (T y)   = T (x .|.   y) ; \
+  (T x) `xor`   (T y)   = T (x `xor` y) ; \
+  complement    (T x)   = T (complement x) ; \
+  shift         (T x) n = T (shift x n) ; \
+  rotate        (T x) n = T (rotate x n) ; \
+  bit                 n = T (bit n) ; \
+  setBit        (T x) n = T (setBit x n) ; \
+  clearBit      (T x) n = T (clearBit x n) ; \
+  complementBit (T x) n = T (complementBit x n) ; \
+  testBit       (T x) n = testBit x n ; \
+  bitSize       (T x)   = bitSize x ; \
+  isSigned      (T x)   = isSigned x }
+
+#define INSTANCE_FRACTIONAL(T) \
+instance Fractional T where { \
+   (T x) / (T y)  = T (x / y) ; \
+   recip   (T x)  = T (recip x) ; \
+   fromRational r = T (fromRational r) }
+
+#define INSTANCE_FLOATING(T) \
+instance Floating T where { \
+   pi                    = pi ; \
+   exp   (T x)           = T (exp   x) ; \
+   log   (T x)           = T (log   x) ; \
+   sqrt  (T x)           = T (sqrt  x) ; \
+   (T x) **        (T y) = T (x ** y) ; \
+   (T x) `logBase` (T y) = T (x `logBase` y) ; \
+   sin   (T x)           = T (sin   x) ; \
+   cos   (T x)           = T (cos   x) ; \
+   tan   (T x)           = T (tan   x) ; \
+   asin  (T x)           = T (asin  x) ; \
+   acos  (T x)           = T (acos  x) ; \
+   atan  (T x)           = T (atan  x) ; \
+   sinh  (T x)           = T (sinh  x) ; \
+   cosh  (T x)           = T (cosh  x) ; \
+   tanh  (T x)           = T (tanh  x) ; \
+   asinh (T x)           = T (asinh x) ; \
+   acosh (T x)           = T (acosh x) ; \
+   atanh (T x)           = T (atanh x) }
+
+#define INSTANCE_REALFRAC(T) \
+instance RealFrac T where { \
+   properFraction (T x) = let (m,y) = properFraction x in (m, T y) ; \
+   truncate (T x) = truncate x ; \
+   round    (T x) = round x ; \
+   ceiling  (T x) = ceiling x ; \
+   floor    (T x) = floor x }
+
+#define INSTANCE_REALFLOAT(T) \
+instance RealFloat T where { \
+   floatRadix     (T x) = floatRadix x ; \
+   floatDigits    (T x) = floatDigits x ; \
+   floatRange     (T x) = floatRange x ; \
+   decodeFloat    (T x) = decodeFloat x ; \
+   encodeFloat m n      = T (encodeFloat m n) ; \
+   exponent       (T x) = exponent x ; \
+   significand    (T x) = T (significand  x) ; \
+   scaleFloat n   (T x) = T (scaleFloat n x) ; \
+   isNaN          (T x) = isNaN x ; \
+   isInfinite     (T x) = isInfinite x ; \
+   isDenormalized (T x) = isDenormalized x ; \
+   isNegativeZero (T x) = isNegativeZero x ; \
+   isIEEE         (T x) = isIEEE x ; \
+   (T x) `atan2`  (T y) = T (x `atan2` y) }
+
+#define INSTANCE_STORABLE(T) \
+instance Storable T where { \
+   sizeOf    (T x)       = sizeOf x ; \
+   alignment (T x)       = alignment x ; \
+   peekElemOff a i       = liftM T (peekElemOff (castPtr a) i) ; \
+   pokeElemOff a i (T x) = pokeElemOff (castPtr a) i x }
+
+#else /* __GLASGOW_HASKELL__ */
+
+--  // GHC can derive any class for a newtype, so we make use of that here...
+
+#define ARITHMETIC_CLASSES  Eq,Ord,Num,Enum,Storable,Real
+#define INTEGRAL_CLASSES Bounded,Integral,Bits
+#define FLOATING_CLASSES Fractional,Floating,RealFrac,RealFloat
+
+#define ARITHMETIC_TYPE(T,C,S,B) \
+newtype T = T B deriving (ARITHMETIC_CLASSES); \
+INSTANCE_READ(T,B); \
+INSTANCE_SHOW(T,B); \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define INTEGRAL_TYPE(T,C,S,B) \
+newtype T = T B deriving (ARITHMETIC_CLASSES, INTEGRAL_CLASSES); \
+INSTANCE_READ(T,B); \
+INSTANCE_SHOW(T,B); \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define FLOATING_TYPE(T,C,S,B) \
+newtype T = T B deriving (ARITHMETIC_CLASSES, FLOATING_CLASSES); \
+INSTANCE_READ(T,B); \
+INSTANCE_SHOW(T,B); \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define INSTANCE_READ(T,B) \
+instance Read T where { \
+   readsPrec            = unsafeCoerce# (readsPrec :: Int -> ReadS B); \
+   readList             = unsafeCoerce# (readList  :: ReadS [B]); }
+
+#define INSTANCE_SHOW(T,B) \
+instance Show T where { \
+   showsPrec            = unsafeCoerce# (showsPrec :: Int -> B -> ShowS); \
+   show                 = unsafeCoerce# (show :: B -> String); \
+   showList             = unsafeCoerce# (showList :: [B] -> ShowS); }
+
+#endif /* __GLASGOW_HASKELL__ */
+
+#endif
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBase.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBase.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBase.h
@@ -0,0 +1,757 @@
+/* -----------------------------------------------------------------------------
+ *
+ * (c) The University of Glasgow 2001-2004
+ *
+ * Definitions for package `base' which are visible in Haskell land.
+ *
+ * Adapted for use in EHC
+ *
+ * ---------------------------------------------------------------------------*/
+
+#ifndef __HSBASE_H__
+#define __HSBASE_H__
+
+#include "HsBaseConfig.h"
+#ifdef __UHC_BUILDS_O__
+#include "rts.h"
+#endif
+
+/* ultra-evil... */
+#undef PACKAGE_BUGREPORT
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+
+/* Needed to get the macro version of errno on some OSs (eg. Solaris).
+   We must do this, because these libs are only compiled once, but
+   must work in both single-threaded and multi-threaded programs. */
+#define _REENTRANT 1
+
+#ifndef __UHC__
+#include "HsFFI.h"
+#endif /* !__UHC__ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+#if HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#if HAVE_SIGNAL_H
+#include <signal.h>
+/* Ultra-ugly: OpenBSD uses broken macros for sigemptyset and sigfillset (missing casts) */
+#if __OpenBSD__
+#undef sigemptyset
+#undef sigfillset
+#endif
+#endif
+#if HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#endif
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#if HAVE_UTIME_H
+#include <utime.h>
+#endif
+#if HAVE_SYS_UTSNAME_H
+#include <sys/utsname.h>
+#endif
+#if HAVE_GETTIMEOFDAY
+#  if HAVE_SYS_TIME_H
+#   include <sys/time.h>
+#  endif
+#elif HAVE_GETCLOCK
+# if HAVE_SYS_TIMERS_H
+#  define POSIX_4D9 1
+#  include <sys/timers.h>
+# endif
+#endif
+#if HAVE_TIME_H
+#include <time.h>
+#endif
+#if HAVE_SYS_TIMEB_H
+#include <sys/timeb.h>
+#endif
+#if HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+#if HAVE_SYS_TIMES_H
+#include <sys/times.h>
+#endif
+#if HAVE_WINSOCK_H && defined(__MINGW32__)
+#include <winsock.h>
+#endif
+#if HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#if HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#elif HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+#if !defined(__MINGW32__) && !defined(irix_HOST_OS)
+# if HAVE_SYS_RESOURCE_H
+#  include <sys/resource.h>
+# endif
+#endif
+
+#if !HAVE_GETRUSAGE && HAVE_SYS_SYSCALL_H
+# include <sys/syscall.h>
+# if defined(SYS_GETRUSAGE)	/* hpux_HOST_OS */
+#  define getrusage(a, b)  syscall(SYS_GETRUSAGE, a, b)
+#  define HAVE_GETRUSAGE 1
+# endif
+#endif
+
+/* For System */
+#if HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#if HAVE_VFORK_H
+#include <vfork.h>
+#endif
+
+#ifndef __UHC__
+#include "dirUtils.h"
+#endif
+#ifndef __UHC__
+#include "WCsubst.h"
+#endif /* !__UHC__ */
+
+#if defined(__MINGW32__)
+/* in Win32Utils.c */
+extern void maperrno (void);
+extern HsWord64 getUSecOfDay(void);
+#endif
+
+#if defined(__MINGW32__)
+#include <io.h>
+#include <fcntl.h>
+#include <shlobj.h>
+#include <share.h>
+#endif
+
+#if HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+/* in inputReady.c */
+extern int fdReady(int fd, int write, int msecs, int isSock);
+
+#ifndef __UHC__
+/* in Signals.c */
+extern HsInt nocldstop;
+#endif /* !__UHC__ */
+
+#ifndef __UHC__
+/* -----------------------------------------------------------------------------
+   64-bit operations, defined in longlong.c
+   -------------------------------------------------------------------------- */
+
+#ifdef SUPPORT_LONG_LONGS
+
+HsBool hs_gtWord64 (HsWord64, HsWord64);
+HsBool hs_geWord64 (HsWord64, HsWord64);
+HsBool hs_eqWord64 (HsWord64, HsWord64);
+HsBool hs_neWord64 (HsWord64, HsWord64);
+HsBool hs_ltWord64 (HsWord64, HsWord64);
+HsBool hs_leWord64 (HsWord64, HsWord64);
+
+HsBool hs_gtInt64 (HsInt64, HsInt64);
+HsBool hs_geInt64 (HsInt64, HsInt64);
+HsBool hs_eqInt64 (HsInt64, HsInt64);
+HsBool hs_neInt64 (HsInt64, HsInt64);
+HsBool hs_ltInt64 (HsInt64, HsInt64);
+HsBool hs_leInt64 (HsInt64, HsInt64);
+
+HsWord64 hs_remWord64  (HsWord64, HsWord64);
+HsWord64 hs_quotWord64 (HsWord64, HsWord64);
+
+HsInt64 hs_remInt64    (HsInt64, HsInt64);
+HsInt64 hs_quotInt64   (HsInt64, HsInt64);
+HsInt64 hs_negateInt64 (HsInt64);
+HsInt64 hs_plusInt64   (HsInt64, HsInt64);
+HsInt64 hs_minusInt64  (HsInt64, HsInt64);
+HsInt64 hs_timesInt64  (HsInt64, HsInt64);
+
+HsWord64 hs_and64  (HsWord64, HsWord64);
+HsWord64 hs_or64   (HsWord64, HsWord64);
+HsWord64 hs_xor64  (HsWord64, HsWord64);
+HsWord64 hs_not64  (HsWord64);
+
+HsWord64 hs_uncheckedShiftL64   (HsWord64, HsInt);
+HsWord64 hs_uncheckedShiftRL64  (HsWord64, HsInt);
+HsInt64  hs_uncheckedIShiftL64  (HsInt64, HsInt);
+HsInt64  hs_uncheckedIShiftRA64 (HsInt64, HsInt);
+HsInt64  hs_uncheckedIShiftRL64 (HsInt64, HsInt);
+
+HsInt64  hs_intToInt64    (HsInt);
+HsInt    hs_int64ToInt    (HsInt64);
+HsWord64 hs_int64ToWord64 (HsInt64);
+HsWord64 hs_wordToWord64  (HsWord);
+HsWord   hs_word64ToWord  (HsWord64);
+HsInt64  hs_word64ToInt64 (HsWord64);
+
+HsWord64 hs_integerToWord64 (HsInt sa, StgByteArray /* Really: mp_limb_t* */ da);
+HsInt64  hs_integerToInt64 (HsInt sa, StgByteArray /* Really: mp_limb_t* */ da);
+
+#endif /* SUPPORT_LONG_LONGS */
+#endif /* !__UHC__ */
+
+/* -----------------------------------------------------------------------------
+   INLINE functions.
+
+   These functions are given as inlines here for when compiling via C,
+   but we also generate static versions into the cbits library for
+   when compiling to native code.
+   -------------------------------------------------------------------------- */
+
+#ifndef INLINE
+# if defined(_MSC_VER)
+#  define INLINE extern __inline
+# else
+#  define INLINE static inline
+# endif
+#endif
+
+INLINE int __hscore_get_errno(void) { return errno; }
+INLINE void __hscore_set_errno(int e) { errno = e; }
+
+#if !defined(_MSC_VER)
+INLINE int __hscore_s_isreg(mode_t m)  { return S_ISREG(m);  }
+INLINE int __hscore_s_isdir(mode_t m)  { return S_ISDIR(m);  }
+INLINE int __hscore_s_isfifo(mode_t m) { return S_ISFIFO(m); }
+INLINE int __hscore_s_isblk(mode_t m)  { return S_ISBLK(m);  }
+INLINE int __hscore_s_ischr(mode_t m)  { return S_ISCHR(m);  }
+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__)
+INLINE int __hscore_s_issock(mode_t m) { return S_ISSOCK(m); }
+#endif
+#endif
+
+#if ( !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_WIN32) ) || defined(__CYGWIN__)
+INLINE int
+__hscore_sigemptyset( sigset_t *set )
+{ return sigemptyset(set); }
+
+INLINE int
+__hscore_sigfillset( sigset_t *set )
+{ return sigfillset(set); }
+
+INLINE int
+__hscore_sigaddset( sigset_t * set, int s )
+{ return sigaddset(set,s); }
+
+INLINE int
+__hscore_sigdelset( sigset_t * set, int s )
+{ return sigdelset(set,s); }
+
+INLINE int
+__hscore_sigismember( sigset_t * set, int s )
+{ return sigismember(set,s); }
+#endif
+
+INLINE void *
+__hscore_memcpy_dst_off( char *dst, int dst_off, char *src, size_t sz )
+{ return memcpy(dst+dst_off, src, sz); }
+
+INLINE void *
+__hscore_memcpy_src_off( char *dst, char *src, int src_off, size_t sz )
+{ return memcpy(dst, src+src_off, sz); }
+
+INLINE HsBool
+__hscore_supportsTextMode()
+{
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
+  return HS_BOOL_FALSE;
+#else
+  return HS_BOOL_TRUE;
+#endif
+}
+
+INLINE HsInt
+__hscore_bufsiz()
+{
+  return BUFSIZ;
+}
+
+INLINE int
+__hscore_seek_cur()
+{
+  return SEEK_CUR;
+}
+
+INLINE int
+__hscore_o_binary()
+{
+#if defined(_MSC_VER)
+  return O_BINARY;
+#else
+  return CONST_O_BINARY;
+#endif
+}
+
+INLINE int
+__hscore_o_rdonly()
+{
+#ifdef O_RDONLY
+  return O_RDONLY;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_wronly( void )
+{
+#ifdef O_WRONLY
+  return O_WRONLY;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_rdwr( void )
+{
+#ifdef O_RDWR
+  return O_RDWR;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_append( void )
+{
+#ifdef O_APPEND
+  return O_APPEND;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_creat( void )
+{
+#ifdef O_CREAT
+  return O_CREAT;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_excl( void )
+{
+#ifdef O_EXCL
+  return O_EXCL;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_trunc( void )
+{
+#ifdef O_TRUNC
+  return O_TRUNC;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_noctty( void )
+{
+#ifdef O_NOCTTY
+  return O_NOCTTY;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_o_nonblock( void )
+{
+#ifdef O_NONBLOCK
+  return O_NONBLOCK;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_seek_set( void )
+{
+  return SEEK_SET;
+}
+
+INLINE int
+__hscore_seek_end( void )
+{
+  return SEEK_END;
+}
+
+INLINE int
+__hscore_ftruncate( int fd, off_t where )
+{
+#if defined(HAVE_FTRUNCATE)
+  return ftruncate(fd,where);
+#elif defined(HAVE__CHSIZE)
+  return _chsize(fd,where);
+#else
+// ToDo: we should use _chsize_s() on Windows which allows a 64-bit
+// offset, but it doesn't seem to be available from mingw at this time 
+// --SDM (01/2008)
+#error at least ftruncate or _chsize functions are required to build
+#endif
+}
+
+#ifndef __UHC__
+INLINE int
+__hscore_setmode( int fd, HsBool toBin )
+{
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
+  return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT);
+#else
+  return 0;
+#endif
+}
+#endif /* !__UHC__ */
+
+#if __GLASGOW_HASKELL__
+
+INLINE int
+__hscore_PrelHandle_write( int fd, void *ptr, HsInt off, int sz )
+{
+  return write(fd,(char *)ptr + off, sz);
+}
+
+INLINE int
+__hscore_PrelHandle_read( int fd, void *ptr, HsInt off, int sz )
+{
+  return read(fd,(char *)ptr + off, sz);
+
+}
+
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
+INLINE int
+__hscore_PrelHandle_send( int fd, void *ptr, HsInt off, int sz )
+{
+    return send(fd,(char *)ptr + off, sz, 0);
+}
+
+INLINE int
+__hscore_PrelHandle_recv( int fd, void *ptr, HsInt off, int sz )
+{
+    return recv(fd,(char *)ptr + off, sz, 0);
+}
+#endif
+
+#endif /* __GLASGOW_HASKELL__ */
+
+INLINE int
+__hscore_mkdir( char *pathName, int mode )
+{
+#if ( defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32) ) && !defined(__CYGWIN__)
+  return mkdir(pathName);
+#else
+  return mkdir(pathName,mode);
+#endif
+}
+
+INLINE int
+__hscore_lstat( const char *fname, struct stat *st )
+{
+#if HAVE_LSTAT
+  return lstat(fname, st);
+#else
+  return stat(fname, st);
+#endif
+}
+
+INLINE char *
+__hscore_d_name( struct dirent* d )
+{
+  return (d->d_name);
+}
+
+INLINE int
+__hscore_end_of_dir( void )
+{
+  return READDIR_ERRNO_EOF;
+}
+
+INLINE void
+__hscore_free_dirent(struct dirent *dEnt)
+{
+#if HAVE_READDIR_R
+  free(dEnt);
+#endif
+}
+
+#if defined(__MINGW32__)
+// We want the versions of stat/fstat/lseek that use 64-bit offsets,
+// and you have to ask for those explicitly.  Unfortunately there
+// doesn't seem to be a 64-bit version of truncate/ftruncate, so while
+// hFileSize and hSeek will work with large files, hSetFileSize will not.
+#define stat(file,buf)       _stati64(file,buf)
+#define fstat(fd,buf)        _fstati64(fd,buf)
+typedef struct _stati64 struct_stat;
+typedef off64_t stsize_t;
+#else
+typedef struct stat struct_stat;
+typedef off_t stsize_t;
+#endif
+
+INLINE HsInt
+__hscore_sizeof_stat( void )
+{
+  return sizeof(struct_stat);
+}
+
+INLINE time_t __hscore_st_mtime ( struct_stat* st ) { return st->st_mtime; }
+INLINE stsize_t __hscore_st_size  ( struct_stat* st ) { return st->st_size; }
+#if !defined(_MSC_VER)
+INLINE mode_t __hscore_st_mode  ( struct_stat* st ) { return st->st_mode; }
+INLINE dev_t  __hscore_st_dev  ( struct_stat* st ) { return st->st_dev; }
+INLINE ino_t  __hscore_st_ino  ( struct_stat* st ) { return st->st_ino; }
+#endif
+
+#if HAVE_TERMIOS_H
+INLINE tcflag_t __hscore_lflag( struct termios* ts ) { return ts->c_lflag; }
+
+INLINE void
+__hscore_poke_lflag( struct termios* ts, tcflag_t t ) { ts->c_lflag = t; }
+
+INLINE unsigned char*
+__hscore_ptr_c_cc( struct termios* ts )
+{ return (unsigned char*) &ts->c_cc; }
+
+INLINE HsInt
+__hscore_sizeof_termios( void )
+{
+#ifndef __MINGW32__
+  return sizeof(struct termios);
+#else
+  return 0;
+#endif
+}
+#endif
+
+//sizeof_sigset_t is also use on windows systems which define tcflat_t. Why exclude it?
+// #if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_WIN32)
+INLINE HsInt
+__hscore_sizeof_sigset_t( void )
+{
+  return sizeof(sigset_t);
+}
+// #endif
+
+INLINE int
+__hscore_echo( void )
+{
+#ifdef ECHO
+  return ECHO;
+#else
+  return 0;
+#endif
+
+}
+
+INLINE int
+__hscore_tcsanow( void )
+{
+#ifdef TCSANOW
+  return TCSANOW;
+#else
+  return 0;
+#endif
+
+}
+
+INLINE int
+__hscore_icanon( void )
+{
+#ifdef ICANON
+  return ICANON;
+#else
+  return 0;
+#endif
+}
+
+INLINE int __hscore_vmin( void )
+{
+#ifdef VMIN
+  return VMIN;
+#else
+  return 0;
+#endif
+}
+
+INLINE int __hscore_vtime( void )
+{
+#ifdef VTIME
+  return VTIME;
+#else
+  return 0;
+#endif
+}
+
+INLINE int __hscore_sigttou( void )
+{
+#ifdef SIGTTOU
+  return SIGTTOU;
+#else
+  return 0;
+#endif
+}
+
+INLINE int __hscore_sig_block( void )
+{
+#ifdef SIG_BLOCK
+  return SIG_BLOCK;
+#else
+  return 0;
+#endif
+}
+
+INLINE int __hscore_sig_setmask( void )
+{
+#ifdef SIG_SETMASK
+  return SIG_SETMASK;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_f_getfl( void )
+{
+#ifdef F_GETFL
+  return F_GETFL;
+#else
+  return 0;
+#endif
+}
+
+INLINE int
+__hscore_f_setfl( void )
+{
+#ifdef F_SETFL
+  return F_SETFL;
+#else
+  return 0;
+#endif
+}
+
+// defined in rts/RtsStartup.c.
+extern void* __hscore_get_saved_termios(int fd);
+extern void __hscore_set_saved_termios(int fd, void* ts);
+
+INLINE int __hscore_hs_fileno (FILE *f) { return fileno (f); }
+
+INLINE int __hscore_open(char *file, int how, mode_t mode) {
+#ifdef __MINGW32__
+	if ((how & O_WRONLY) || (how & O_RDWR) || (how & O_APPEND))
+	  return _sopen(file,how,_SH_DENYRW,mode);
+	else
+	  return _sopen(file,how,_SH_DENYWR,mode);
+#else
+	return open(file,how,mode);
+#endif
+}
+
+// These are wrapped because on some OSs (eg. Linux) they are
+// macros which redirect to the 64-bit-off_t versions when large file
+// support is enabled.
+//
+#if defined(__MINGW32__)
+INLINE off64_t __hscore_lseek(int fd, off64_t off, int whence) {
+	return (_lseeki64(fd,off,whence));
+}
+#else
+INLINE off_t __hscore_lseek(int fd, off_t off, int whence) {
+	return (lseek(fd,off,whence));
+}
+#endif
+
+INLINE HsInt __hscore_stat(char *file, struct_stat *buf) {
+	return (stat(file,buf));
+}
+
+INLINE HsInt __hscore_fstat(int fd, struct_stat *buf) {
+	return (fstat(fd,buf));
+}
+
+// select-related stuff
+
+#if !defined(__MINGW32__)
+INLINE int  hsFD_SETSIZE(void) { return FD_SETSIZE; }
+INLINE int  hsFD_ISSET(int fd, fd_set *fds) { return FD_ISSET(fd, fds); }
+INLINE void hsFD_SET(int fd, fd_set *fds) { FD_SET(fd, fds); }
+INLINE HsInt sizeof_fd_set(void) { return sizeof(fd_set); }
+extern void hsFD_ZERO(fd_set *fds);
+#endif
+
+// gettimeofday()-related
+
+#if !defined(__MINGW32__)
+
+INLINE HsInt sizeofTimeVal(void) { return sizeof(struct timeval); }
+
+INLINE HsWord64 getUSecOfDay(void)
+{
+    struct timeval tv;
+    gettimeofday(&tv, (struct timezone *) NULL);
+    // Don't forget to cast *before* doing the arithmetic, otherwise
+    // the arithmetic happens at the type of tv_sec, which is probably
+    // only 'int'.
+    return ((HsWord64)tv.tv_sec * 1000000 + (HsWord64)tv.tv_usec);
+}
+
+INLINE void setTimevalTicks(struct timeval *p, HsWord64 usecs)
+{
+    p->tv_sec  = usecs / 1000000;
+    p->tv_usec = usecs % 1000000;
+}
+#endif /* !defined(__MINGW32__) */
+
+/* ToDo: write a feature test that doesn't assume 'environ' to
+ *    be in scope at link-time. */
+extern char** environ;
+INLINE char **__hscore_environ() { return environ; }
+
+/* lossless conversions between pointers and integral types */
+INLINE void *    __hscore_from_uintptr(uintptr_t n) { return (void *)n; }
+INLINE void *    __hscore_from_intptr (intptr_t n)  { return (void *)n; }
+INLINE uintptr_t __hscore_to_uintptr  (void *p)     { return (uintptr_t)p; }
+INLINE intptr_t  __hscore_to_intptr   (void *p)     { return (intptr_t)p; }
+
+void errorBelch2(const char*s, char *t);
+void debugBelch2(const char*s, char *t);
+
+#endif /* __HSBASE_H__ */
+
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBaseConfig.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBaseConfig.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBaseConfig.h
@@ -0,0 +1,944 @@
+/* ehclib/uhcbase/include/HsBaseConfig.h.  Generated from HsBaseConfig.h.in by configure.  */
+#ifndef HSBASECONFIG_H
+#define HSBASECONFIG_H
+
+#include "MachDeps.h"
+
+/********************************************************************/
+/**** Sizes                                                      ****/
+/********************************************************************/
+
+#if SIZEOF_INTPTR_T == 8
+#define HTYPE_INTPTR_T 			Int64
+#define HTYPE_UINTPTR_T 		Word64
+#else
+#define HTYPE_INTPTR_T 			Int32
+#define HTYPE_UINTPTR_T 		Word32
+#endif
+
+/* also here: typedef int sig_atomic_t
+ */
+#if SIZEOF_INT == 8
+#define HTYPE_INT 				Int64
+#define HTYPE_UNSIGNED_INT 		Word64
+#define HTYPE_SIG_ATOMIC_T 		Word64
+#else
+#define HTYPE_INT 				Int32
+#define HTYPE_UNSIGNED_INT 		Word32
+#define HTYPE_SIG_ATOMIC_T 		Word32
+#endif
+
+#if SIZEOF_LONG == 8
+#define HTYPE_LONG 				Int64
+#define HTYPE_UNSIGNED_LONG 	Word64
+#else
+#define HTYPE_LONG 				Int32
+#define HTYPE_UNSIGNED_LONG 	Word32
+#endif
+
+#if SIZEOF_VOID_P == 8
+#define HTYPE_PTRDIFF_T 		Int64
+#else
+#define HTYPE_PTRDIFF_T 		Int32
+#endif
+
+#if SIZEOF_CLOCK_T == 8
+#define HTYPE_CLOCK_T 			Word64
+#else
+#define HTYPE_CLOCK_T 			Word32
+#endif
+
+#if SIZEOF_TIME_T == 8
+#define HTYPE_TIME_T 			Word64
+#else
+#define HTYPE_TIME_T 			Word32
+#endif
+
+#if SIZEOF_USECONDS_T == 8
+#define HTYPE_USECONDS_T 		Word64
+#else
+#define HTYPE_USECONDS_T 		Word32
+#endif
+
+#if SIZEOF_SIZE_T == 8
+#define HTYPE_SIZE_T 			Word64
+#else
+#define HTYPE_SIZE_T 			Word32
+#endif
+
+#if SIZEOF_WCHAR_T == 1
+#define HTYPE_WCHAR_T 			Word8
+#elif SIZEOF_WCHAR_T == 2
+#define HTYPE_WCHAR_T 			Word16
+#else
+#define HTYPE_WCHAR_T 			Word32
+#endif
+
+
+
+/* Define to Haskell type for char */
+#define HTYPE_CHAR Int8
+
+/* Define to Haskell type for double */
+#define HTYPE_DOUBLE Double
+
+/* Define to Haskell type for float */
+#define HTYPE_FLOAT Float
+
+/* Define to Haskell type for intmax_t */
+#define HTYPE_INTMAX_T Int64
+
+/* Define to Haskell type for long long */
+#define HTYPE_LONG_LONG Int64
+
+/* Define to Haskell type for short */
+#define HTYPE_SHORT Int16
+
+/* Define to Haskell type for signed char */
+#define HTYPE_SIGNED_CHAR Int8
+
+/* Define to Haskell type for uintmax_t */
+#define HTYPE_UINTMAX_T Word64
+
+/* Define to Haskell type for unsigned char */
+#define HTYPE_UNSIGNED_CHAR Word8
+
+/* Define to Haskell type for unsigned long long */
+#define HTYPE_UNSIGNED_LONG_LONG Word64
+
+/* Define to Haskell type for unsigned short */
+#define HTYPE_UNSIGNED_SHORT Word16
+
+
+
+/********************************************************************/
+/**** System tupes                                               ****/
+/********************************************************************/
+
+#ifdef SIZEOF_DEV_T
+# if SIZEOF_DEV_T == 8
+#  define HTYPE_DEV_T 			Word64
+# elif SIZEOF_DEV_T == 4
+#  define HTYPE_DEV_T 			Word32
+# elif SIZEOF_DEV_T == 2
+#  define HTYPE_DEV_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_INO_T
+# if SIZEOF_INO_T == 8
+#  define HTYPE_INO_T 			Word64
+# elif SIZEOF_INO_T == 4
+#  define HTYPE_INO_T 			Word32
+# elif SIZEOF_INO_T == 2
+#  define HTYPE_INO_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_MODE_T
+# if SIZEOF_MODE_T == 8
+#  define HTYPE_MODE_T 			Word64
+# elif SIZEOF_MODE_T == 4
+#  define HTYPE_MODE_T 			Word32
+# elif SIZEOF_MODE_T == 2
+#  define HTYPE_MODE_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_OFF_T
+# if SIZEOF_OFF_T == 8
+#  define HTYPE_OFF_T 			Word64
+# elif SIZEOF_OFF_T == 4
+#  define HTYPE_OFF_T 			Word32
+# elif SIZEOF_OFF_T == 2
+#  define HTYPE_OFF_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_PID_T
+# if SIZEOF_PID_T == 8
+#  define HTYPE_PID_T 			Word64
+# elif SIZEOF_PID_T == 4
+#  define HTYPE_PID_T 			Word32
+# elif SIZEOF_PID_T == 2
+#  define HTYPE_PID_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_SSIZE_T
+# if SIZEOF_SSIZE_T == 8
+#  define HTYPE_SSIZE_T 			Word64
+# elif SIZEOF_SSIZE_T == 4
+#  define HTYPE_SSIZE_T 			Word32
+# elif SIZEOF_SSIZE_T == 2
+#  define HTYPE_SSIZE_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_GID_T
+# if SIZEOF_GID_T == 8
+#  define HTYPE_GID_T 			Word64
+# elif SIZEOF_GID_T == 4
+#  define HTYPE_GID_T 			Word32
+# elif SIZEOF_GID_T == 2
+#  define HTYPE_GID_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_NLINK_T
+# if SIZEOF_NLINK_T == 8
+#  define HTYPE_NLINK_T 			Word64
+# elif SIZEOF_NLINK_T == 4
+#  define HTYPE_NLINK_T 			Word32
+# elif SIZEOF_NLINK_T == 2
+#  define HTYPE_NLINK_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_UID_T
+# if SIZEOF_UID_T == 8
+#  define HTYPE_UID_T 			Word64
+# elif SIZEOF_UID_T == 4
+#  define HTYPE_UID_T 			Word32
+# elif SIZEOF_UID_T == 2
+#  define HTYPE_UID_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_CC_T
+# if SIZEOF_CC_T == 8
+#  define HTYPE_CC_T 			Word64
+# elif SIZEOF_CC_T == 4
+#  define HTYPE_CC_T 			Word32
+# elif SIZEOF_CC_T == 2
+#  define HTYPE_CC_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_SPEED_T
+# if SIZEOF_SPEED_T == 8
+#  define HTYPE_SPEED_T 			Word64
+# elif SIZEOF_SPEED_T == 4
+#  define HTYPE_SPEED_T 			Word32
+# elif SIZEOF_SPEED_T == 2
+#  define HTYPE_SPEED_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_TCFLAG_T
+# if SIZEOF_TCFLAG_T == 8
+#  define HTYPE_TCFLAG_T 			Word64
+# elif SIZEOF_TCFLAG_T == 4
+#  define HTYPE_TCFLAG_T 			Word32
+# elif SIZEOF_TCFLAG_T == 2
+#  define HTYPE_TCFLAG_T 			Word16
+# else
+# endif
+#endif
+
+#ifdef SIZEOF_RLIM_T
+# if SIZEOF_RLIM_T == 8
+#  define HTYPE_RLIM_T 			Word64
+# elif SIZEOF_RLIM_T == 4
+#  define HTYPE_RLIM_T 			Word32
+# elif SIZEOF_RLIM_T == 2
+#  define HTYPE_RLIM_T 			Word16
+# else
+# endif
+#endif
+
+/********************************************************************/
+/**** Presence of include files                                  ****/
+/********************************************************************/
+
+#define HAVE_DIRENT_H 1
+#define HAVE_ERRNO_H 1
+#define HAVE_FCNTL_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_LIMITS_H 1
+#define HAVE_SIGNAL_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STRING_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_SYSCALL_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TIMEB_H 1
+/* #undef HAVE_SYS_TIMERS_H */
+#define HAVE_SYS_TIMES_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_UTSNAME_H 1
+#define HAVE_SYS_WAIT_H 1
+#define HAVE_TERMIOS_H 1
+#define HAVE_TIME_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UTIME_H 1
+/* #undef HAVE_VFORK_H */
+#define HAVE_WCTYPE_H 1
+/* #undef HAVE_WINDOWS_H */
+/* #undef HAVE_WINSOCK_H */
+
+/* #undef HAVE__CHSIZE */
+#define HAVE_FTRUNCATE 1
+/* #undef HAVE_GETCLOCK */
+#define HAVE_GETRUSAGE 1
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_LSTAT 1
+#define HAVE_READDIR_R 1
+
+/********************************************************************/
+/**** Runtime types                                              ****/
+/********************************************************************/
+
+#ifdef __UHC_BUILDS_O__
+
+#if defined(__UHC_TARGET_BC__) || defined(__UHC_TARGET_C__)
+// # define HsBool				Word
+// # define HsInt				Word
+// # define HsWord64			Word64
+// # define HsWord32			Word32
+// # define HsWord16			Word16
+// # define HsWord8			Word8
+// # ifdef __UHC_TARGET_BC__
+// #  define HS_BOOL_FALSE		gb_False
+// #  define HS_BOOL_TRUE		gb_True
+// # else
+// #  define HS_BOOL_FALSE		0
+// #  define HS_BOOL_TRUE		1
+// # endif
+#endif /* __UHC_TARGET_BC__ */
+
+#endif /* __UHC_BUILDS_O__ */
+
+/********************************************************************/
+/**** Read dir EOF error                                         ****/
+/********************************************************************/
+
+/* See remarks in GHC, libraries/base/aclocal.m4: MinGW platform returns non 0 value. We ignore that */
+#define	READDIR_ERRNO_EOF	0
+
+/********************************************************************/
+/**** C errors                                                   ****/
+/********************************************************************/
+
+/* (1) Assume errno.h is already included */
+/* (2) Error codes like EADV are not present on all platforms, so a dummy value is provided, this should be done for all codes */
+
+/* The value of E2BIG. */
+#if !defined(E2BIG)
+#define E2BIG 10000
+#endif
+#define CONST_E2BIG E2BIG
+
+/* The value of EACCES. */
+#if !defined(EACCES)
+#define EACCES 10000
+#endif
+#define CONST_EACCES EACCES
+
+/* The value of EADDRINUSE. */
+#if !defined(EADDRINUSE)
+#define EADDRINUSE 10000
+#endif
+#define CONST_EADDRINUSE EADDRINUSE
+
+/* The value of EADDRNOTAVAIL. */
+#define CONST_EADDRNOTAVAIL EADDRNOTAVAIL
+
+/* The value of EADV. */
+#if !defined(EADV)
+#define EADV 10000
+#endif
+#define CONST_EADV EADV
+
+/* The value of EAFNOSUPPORT. */
+#if !defined(EAFNOSUPPORT)
+#define EAFNOSUPPORT 10000
+#endif
+#define CONST_EAFNOSUPPORT EAFNOSUPPORT
+
+/* The value of EAGAIN. */
+#if !defined(EAGAIN)
+#define EAGAIN 10000
+#endif
+#define CONST_EAGAIN EAGAIN
+
+/* The value of EALREADY. */
+#if !defined(EALREADY)
+#define EALREADY 10000
+#endif
+#define CONST_EALREADY EALREADY
+
+/* The value of EBADF. */
+#if !defined(EBADF)
+#define EBADF 10000
+#endif
+#define CONST_EBADF EBADF
+
+/* The value of EBADMSG. */
+#if !defined(EBADMSG)
+#define EBADMSG 10000
+#endif
+#define CONST_EBADMSG EBADMSG
+
+/* The value of EBADRPC. */
+#if !defined(EBADRPC)
+#define EBADRPC 10000
+#endif
+#define CONST_EBADRPC EBADRPC
+
+/* The value of EBUSY. */
+#if !defined(EBUSY)
+#define EBUSY 10000
+#endif
+#define CONST_EBUSY EBUSY
+
+/* The value of ECHILD. */
+#if !defined(ECHILD)
+#define ECHILD 10000
+#endif
+#define CONST_ECHILD ECHILD
+
+/* The value of ECOMM. */
+#if !defined(ECOMM)
+#define ECOMM 10000
+#endif
+#define CONST_ECOMM ECOMM
+
+/* The value of ECONNABORTED. */
+#if !defined(ECONNABORTED)
+#define ECONNABORTED 10000
+#endif
+#define CONST_ECONNABORTED ECONNABORTED
+
+/* The value of ECONNREFUSED. */
+#if !defined(ECONNREFUSED)
+#define ECONNREFUSED 10000
+#endif
+#define CONST_ECONNREFUSED ECONNREFUSED
+
+/* The value of ECONNRESET. */
+#if !defined(ECONNRESET)
+#define ECONNRESET 10000
+#endif
+#define CONST_ECONNRESET ECONNRESET
+
+/* The value of EDEADLK. */
+#if !defined(EDEADLK)
+#define EDEADLK 10000
+#endif
+#define CONST_EDEADLK EDEADLK
+
+/* The value of EDESTADDRREQ. */
+#if !defined(EDESTADDRREQ)
+#define EDESTADDRREQ 10000
+#endif
+#define CONST_EDESTADDRREQ EDESTADDRREQ
+
+/* The value of EDIRTY. */
+#if !defined(EDIRTY)
+#define EDIRTY 10000
+#endif
+#define CONST_EDIRTY EDIRTY
+
+/* The value of EDOM. */
+#if !defined(EDOM)
+#define EDOM 10000
+#endif
+#define CONST_EDOM EDOM
+
+/* The value of EDQUOT. */
+#if !defined(EDQUOT)
+#define EDQUOT 10000
+#endif
+#define CONST_EDQUOT EDQUOT
+
+/* The value of EEXIST. */
+#if !defined(EEXIST)
+#define EEXIST 10000
+#endif
+#define CONST_EEXIST EEXIST
+
+/* The value of EFAULT. */
+#if !defined(EFAULT)
+#define EFAULT 10000
+#endif
+#define CONST_EFAULT EFAULT
+
+/* The value of EFBIG. */
+#if !defined(EFBIG)
+#define EFBIG 10000
+#endif
+#define CONST_EFBIG EFBIG
+
+/* The value of EFTYPE. */
+#if !defined(EFTYPE)
+#define EFTYPE 10000
+#endif
+#define CONST_EFTYPE EFTYPE
+
+/* The value of EHOSTDOWN. */
+#if !defined(EHOSTDOWN)
+#define EHOSTDOWN 10000
+#endif
+#define CONST_EHOSTDOWN EHOSTDOWN
+
+/* The value of EHOSTUNREACH. */
+#if !defined(EHOSTUNREACH)
+#define EHOSTUNREACH 10000
+#endif
+#define CONST_EHOSTUNREACH EHOSTUNREACH
+
+/* The value of EIDRM. */
+#if !defined(EIDRM)
+#define EIDRM 10000
+#endif
+#define CONST_EIDRM EIDRM
+
+/* The value of EILSEQ. */
+#if !defined(EILSEQ)
+#define EILSEQ 10000
+#endif
+#define CONST_EILSEQ EILSEQ
+
+/* The value of EINPROGRESS. */
+#if !defined(EINPROGRESS)
+#define EINPROGRESS 10000
+#endif
+#define CONST_EINPROGRESS EINPROGRESS
+
+/* The value of EINTR. */
+#if !defined(EINTR)
+#define EINTR 10000
+#endif
+#define CONST_EINTR EINTR
+
+/* The value of EINVAL. */
+#if !defined(EINVAL)
+#define EINVAL 10000
+#endif
+#define CONST_EINVAL EINVAL
+
+/* The value of EIO. */
+#if !defined(EIO)
+#define EIO 10000
+#endif
+#define CONST_EIO EIO
+
+/* The value of EISCONN. */
+#if !defined(EISCONN)
+#define EISCONN 10000
+#endif
+#define CONST_EISCONN EISCONN
+
+/* The value of EISDIR. */
+#if !defined(EISDIR)
+#define EISDIR 10000
+#endif
+#define CONST_EISDIR EISDIR
+
+/* The value of ELOOP. */
+#if !defined(ELOOP)
+#define ELOOP 10000
+#endif
+#define CONST_ELOOP ELOOP
+
+/* The value of EMFILE. */
+#if !defined(EMFILE)
+#define EMFILE 10000
+#endif
+#define CONST_EMFILE EMFILE
+
+/* The value of EMLINK. */
+#if !defined(EMLINK)
+#define EMLINK 10000
+#endif
+#define CONST_EMLINK EMLINK
+
+/* The value of EMSGSIZE. */
+#if !defined(EMSGSIZE)
+#define EMSGSIZE 10000
+#endif
+#define CONST_EMSGSIZE EMSGSIZE
+
+/* The value of EMULTIHOP. */
+#if !defined(EMULTIHOP)
+#define EMULTIHOP 10000
+#endif
+#define CONST_EMULTIHOP EMULTIHOP
+
+/* The value of ENAMETOOLONG. */
+#if !defined(ENAMETOOLONG)
+#define ENAMETOOLONG 10000
+#endif
+#define CONST_ENAMETOOLONG ENAMETOOLONG
+
+/* The value of ENETDOWN. */
+#if !defined(ENETDOWN)
+#define ENETDOWN 10000
+#endif
+#define CONST_ENETDOWN ENETDOWN
+
+/* The value of ENETRESET. */
+#if !defined(ENETRESET)
+#define ENETRESET 10000
+#endif
+#define CONST_ENETRESET ENETRESET
+
+/* The value of ENETUNREACH. */
+#if !defined(ENETUNREACH)
+#define ENETUNREACH 10000
+#endif
+#define CONST_ENETUNREACH ENETUNREACH
+
+/* The value of ENFILE. */
+#if !defined(ENFILE)
+#define ENFILE 10000
+#endif
+#define CONST_ENFILE ENFILE
+
+/* The value of ENOBUFS. */
+#if !defined(ENOBUFS)
+#define ENOBUFS 10000
+#endif
+#define CONST_ENOBUFS ENOBUFS
+
+/* The value of ENOCIGAR. */
+#if !defined(ENOCIGAR)
+#define ENOCIGAR 10000
+#endif
+#define CONST_ENOCIGAR ENOCIGAR
+
+/* The value of ENODATA. */
+#if !defined(ENODATA)
+#define ENODATA 10000
+#endif
+#define CONST_ENODATA ENODATA
+
+/* The value of ENODEV. */
+#if !defined(ENODEV)
+#define ENODEV 10000
+#endif
+#define CONST_ENODEV ENODEV
+
+/* The value of ENOENT. */
+#if !defined(ENOENT)
+#define ENOENT 10000
+#endif
+#define CONST_ENOENT ENOENT
+
+/* The value of ENOEXEC. */
+#if !defined(ENOEXEC)
+#define ENOEXEC 10000
+#endif
+#define CONST_ENOEXEC ENOEXEC
+
+/* The value of ENOLCK. */
+#if !defined(ENOLCK)
+#define ENOLCK 10000
+#endif
+#define CONST_ENOLCK ENOLCK
+
+/* The value of ENOLINK. */
+#if !defined(ENOLINK)
+#define ENOLINK 10000
+#endif
+#define CONST_ENOLINK ENOLINK
+
+/* The value of ENOMEM. */
+#if !defined(ENOMEM)
+#define ENOMEM 10000
+#endif
+#define CONST_ENOMEM ENOMEM
+
+/* The value of ENOMSG. */
+#if !defined(ENOMSG)
+#define ENOMSG 10000
+#endif
+#define CONST_ENOMSG ENOMSG
+
+/* The value of ENONET. */
+#if !defined(ENONET)
+#define ENONET 10000
+#endif
+#define CONST_ENONET ENONET
+
+/* The value of ENOPROTOOPT. */
+#if !defined(ENOPROTOOPT)
+#define ENOPROTOOPT 10000
+#endif
+#define CONST_ENOPROTOOPT ENOPROTOOPT
+
+/* The value of ENOSPC. */
+#if !defined(ENOSPC)
+#define ENOSPC 10000
+#endif
+#define CONST_ENOSPC ENOSPC
+
+/* The value of ENOSR. */
+#if !defined(ENOSR)
+#define ENOSR 10000
+#endif
+#define CONST_ENOSR ENOSR
+
+/* The value of ENOSTR. */
+#if !defined(ENOSTR)
+#define ENOSTR 10000
+#endif
+#define CONST_ENOSTR ENOSTR
+
+/* The value of ENOSYS. */
+#if !defined(ENOSYS)
+#define ENOSYS 10000
+#endif
+#define CONST_ENOSYS ENOSYS
+
+/* The value of ENOTBLK. */
+#if !defined(ENOTBLK)
+#define ENOTBLK 10000
+#endif
+#define CONST_ENOTBLK ENOTBLK
+
+/* The value of ENOTCONN. */
+#if !defined(ENOTCONN)
+#define ENOTCONN 10000
+#endif
+#define CONST_ENOTCONN ENOTCONN
+
+/* The value of ENOTDIR. */
+#if !defined(ENOTDIR)
+#define ENOTDIR 10000
+#endif
+#define CONST_ENOTDIR ENOTDIR
+
+/* The value of ENOTEMPTY. */
+#if !defined(ENOTEMPTY)
+#define ENOTEMPTY 10000
+#endif
+#define CONST_ENOTEMPTY ENOTEMPTY
+
+/* The value of ENOTSOCK. */
+#if !defined(ENOTSOCK)
+#define ENOTSOCK 10000
+#endif
+#define CONST_ENOTSOCK ENOTSOCK
+
+/* The value of ENOTTY. */
+#if !defined(ENOTTY)
+#define ENOTTY 10000
+#endif
+#define CONST_ENOTTY ENOTTY
+
+/* The value of ENXIO. */
+#if !defined(ENXIO)
+#define ENXIO 10000
+#endif
+#define CONST_ENXIO ENXIO
+
+/* The value of EOPNOTSUPP. */
+#if !defined(EOPNOTSUPP)
+#define EOPNOTSUPP 10000
+#endif
+#define CONST_EOPNOTSUPP EOPNOTSUPP
+
+/* The value of EPERM. */
+#if !defined(EPERM)
+#define EPERM 10000
+#endif
+#define CONST_EPERM EPERM
+
+/* The value of EPFNOSUPPORT. */
+#if !defined(EPFNOSUPPORT)
+#define EPFNOSUPPORT 10000
+#endif
+#define CONST_EPFNOSUPPORT EPFNOSUPPORT
+
+/* The value of EPIPE. */
+#if !defined(EPIPE)
+#define EPIPE 10000
+#endif
+#define CONST_EPIPE EPIPE
+
+/* The value of EPROCLIM. */
+#if !defined(EPROCLIM)
+#define EPROCLIM 10000
+#endif
+#define CONST_EPROCLIM EPROCLIM
+
+/* The value of EPROCUNAVAIL. */
+#if !defined(EPROCUNAVAIL)
+#define EPROCUNAVAIL 10000
+#endif
+#define CONST_EPROCUNAVAIL EPROCUNAVAIL
+
+/* The value of EPROGMISMATCH. */
+#if !defined(EPROGMISMATCH)
+#define EPROGMISMATCH 10000
+#endif
+#define CONST_EPROGMISMATCH EPROGMISMATCH
+
+/* The value of EPROGUNAVAIL. */
+#if !defined(EPROGUNAVAIL)
+#define EPROGUNAVAIL 10000
+#endif
+#define CONST_EPROGUNAVAIL EPROGUNAVAIL
+
+/* The value of EPROTO. */
+#if !defined(EPROTO)
+#define EPROTO 10000
+#endif
+#define CONST_EPROTO EPROTO
+
+/* The value of EPROTONOSUPPORT. */
+#if !defined(EPROTONOSUPPORT)
+#define EPROTONOSUPPORT 10000
+#endif
+#define CONST_EPROTONOSUPPORT EPROTONOSUPPORT
+
+/* The value of EPROTOTYPE. */
+#if !defined(EPROTOTYPE)
+#define EPROTOTYPE 10000
+#endif
+#define CONST_EPROTOTYPE EPROTOTYPE
+
+/* The value of ERANGE. */
+#if !defined(ERANGE)
+#define ERANGE 10000
+#endif
+#define CONST_ERANGE ERANGE
+
+/* The value of EREMCHG. */
+#if !defined(EREMCHG)
+#define EREMCHG 10000
+#endif
+#define CONST_EREMCHG EREMCHG
+
+/* The value of EREMOTE. */
+#if !defined(EREMOTE)
+#define EREMOTE 10000
+#endif
+#define CONST_EREMOTE EREMOTE
+
+/* The value of EROFS. */
+#if !defined(EROFS)
+#define EROFS 10000
+#endif
+#define CONST_EROFS EROFS
+
+/* The value of ERPCMISMATCH. */
+#if !defined(ERPCMISMATCH)
+#define ERPCMISMATCH 10000
+#endif
+#define CONST_ERPCMISMATCH ERPCMISMATCH
+
+/* The value of ERREMOTE. */
+#if !defined(ERREMOTE)
+#define ERREMOTE 10000
+#endif
+#define CONST_ERREMOTE ERREMOTE
+
+/* The value of ESHUTDOWN. */
+#if !defined(ESHUTDOWN)
+#define ESHUTDOWN 10000
+#endif
+#define CONST_ESHUTDOWN ESHUTDOWN
+
+/* The value of ESOCKTNOSUPPORT. */
+#if !defined(ESOCKTNOSUPPORT)
+#define ESOCKTNOSUPPORT 10000
+#endif
+#define CONST_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
+
+/* The value of ESPIPE. */
+#if !defined(ESPIPE)
+#define ESPIPE 10000
+#endif
+#define CONST_ESPIPE ESPIPE
+
+/* The value of ESRCH. */
+#if !defined(ESRCH)
+#define ESRCH 10000
+#endif
+#define CONST_ESRCH ESRCH
+
+/* The value of ESRMNT. */
+#if !defined(ESRMNT)
+#define ESRMNT 10000
+#endif
+#define CONST_ESRMNT ESRMNT
+
+/* The value of ESTALE. */
+#if !defined(ESTALE)
+#define ESTALE 10000
+#endif
+#define CONST_ESTALE ESTALE
+
+/* The value of ETIME. */
+#if !defined(ETIME)
+#define ETIME 10000
+#endif
+#define CONST_ETIME ETIME
+
+/* The value of ETIMEDOUT. */
+#if !defined(ETIMEDOUT)
+#define ETIMEDOUT 10000
+#endif
+#define CONST_ETIMEDOUT ETIMEDOUT
+
+/* The value of ETOOMANYREFS. */
+#if !defined(ETOOMANYREFS)
+#define ETOOMANYREFS 10000
+#endif
+#define CONST_ETOOMANYREFS ETOOMANYREFS
+
+/* The value of ETXTBSY. */
+#if !defined(ETXTBSY)
+#define ETXTBSY 10000
+#endif
+#define CONST_ETXTBSY ETXTBSY
+
+/* The value of EUSERS. */
+#if !defined(EUSERS)
+#define EUSERS 10000
+#endif
+#define CONST_EUSERS EUSERS
+
+/* The value of EWOULDBLOCK. */
+#if !defined(EWOULDBLOCK)
+#define EWOULDBLOCK 10000
+#endif
+#define CONST_EWOULDBLOCK EWOULDBLOCK
+
+/* The value of EXDEV. */
+#if !defined(EXDEV)
+#define EXDEV 10000
+#endif
+#define CONST_EXDEV EXDEV
+
+/* The value of O_BINARY. */
+#if !defined(O_BINARY)
+#define O_BINARY 10000
+#endif
+#define CONST_O_BINARY O_BINARY
+
+/* The value of SIGINT. */
+#if !defined(SIGINT)
+#define SIGINT 10000
+#endif
+#define CONST_SIGINT SIGINT
+
+
+#endif
+
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/IntLikeInstance.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/IntLikeInstance.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/IntLikeInstance.h
@@ -0,0 +1,242 @@
+{- --------------------------------------------------------------------------
+// Macros to help make various instances for Int like types (Int8, ...).
+//
+// Primitives are defined by 2 forms of macros:
+//  - starting with PRIMS_  : name of Haskell function and primitive is the same
+//  - starting with PRIMS2_ : name of primitive is given explicitly, to allow sharing between primitives
+// --------------------------------------------------------------------------
+-}
+
+-- define conversion primitives
+#define PRIMS_CONVERSION_INTEGER(tycon,primIntegerTo,primToInteger) \
+foreign import prim primIntegerTo :: Integer -> tycon ; \
+foreign import prim primToInteger :: tycon -> Integer 
+
+#define PRIMS2_CONVERSION_INTEGER(tycon,primIntegerTo,primIntegerToNm,primToInteger,primToIntegerNm) \
+foreign import prim primIntegerToNm primIntegerTo :: Integer -> tycon ; \
+foreign import prim primToIntegerNm primToInteger :: tycon -> Integer 
+
+#define PRIMS_CONVERSION_INT(tycon,primIntTo,primToInt) \
+foreign import prim primIntTo     :: Int -> tycon ; \
+foreign import prim primToInt     :: tycon -> Int 
+
+
+-- define Eq primitives
+#define PRIMS_EQ(tycon,primEq,primNe) \
+foreign import prim primEq      :: tycon -> tycon -> Bool ; \
+foreign import prim primNe      :: tycon -> tycon -> Bool 
+
+#define PRIMS2_EQ(tycon,primEq,primEqNm,primNe,primNeNm) \
+foreign import prim primEqNm primEq     :: tycon -> tycon -> Bool ; \
+foreign import prim primNeNm primNe     :: tycon -> tycon -> Bool
+
+
+-- define Eq instance
+#define INSTANCE_EQ(tycon,primEq,primNe) \
+instance Eq tycon where \
+  { (==) = primEq ; \
+  	(/=) = primNe \
+  }
+
+
+-- define Ord primitives
+
+#define PRIMS_ORD(tycon,primCmp,primLt,primGt,primLe,primGe) \
+foreign import prim primCmp     :: tycon -> tycon -> Ordering ; \
+foreign import prim primLt      :: tycon -> tycon -> Bool ; \
+foreign import prim primGt      :: tycon -> tycon -> Bool ; \
+foreign import prim primLe      :: tycon -> tycon -> Bool ; \
+foreign import prim primGe      :: tycon -> tycon -> Bool 
+
+#define PRIMS2_ORD(tycon,primCmp,primCmpNm,primLt,primLtNm,primGt,primGtNm,primLe,primLeNm,primGe,primGeNm) \
+foreign import prim primCmpNm primCmp     :: tycon -> tycon -> Ordering ; \
+foreign import prim primLtNm primLt      :: tycon -> tycon -> Bool ; \
+foreign import prim primGtNm primGt      :: tycon -> tycon -> Bool ; \
+foreign import prim primLeNm primLe      :: tycon -> tycon -> Bool ; \
+foreign import prim primGeNm primGe      :: tycon -> tycon -> Bool 
+
+
+-- define Ord instance
+
+#define INSTANCE_ORD(tycon,primCmp,primLt,primGt,primLe,primGe) \
+instance Ord tycon where \
+  { compare = primCmp \
+  ; (<) = primLt \
+  ; (>) = primGt \
+  ; (<=) = primLe \
+  ; (>=) = primGe \
+  }
+
+
+-- define Bounded primitives
+#define PRIMS_BOUNDED(tycon,primMin,primMax) \
+foreign import prim primMin     :: tycon ; \
+foreign import prim primMax     :: tycon 
+
+
+-- define Bounded instance
+#define INSTANCE_BOUNDED(tycon,primMin,primMax) \
+instance Bounded tycon where \
+  { minBound = primMin \
+  ; maxBound = primMax \
+  }
+
+
+-- define Num primitives
+#define PRIMS_NUM(tycon,primAdd,primSub,primMul,primNeg) \
+foreign import prim primAdd       :: tycon -> tycon -> tycon ; \
+foreign import prim primSub       :: tycon -> tycon -> tycon ; \
+foreign import prim primMul       :: tycon -> tycon -> tycon ; \
+foreign import prim primNeg       :: tycon -> tycon 
+
+#define PRIMS2_NUM(tycon,primAdd,primAddNm,primSub,primSubNm,primMul,primMulNm,primNeg,primNegNm) \
+foreign import prim primAddNm 			primAdd       :: tycon -> tycon -> tycon ; \
+foreign import prim primSubNm 			primSub       :: tycon -> tycon -> tycon ; \
+foreign import prim primMulNm 			primMul       :: tycon -> tycon -> tycon ; \
+foreign import prim primNegNm 			primNeg       :: tycon -> tycon 
+
+
+-- define Num instance
+#define INSTANCE_NUM(tycon,primAdd,primSub,primMul,primNeg,primIntegerTo,primIntTo) \
+instance Num tycon where \
+  { (+)         = primAdd \
+  ; (-)         = primSub \
+  ; (*)         = primMul \
+  ; negate      = primNeg \
+  ; fromInteger = primIntegerTo \
+  ; fromInt     = primIntTo \
+  ; abs         = absReal \
+  ; signum      = signumReal \
+  }
+
+
+-- define Enum instance
+#define INSTANCE_ENUM(tycon,primToEnum,primFromEnum) \
+instance Enum tycon where \
+  { succ           = boundedSucc \
+  ; pred           = boundedPred \
+  ; toEnum         = primToEnum \
+  ; fromEnum       = primFromEnum \
+  ; enumFrom       = boundedEnumFrom \
+  ; enumFromTo     = boundedEnumFromTo \
+  ; enumFromThen   = boundedEnumFromThen \
+  ; enumFromThenTo = boundedEnumFromThenTo \
+  }
+
+
+-- define Real instance
+#define INSTANCE_REAL(tycon) \
+instance Real tycon where \
+  { toRational x = toInteger x % 1 \
+  }
+
+
+-- define Integral primitives
+#define PRIMS_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem) \
+foreign import prim primDiv       :: tycon -> tycon -> tycon ; \
+foreign import prim primMod       :: tycon -> tycon -> tycon ; \
+foreign import prim primQuot      :: tycon -> tycon -> tycon ; \
+foreign import prim primRem       :: tycon -> tycon -> tycon 
+
+#define PRIMS2_INTEGRAL1(tycon,primDiv,primDivNm,primMod,primModNm,primQuot,primQuotNm,primRem,primRemNm) \
+foreign import prim primDivNm 			primDiv       :: tycon -> tycon -> tycon ; \
+foreign import prim primModNm 			primMod       :: tycon -> tycon -> tycon ; \
+foreign import prim primQuotNm 			primQuot      :: tycon -> tycon -> tycon ; \
+foreign import prim primRemNm 			primRem       :: tycon -> tycon -> tycon 
+
+#define PRIMS_INTEGRAL2(tycon,primDiv,primMod,primDivMod,primQuot,primRem,primQuotRem) \
+PRIMS_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem) ; \
+foreign import prim primDivMod    :: tycon -> tycon -> (tycon,tycon) ; \
+foreign import prim primQuotRem   :: tycon -> tycon -> (tycon,tycon) 
+
+#define PRIMS2_INTEGRAL2(tycon,primDiv,primDivNm,primMod,primModNm,primDivMod,primDivModNm,primQuot,primQuotNm,primRem,primRemNm,primQuotRem,primQuotRemNm) \
+PRIMS2_INTEGRAL1(tycon,primDiv,primDivNm,primMod,primModNm,primQuot,primQuotNm,primRem,primQuotRemNm) ; \
+foreign import prim primDivModNm 	primDivMod    :: tycon -> tycon -> (tycon,tycon) ; \
+foreign import prim primQuotRemNm 	primQuotRem   :: tycon -> tycon -> (tycon,tycon) 
+
+
+-- define Integral instance, assume default for divMod
+#define INSTANCE_INTEGRAL1(tycon,primDiv,primMod,primQuot,primRem,primToInteger,primToInt) \
+instance Integral tycon where \
+  { quotRem d m \
+              = (primQuot d m, primRem d m) \
+  ; div       = primDiv \
+  ; quot      = primQuot \
+  ; rem       = primRem \
+  ; mod       = primMod \
+  ; toInteger = primToInteger \
+  ; toInt     = primToInt \
+  }
+
+#define INSTANCE_INTEGRAL2(tycon,primDiv,primMod,primDivMod,primQuot,primRem,primQuotRem,primToInteger,primToInt) \
+instance Integral tycon where \
+  { divMod    = primDivMod \
+  ; quotRem   = primQuotRem \
+  ; div       = primDiv \
+  ; quot      = primQuot \
+  ; rem       = primRem \
+  ; mod       = primMod \
+  ; toInteger = primToInteger \
+  ; toInt     = primToInt \
+  }
+
+
+-- define Show instance
+#define INSTANCE_SHOW(tycon) \
+instance Show tycon where \
+  { show = show . toInteger \
+  }
+
+
+-- define Read instance
+#define INSTANCE_READ(tycon) \
+instance Read tycon where \
+  { readsPrec p = readSigned readDec \
+  }
+
+
+-- define Bits primitives
+#define PRIMS_BITLOGIC(tycon,primAnd,primOr,primXor) \
+foreign import prim primAnd       	:: tycon -> tycon -> tycon ; \
+foreign import prim primOr       	:: tycon -> tycon -> tycon ; \
+foreign import prim primXor      	:: tycon -> tycon -> tycon
+
+#define PRIMS_BITSHIFT(tycon,primComplement,primShiftLeft,primShiftRight,primRotateLeft,primRotateRight) \
+foreign import prim primComplement	:: tycon -> tycon ; \
+foreign import prim primShiftLeft  	:: tycon -> Int -> tycon ; \
+foreign import prim primShiftRight 	:: tycon -> Int -> tycon ; \
+foreign import prim primRotateLeft  :: tycon -> Int -> tycon ; \
+foreign import prim primRotateRight :: tycon -> Int -> tycon
+
+#define PRIMS2_BITLOGIC(tycon,primAnd,primAndNm,primOr,primOrNm,primXor,primXorNm) \
+foreign import prim primAndNm       	primAnd       	:: tycon -> tycon -> tycon ; \
+foreign import prim primOrNm       		primOr       	:: tycon -> tycon -> tycon ; \
+foreign import prim primXorNm      		primXor      	:: tycon -> tycon -> tycon
+
+#define PRIMS2_BITSHIFT(tycon,primComplement,primComplementNm,primShiftLeft,primShiftLeftNm,primShiftRight,primShiftRightNm,primRotateLeft,primRotateLeftNm,primRotateRight,primRotateRightNm) \
+foreign import prim primComplementNm	primComplement	:: tycon -> tycon ; \
+foreign import prim primShiftLeftNm  	primShiftLeft  	:: tycon -> Int -> tycon ; \
+foreign import prim primShiftRightNm 	primShiftRight 	:: tycon -> Int -> tycon ; \
+foreign import prim primRotateLeftNm  	primRotateLeft  :: tycon -> Int -> tycon ; \
+foreign import prim primRotateRightNm 	primRotateRight :: tycon -> Int -> tycon
+
+-- define Bits instance
+#define INSTANCE_BITS1(tycon,size,signed,primAnd,primOr,primXor,primComplement,primShiftLeft,primShiftRight,primRotateLeft,primRotateRight) \
+instance Bits tycon where \
+  { (.&.)   	= primAnd \
+  ; (.|.)   	= primOr \
+  ; xor	   		= primXor \
+  ; complement  = primComplement \
+  ; shiftL      = primShiftLeft \
+  ; shiftR      = primShiftRight \
+  ; rotateL     = primRotateLeft \
+  ; rotateR     = primRotateRight \
+  ; bitSize _   = size \
+  ; isSigned _  = signed \
+  }
+
+
+
+
+
+
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/MachDeps.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/MachDeps.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/MachDeps.h
@@ -0,0 +1,125 @@
+/* ehclib/uhcbase/include/MachDeps.h.  Generated from MachDeps.h.in by configure.  */
+#ifndef MACHDEPS_H
+#define MACHDEPS_H
+
+#define SIZEOF_INTPTR_T 8
+#define SIZEOF_CHAR 1
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 8
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF_FLOAT 4
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_UNSIGNED_CHAR 1
+#define SIZEOF_UNSIGNED_SHORT 2
+#define SIZEOF_UNSIGNED_INT 4
+#define SIZEOF_UNSIGNED_LONG 8
+#define SIZEOF_UNSIGNED_LONG_LONG 8
+#define SIZEOF_VOID_P 8
+
+#define SIZEOF_DEV_T 4
+#define SIZEOF_INO_T 8
+#define SIZEOF_OFF_T 8
+#define SIZEOF_MODE_T 2
+#define SIZEOF_PID_T 4
+#define SIZEOF_SSIZE_T 8
+#define SIZEOF_GID_T 4
+#define SIZEOF_NLINK_T 2
+#define SIZEOF_UID_T 4
+#define SIZEOF_RLIM_T 8
+#define SIZEOF_CLOCK_T 8
+#define SIZEOF_TIME_T 8
+#define SIZEOF_SIZE_T 8
+#define SIZEOF_WCHAR_T 4
+
+#define SIZEOF_CC_T 1
+#define SIZEOF_SPEED_T 8
+#define SIZEOF_TCFLAG_T 8
+
+#define ALIGNOF_INTPTR_T 8
+#define ALIGNOF_CHAR 1
+#define ALIGNOF_SHORT 2
+#define ALIGNOF_INT 4
+#define ALIGNOF_LONG 8
+#define ALIGNOF_LONG_LONG 8
+#define ALIGNOF_FLOAT 4
+#define ALIGNOF_DOUBLE 8
+#define ALIGNOF_UNSIGNED_CHAR 1
+#define ALIGNOF_UNSIGNED_SHORT 2
+#define ALIGNOF_UNSIGNED_INT 4
+#define ALIGNOF_UNSIGNED_LONG 8
+#define ALIGNOF_UNSIGNED_LONG_LONG 8
+#define ALIGNOF_VOID_P 8
+
+#define ALIGNOF_UINT8_T 1
+#define ALIGNOF_UINT16_T 2
+#define ALIGNOF_UINT32_T 4
+#define ALIGNOF_UINT64_T 8
+
+#if SIZEOF_INTPTR_T == 8
+#define USE_64_BITS 1
+#define USE_32_BITS 0
+#else
+#define USE_64_BITS 0
+#define USE_32_BITS 1
+#endif
+
+#ifdef __UHC_TARGET_BC__
+#define BITSIZEOF_WORDTAG		1
+#else
+#define BITSIZEOF_WORDTAG		0
+#endif
+
+#define SIZEOF_HSCHAR           SIZEOF_INTPTR_T
+#define ALIGNMENT_HSCHAR        ALIGNOF_UINT32_T
+
+#define SIZEOF_HSINT            SIZEOF_INTPTR_T
+#define ALIGNMENT_HSINT         ALIGNOF_INTPTR_T
+
+#define SIZEOF_HSWORD			SIZEOF_INTPTR_T
+#define ALIGNMENT_HSWORD		ALIGNOF_INTPTR_T
+
+#define SIZEOF_HSDOUBLE			SIZEOF_DOUBLE
+#define ALIGNMENT_HSDOUBLE		ALIGNOF_DOUBLE
+
+#define SIZEOF_HSFLOAT			SIZEOF_FLOAT
+#define ALIGNMENT_HSFLOAT		ALIGNOF_FLOAT
+
+#define SIZEOF_HSPTR            SIZEOF_VOID_P
+#define ALIGNMENT_HSPTR         ALIGNOF_VOID_P
+
+#define SIZEOF_HSFUNPTR         SIZEOF_VOID_P
+#define ALIGNMENT_HSFUNPTR      ALIGNOF_VOID_P
+
+#define SIZEOF_HSFOREIGNPTR     SIZEOF_VOID_P
+#define ALIGNMENT_HSFOREIGNPTR  ALIGNOF_VOID_P
+
+#define SIZEOF_HSSTABLEPTR      SIZEOF_VOID_P
+#define ALIGNMENT_HSSTABLEPTR   ALIGNOF_VOID_P
+
+#define SIZEOF_INT8             8
+#define ALIGNMENT_INT8          ALIGNOF_UINT8_T
+
+#define SIZEOF_WORD8            8
+#define ALIGNMENT_WORD8         ALIGNOF_UINT8_T
+
+#define SIZEOF_INT16            16
+#define ALIGNMENT_INT16         ALIGNOF_UINT16_T
+
+#define SIZEOF_WORD16           16
+#define ALIGNMENT_WORD16        ALIGNOF_UINT16_T
+
+#define SIZEOF_INT32            32
+#define ALIGNMENT_INT32         ALIGNOF_UINT32_T
+
+#define SIZEOF_WORD32           32
+#define ALIGNMENT_WORD32        ALIGNOF_UINT32_T
+
+#define SIZEOF_INT64            64
+#define ALIGNMENT_INT64         ALIGNOF_UINT64_T
+
+#define SIZEOF_WORD64           64
+#define ALIGNMENT_WORD64        ALIGNOF_UINT64_T
+
+
+#endif
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/TupleInstance.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/TupleInstance.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/TupleInstance.h
@@ -0,0 +1,147 @@
+{- --------------------------------------------------------------------------
+// Macros to help make various instances for tuples.
+// A kind of poor mans deriving.
+//
+// --------------------------------------------------------------------------
+-}
+
+#define	COMMA	,
+
+{- --------------------------------------------------------------------------
+// 2 tuple, 1 unary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE2_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
+instance (clscon a, clscon b) => clscon (a,b) where \
+  { op1 op1preArg (a,b) op1postArg \
+      = pre \
+            op1subop a \
+        sep op1subop b \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// 3 tuple, 1 unary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE3_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
+instance (clscon a, clscon b, clscon c) => clscon (a,b,c) where \
+  { op1 op1preArg (a,b,c) op1postArg \
+      = pre \
+            op1subop a \
+        sep op1subop b \
+        sep op1subop c \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// 4 tuple, 1 unary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE4_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
+instance (clscon a, clscon b, clscon c, clscon d) => clscon (a,b,c,d) where \
+  { op1 op1preArg (a,b,c,d) op1postArg \
+      = pre \
+            op1subop a \
+        sep op1subop b \
+        sep op1subop c \
+        sep op1subop d \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// 5 tuple, 1 unary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE5_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
+instance (clscon a, clscon b, clscon c, clscon d, clscon e) => clscon (a,b,c,d,e) where \
+  { op1 op1preArg (a,b,c,d,e) op1postArg \
+      = pre \
+            op1subop a \
+        sep op1subop b \
+        sep op1subop c \
+        sep op1subop d \
+        sep op1subop e \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// Set of 2..n tuple, 1 unary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE_UNOP1_INSTANCES(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
+{ TUPLE2_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
+  TUPLE3_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
+  TUPLE4_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) ;\
+  TUPLE5_UNOP1_INSTANCE(clscon,op1,op1preArg,op1postArg,op1subop,pre,sep,post) \
+}
+
+{- --------------------------------------------------------------------------
+// 2 tuple, 1 binary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE2_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
+instance (clscon a, clscon b) => clscon (a,b) where \
+  { (a1,b1) op1 (a2,b2) \
+      = pre \
+            a1 op1subop a2 \
+        sep b1 op1subop b2 \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// 3 tuple, 1 binary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE3_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
+instance (clscon a, clscon b, clscon c) => clscon (a,b,c) where \
+  { (a1,b1,c1) op1 (a2,b2,c2) \
+      = pre \
+            a1 op1subop a2 \
+        sep b1 op1subop b2 \
+        sep c1 op1subop c2 \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// 4 tuple, 1 binary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE4_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
+instance (clscon a, clscon b, clscon c, clscon d) => clscon (a,b,c,d) where \
+  { (a1,b1,c1,d1) op1 (a2,b2,c2,d2) \
+      = pre \
+            a1 op1subop a2 \
+        sep b1 op1subop b2 \
+        sep c1 op1subop c2 \
+        sep d1 op1subop d2 \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// 5 tuple, 1 binary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE5_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
+instance (clscon a, clscon b, clscon c, clscon d, clscon e) => clscon (a,b,c,d,e) where \
+  { (a1,b1,c1,d1,e1) op1 (a2,b2,c2,d2,e2) \
+      = pre \
+            a1 op1subop a2 \
+        sep b1 op1subop b2 \
+        sep c1 op1subop c2 \
+        sep d1 op1subop d2 \
+        sep e1 op1subop e2 \
+        post \
+  }
+
+{- --------------------------------------------------------------------------
+// Set of 2..n tuple, 1 binary op
+// --------------------------------------------------------------------------
+-}
+#define TUPLE_BINOP1_INSTANCES(clscon,op1,op1subop,pre,sep,post) \
+{ TUPLE2_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
+  TUPLE3_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
+  TUPLE4_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) ;\
+  TUPLE5_BINOP1_INSTANCE(clscon,op1,op1subop,pre,sep,post) \
+}
+
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/Typeable.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/Typeable.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/Typeable.h
@@ -0,0 +1,149 @@
+{- --------------------------------------------------------------------------
+// Macros to help make Typeable instances.
+//
+// INSTANCE_TYPEABLEn(tc,tcname,"tc") defines
+//
+//	instance Typeable/n/ tc
+//	instance Typeable a => Typeable/n-1/ (tc a)
+//	instance (Typeable a, Typeable b) => Typeable/n-2/ (tc a b)
+//	...
+//	instance (Typeable a1, ..., Typeable an) => Typeable (tc a1 ... an)
+// --------------------------------------------------------------------------
+-}
+
+#ifndef TYPEABLE_H
+#define TYPEABLE_H
+
+#define INSTANCE_TYPEABLE0(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable tycon where { typeOf _ = mkTyConApp tcname [] }
+
+#ifdef __GLASGOW_HASKELL__
+
+--  // For GHC, the extra instances follow from general instance declarations
+--  // defined in Data.Typeable.
+
+#define INSTANCE_TYPEABLE1(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }
+
+#define INSTANCE_TYPEABLE2(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }
+
+#define INSTANCE_TYPEABLE3(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable3 tycon where { typeOf3 _ = mkTyConApp tcname [] }
+
+#define INSTANCE_TYPEABLE4(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable4 tycon where { typeOf4 _ = mkTyConApp tcname [] }
+
+#define INSTANCE_TYPEABLE5(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable5 tycon where { typeOf5 _ = mkTyConApp tcname [] }
+
+#define INSTANCE_TYPEABLE6(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable6 tycon where { typeOf6 _ = mkTyConApp tcname [] }
+
+#define INSTANCE_TYPEABLE7(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable7 tycon where { typeOf7 _ = mkTyConApp tcname [] }
+
+#else /* !__GLASGOW_HASKELL__ */
+
+#define INSTANCE_TYPEABLE1(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable (tycon a) where { typeOf = typeOfDefault }
+
+#define INSTANCE_TYPEABLE2(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable1 (tycon a) where { \
+  typeOf1 = typeOf1Default }; \
+instance (Typeable a, Typeable b) => Typeable (tycon a b) where { \
+  typeOf = typeOfDefault }
+
+#define INSTANCE_TYPEABLE3(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable3 tycon where { typeOf3 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable2 (tycon a) where { \
+  typeOf2 = typeOf2Default }; \
+instance (Typeable a, Typeable b) => Typeable1 (tycon a b) where { \
+  typeOf1 = typeOf1Default }; \
+instance (Typeable a, Typeable b, Typeable c) => Typeable (tycon a b c) where { \
+  typeOf = typeOfDefault }
+
+#define INSTANCE_TYPEABLE4(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable4 tycon where { typeOf4 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable3 (tycon a) where { \
+  typeOf3 = typeOf3Default }; \
+instance (Typeable a, Typeable b) => Typeable2 (tycon a b) where { \
+  typeOf2 = typeOf2Default }; \
+instance (Typeable a, Typeable b, Typeable c) => Typeable1 (tycon a b c) where { \
+  typeOf1 = typeOf1Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable (tycon a b c d) where { \
+  typeOf = typeOfDefault }
+
+#define INSTANCE_TYPEABLE5(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable5 tycon where { typeOf5 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable4 (tycon a) where { \
+  typeOf4 = typeOf4Default }; \
+instance (Typeable a, Typeable b) => Typeable3 (tycon a b) where { \
+  typeOf3 = typeOf3Default }; \
+instance (Typeable a, Typeable b, Typeable c) => Typeable2 (tycon a b c) where { \
+  typeOf2 = typeOf2Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable1 (tycon a b c d) where { \
+  typeOf1 = typeOf1Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable (tycon a b c d e) where { \
+  typeOf = typeOfDefault }
+
+#define INSTANCE_TYPEABLE6(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable6 tycon where { typeOf6 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable5 (tycon a) where { \
+  typeOf5 = typeOf5Default }; \
+instance (Typeable a, Typeable b) => Typeable4 (tycon a b) where { \
+  typeOf4 = typeOf4Default }; \
+instance (Typeable a, Typeable b, Typeable c) => Typeable3 (tycon a b c) where { \
+  typeOf3 = typeOf3Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable2 (tycon a b c d) where { \
+  typeOf2 = typeOf2Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable1 (tycon a b c d e) where { \
+  typeOf1 = typeOf1Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f) => Typeable (tycon a b c d e f) where { \
+  typeOf = typeOfDefault }
+
+#define INSTANCE_TYPEABLE7(tycon,tcname,str) \
+tcname = mkTyCon str; \
+instance Typeable7 tycon where { typeOf7 _ = mkTyConApp tcname [] }; \
+instance Typeable a => Typeable6 (tycon a) where { \
+  typeOf6 = typeOf6Default }; \
+instance (Typeable a, Typeable b) => Typeable5 (tycon a b) where { \
+  typeOf5 = typeOf5Default }; \
+instance (Typeable a, Typeable b, Typeable c) => Typeable4 (tycon a b c) where { \
+  typeOf4 = typeOf4Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d) => Typeable3 (tycon a b c d) where { \
+  typeOf3 = typeOf3Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e) => Typeable2 (tycon a b c d e) where { \
+  typeOf2 = typeOf2Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f) => Typeable1 (tycon a b c d e f) where { \
+  typeOf1 = typeOf1Default }; \
+instance (Typeable a, Typeable b, Typeable c, Typeable d, Typeable e, Typeable f, Typeable g) => Typeable (tycon a b c d e f g) where { \
+  typeOf = typeOfDefault }
+
+#endif /* !__GLASGOW_HASKELL__ */
+
+#endif
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/dirUtils.h b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/dirUtils.h
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/dirUtils.h
@@ -0,0 +1,11 @@
+/* 
+ * (c) The University of Glasgow 2002
+ *
+ * Directory Runtime Support
+ */
+#ifndef __DIRUTILS_H__
+#define __DIRUTILS_H__
+
+extern int __hscore_readdir(DIR *dirPtr, struct dirent **pDirEnt);
+
+#endif /* __DIRUTILS_H__ */
diff --git a/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/installed-pkg-config b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/installed-pkg-config
new file mode 100644
--- /dev/null
+++ b/103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/installed-pkg-config
@@ -0,0 +1,2 @@
+exposed-modules: Control.Monad Data.Bits Data.Char Data.Either Data.Int Data.IORef Data.List Data.Maybe Data.Typeable Data.Word Debug.Trace Foreign.C.Error Foreign.C.String Foreign.C.Types Foreign.C Foreign.ForeignPtr Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Error Foreign.Marshal.Pool Foreign.Marshal.Utils Foreign.Marshal Foreign.Ptr Foreign.StablePtr Foreign.Storable Foreign System.IO.Error System.IO.Fix System.IO.Unsafe System.IO System.Posix.Internals System.Posix.Types UHC.Array UHC.Base UHC.Bits UHC.Bounded UHC.BoxArray UHC.ByteArray UHC.Char UHC.Conc UHC.Enum UHC.Eq UHC.Float UHC.ForeignPtr UHC.GC UHC.Generics.Tuple UHC.Generics UHC.Handle UHC.Int UHC.IO UHC.IOBase UHC.Ix UHC.LazyST UHC.MutVar UHC.MVar UHC.OldException UHC.OldIO UHC.Ord UHC.Prims UHC.Ptr UHC.Read UHC.Real UHC.Run UHC.Show UHC.ST UHC.StablePtr UHC.StackTrace UHC.Storable UHC.STRef UHC.Types UHC.Weak UHC.WeakPtr UHC.Word Unsafe.Coerce
+build-depends: 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,14 @@
 # Changelog
 
+## 1.1.9.1 - 20151013
+
+- [guarantees] This is a pre-release as far as below extensions is concerned.
+- [backend] Core/CoreRun backend now better supported (e.g. via uhcl/uhcr) to allow CoreRun modules to be run, without requiring -Operwholecore (Core whole program linking). For a "hello world" only...
+- [extension] Local instances have been resurrected, paper submitted to flops2016 describes what can be done. Still bugs and design issues to be sorted out.
+- [extension] Generic deriving now by default off, can be turned on via deriving Generic addition to datatype def.
+- [compatibility] Compatibility with ghc <7.10 versions no longer guaranteed.
+- [name analysis] Name analysis & dependency analysis more fine-grained, required by local instances.
+
 ## 1.1.9.0 - 20150430
 
 - [compatibility] ghc 7.10 compat, name clash of 'Alt' apparently now globally visible
diff --git a/src-main/EHCRun.hs b/src-main/EHCRun.hs
--- a/src-main/EHCRun.hs
+++ b/src-main/EHCRun.hs
@@ -15,6 +15,7 @@
 import Data.List
 import qualified Data.ByteString.Char8 as B
 
+
 {-# LINE 25 "src/ehc/EHCRun.chs" #-}
 -- | Top level main. TBD: hooks & customization
 main :: IO ()
@@ -25,22 +26,24 @@
                           {ehcProgName = mkFPath progName}
         oo@(o,n,errs) = ehcrunCmdLineOptsApply args opts0
         opts          = maybe opts0 id o
+        exts          = [ "bcrr", "tcrr", "bcr", "tcr" ]
 
     case ehcOptImmQuit opts of
-      Just immq     -> handleImmQuitOption ehcrunCmdLineOpts ["rcr", "crr", "cr"] immq opts
+      Just immq     -> handleImmQuitOption ehcrunCmdLineOpts exts immq opts
       _             -> case (n,errs) of
         ([fname], []) -> do
           let (bname,ext) = splitExtension fname
           case ext of
-            ".rcr" -> runRCR opts fname
-            ".crr" -> runRCR opts fname
-            ".cr"  -> mainEHC $ opts
+            e | e `elem` map ('.':) exts
+                   -> mainEHC $ opts
                         { ehcOptMbTarget = JustOk Target_None_Core_AsIs
-                        , ehcOptCoreOpts = CoreOpt_Run : ehcOptCoreOpts opts
-                        , ehcOptOptimizationScope = OptimizationScope_WholeCore
+                        , ehcOptCoreOpts = {- CoreOpt_RunTrace : -} CoreOpt_Run : CoreOpt_LoadOnly : ehcOptCoreOpts opts
+                        -- required only for original compiler driver
+                        -- , ehcOptOptimizationScope = OptimizationScope_WholeCore
                         , ehcOptVerbosity = VerboseQuiet
+                        , ehcOptAltDriver = not $ ehcOptAltDriver opts
                         }
-            _      -> return ()
+            _      -> handleImmQuitOption ehcrunCmdLineOpts exts ImmediateQuitOption_Help opts
         (_      , es) -> do
           putStr (head errs)
           exitFailure
diff --git a/src/UHC/Light/Compiler/AbstractCore.hs b/src/UHC/Light/Compiler/AbstractCore.hs
--- a/src/UHC/Light/Compiler/AbstractCore.hs
+++ b/src/UHC/Light/Compiler/AbstractCore.hs
@@ -365,7 +365,7 @@
 type ACoreAppLikeMetaBound = (ACoreBindAspectKeyS,MetaLev,CLbl)
 
 {-# LINE 323 "src/ehc/AbstractCore.chs" #-}
-instance AbstractCore e m b bound boundmeta bcat mbind t p pr pf a => AppLike e boundmeta {- () () -} where
+instance {-# OVERLAPPABLE  #-} AbstractCore e m b bound boundmeta bcat mbind t p pr pf a => AppLike e boundmeta {- () () -} where
   app1App       = acore1App
   appTop        = id
   appCon        = acoreVar . mkHNm
@@ -382,7 +382,7 @@
                      return (f,a)
 
 {-# LINE 354 "src/ehc/AbstractCore.chs" #-}
-instance AbstractCore e m b bound boundmeta bcat mbind t p pr pf a => RecLike e boundmeta {- () () -} where
+instance {-# OVERLAPPABLE  #-} AbstractCore e m b bound boundmeta bcat mbind t p pr pf a => RecLike e boundmeta {- () () -} where
   recRow _ fs   = acoreTagTyTupBound CTagRec (acoreTyErr "AbstractCore.RecLike.recRow") [ acoreBound1MetaVal (acoreBoundmeta acbaspkeyDefault 0 (CLbl_Nm n)) e | (n,e) <- fs ]
 
   recMbRecRow  _= Nothing -- tyMbRecRowWithLkup (const Nothing)
@@ -1167,18 +1167,19 @@
   where c (RPat_Int   _ _ _) = True
         c (RPat_Char  _ _ _) = True
         c _                  = False
+raltIsConst _                = False
 
-{-# LINE 1404 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1405 "src/ehc/AbstractCore.chs" #-}
 raltIsConMany :: RAlt' e t b pr -> Bool
 raltIsConMany (RAlt_Alt (RPat_Con _ _ _ (RPatConBind_Many _) : _) _ _) = True
 raltIsConMany _                                                        = False
 
-{-# LINE 1410 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1411 "src/ehc/AbstractCore.chs" #-}
 raltIsIrrefutable :: RAlt' e t b pr -> Bool
 raltIsIrrefutable (RAlt_Alt (RPat_Irrefutable _ _ _ : _) _ _) = True
 raltIsIrrefutable _                                           = False
 
-{-# LINE 1416 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1417 "src/ehc/AbstractCore.chs" #-}
 raltMbBoolExpr :: RAlt' e t b pr -> Maybe (Maybe SrcConst)
 raltMbBoolExpr (RAlt_Alt (RPat_BoolExpr _ _ _ e : _) _ _)  = Just e
 raltMbBoolExpr _                                           = Nothing
@@ -1186,13 +1187,13 @@
 raltIsBoolExpr :: RAlt' e t b pr -> Bool
 raltIsBoolExpr = isJust . raltMbBoolExpr
 
-{-# LINE 1427 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1428 "src/ehc/AbstractCore.chs" #-}
 rpatConBindUnFlatten :: RPatConBind' e t b pr -> [RPatConBind' e t b pr] -> RPatConBind' e t b pr
 rpatConBindUnFlatten z []  = z
 rpatConBindUnFlatten _ [b] = b
 rpatConBindUnFlatten _ bs  = RPatConBind_Many bs
 
-{-# LINE 1438 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1439 "src/ehc/AbstractCore.chs" #-}
 acoreRPat2Pat :: (AbstractCore e m b bound boundmeta bcat mbind t p pr pf a) => RPat' e t b pr -> p
 acoreRPat2Pat p
   = case p of
@@ -1203,7 +1204,7 @@
       RPat_Char     n ty v    -> acorePatCharTy ty v
       RPat_BoolExpr n _  v _  -> acorePatBoolExpr  v
 
-{-# LINE 1452 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1453 "src/ehc/AbstractCore.chs" #-}
 acoreRPatConBind2PatConBind :: (AbstractCore e m b bound boundmeta bcat mbind t p pr pf a) => RPatConBind' e t b pr -> (pr,[pf])
 acoreRPatConBind2PatConBind b
   = case b of
@@ -1213,17 +1214,17 @@
 acoreRPatBind2PatFld :: (AbstractCore e m b bound boundmeta bcat mbind t p pr pf a) => RPatFld' e t b pr -> pf
 acoreRPatBind2PatFld (RPatFld_Fld l o _ p@(RPat_Var n _ _)) = acorePatFldTy (rcpTy p) (l,o) (rpatNmNm n)
 
-{-# LINE 1469 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1470 "src/ehc/AbstractCore.chs" #-}
 ctagTrue, ctagFalse :: EHCOpts -> CTag
 ctagTrue  opts = CTag (ehcOptBuiltin opts ehbnDataBool) (ehcOptBuiltin opts ehbnBoolTrue)  tagBoolTrue  0 0        -- this makes it hardcoded, ideally dependent on datatype def itself !!
 ctagFalse opts = CTag (ehcOptBuiltin opts ehbnDataBool) (ehcOptBuiltin opts ehbnBoolFalse) tagBoolFalse 0 0        -- this makes it hardcoded, ideally dependent on datatype def itself !!
 
-{-# LINE 1481 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1482 "src/ehc/AbstractCore.chs" #-}
 ctagCons, ctagNil :: EHCOpts -> CTag
 ctagCons opts = CTag (ehcOptBuiltin opts ehbnDataList) (ehcOptBuiltin opts ehbnDataListAltCons) tagListCons 2 2       -- this makes it hardcoded, ideally dependent on datatype def itself !!
 ctagNil  opts = CTag (ehcOptBuiltin opts ehbnDataList) (ehcOptBuiltin opts ehbnDataListAltNil ) tagListNil  0 2       -- this makes it hardcoded, ideally dependent on datatype def itself !!
 
-{-# LINE 1491 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1492 "src/ehc/AbstractCore.chs" #-}
 -- | Reason to fail a case alternative
 data CaseAltFailReason
   = CaseAltFailReason_Absence                   -- failed because of absence
@@ -1236,23 +1237,23 @@
   pp (CaseAltFailReason_Continue i) = pp i
   pp (CaseAltFailReason_Absence   ) = pp "absent"
 
-{-# LINE 1505 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1506 "src/ehc/AbstractCore.chs" #-}
 cafailHasId :: CaseAltFailReason -> (Bool,UID)
 cafailHasId (CaseAltFailReason_Absence   ) = (False,uidUnused)
 cafailHasId (CaseAltFailReason_Continue i) = (True ,i)
 
-{-# LINE 1511 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1512 "src/ehc/AbstractCore.chs" #-}
 deriving instance Typeable CaseAltFailReason
 deriving instance Data CaseAltFailReason
 
-{-# LINE 1520 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1521 "src/ehc/AbstractCore.chs" #-}
 data AppFunKind
   = AppFunKind_NoApp                    -- inlined Nothing
   | AppFunKind_Fun  ACoreBindRef
   | AppFunKind_Tag  CTag
   | AppFunKind_FFI
 
-{-# LINE 1532 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1533 "src/ehc/AbstractCore.chs" #-}
 
 -- | What kind of Expr?
 data WhatExpr
@@ -1269,7 +1270,7 @@
   | ExprIsBind 	HsName
   deriving Eq
 
-{-# LINE 1550 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1551 "src/ehc/AbstractCore.chs" #-}
 -- | is an var?
 whatExprMbVar :: WhatExpr -> Maybe HsName
 whatExprMbVar (ExprIsVar a) = Just a
@@ -1300,7 +1301,7 @@
 whatExprAppArity (ExprIsApp a _) = a
 whatExprAppArity _               = 0
 
-{-# LINE 1582 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1583 "src/ehc/AbstractCore.chs" #-}
 whatExprIsWHNF :: WhatExpr -> Bool
 whatExprIsWHNF (ExprIsLam _ _) 	= True
 whatExprIsWHNF (ExprIsVar _) 	= True
@@ -1309,7 +1310,7 @@
 whatExprIsWHNF ExprIsOtherWHNF 	= True
 whatExprIsWHNF _ 				= False
 
-{-# LINE 1592 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1593 "src/ehc/AbstractCore.chs" #-}
 whatExprIsBind :: WhatExpr -> Bool
 whatExprIsBind = isJust . whatExprMbBind
 {-# INLINE whatExprIsBind #-}
@@ -1324,14 +1325,14 @@
 whatExprIsTup _             = False
 
 
-{-# LINE 1608 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1609 "src/ehc/AbstractCore.chs" #-}
 -- | Is Expr a FFI?
 whatExprIsFFI :: WhatExpr -> Bool
 whatExprIsFFI (ExprIsFFI  ) = True
 whatExprIsFFI _             = False
 
 
-{-# LINE 1626 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1627 "src/ehc/AbstractCore.chs" #-}
 instance Serialize ACoreBindAspectKey where
   sput (ACoreBindAspectKey_Default       ) = sputWord8 0
   sput (ACoreBindAspectKey_Strict        ) = sputWord8 1
@@ -1351,12 +1352,12 @@
         5 -> return ACoreBindAspectKey_Core
         7 -> return ACoreBindAspectKey_FusionRole
 
-{-# LINE 1657 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1658 "src/ehc/AbstractCore.chs" #-}
 instance Serialize ACoreBindRef where
   sput (ACoreBindRef a b) = sput a >> sput b
   sget = liftM2 ACoreBindRef sget sget
 
-{-# LINE 1663 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1664 "src/ehc/AbstractCore.chs" #-}
 instance Serialize CaseAltFailReason where
   sput (CaseAltFailReason_Continue a) = sputWord8 0 >> sput a
   sput (CaseAltFailReason_Absence   ) = sputWord8 1
@@ -1366,13 +1367,13 @@
       0 -> liftM  CaseAltFailReason_Continue sget
       1 -> return CaseAltFailReason_Absence
 
-{-# LINE 1678 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1679 "src/ehc/AbstractCore.chs" #-}
 instance PP CSubstKey where
   pp (CSKey_UID i)  = pp i
   pp (CSKey_Nm  n)  = pp n
   pp (CSKey_Ref r)  = pp r
 
-{-# LINE 1685 "src/ehc/AbstractCore.chs" #-}
+{-# LINE 1686 "src/ehc/AbstractCore.chs" #-}
 instance (PP expr, PP ty) => PP (CSubstInfo' expr metaval bind bindasp ty) where
   pp (CSITy         t    )  = pp t
   pp (CSIExpr       e    )  = pp e
diff --git a/src/UHC/Light/Compiler/AbstractCore/Utils.hs b/src/UHC/Light/Compiler/AbstractCore/Utils.hs
--- a/src/UHC/Light/Compiler/AbstractCore/Utils.hs
+++ b/src/UHC/Light/Compiler/AbstractCore/Utils.hs
@@ -35,8 +35,6 @@
 import qualified Data.Set as Set
 import Data.Maybe
 import UHC.Util.Utils
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 
 
 
diff --git a/src/UHC/Light/Compiler/AnaDomain.hs b/src/UHC/Light/Compiler/AnaDomain.hs
--- a/src/UHC/Light/Compiler/AnaDomain.hs
+++ b/src/UHC/Light/Compiler/AnaDomain.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain.ag)
 module UHC.Light.Compiler.AnaDomain(QualAGItf (..), TyAGItf (..), CoeAGItf (..)
 , AnaEval (..), AnaEvalL, RelevTy (..), RelevTyL, MbRelevTy, RelevQual (..), RelevQualL, RelevCoe (..), RelevCoeL
 , RQuant (..)
@@ -32,13 +32,9 @@
 import Control.Monad.State
 import Control.Applicative
 import UHC.Util.Utils
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import Control.Monad hiding (join)
 import UHC.Util.Serialize
 import UHC.Util.Control.Monad (liftM6)
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/AnaDomain/Ftv.hs b/src/UHC/Light/Compiler/AnaDomain/Ftv.hs
--- a/src/UHC/Light/Compiler/AnaDomain/Ftv.hs
+++ b/src/UHC/Light/Compiler/AnaDomain/Ftv.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Ftv.)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Ftv.)
 module UHC.Light.Compiler.AnaDomain.Ftv(relevTyFtv
 , relevQualFtv
 , relevCoeFtv) where
diff --git a/src/UHC/Light/Compiler/AnaDomain/Pretty.hs b/src/UHC/Light/Compiler/AnaDomain/Pretty.hs
--- a/src/UHC/Light/Compiler/AnaDomain/Pretty.hs
+++ b/src/UHC/Light/Compiler/AnaDomain/Pretty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Pret)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Pret)
 module UHC.Light.Compiler.AnaDomain.Pretty(ppRelevTy
 , ppRelevQual
 , ppAnaEval
diff --git a/src/UHC/Light/Compiler/AnaDomain/Trf/Instantiate.hs b/src/UHC/Light/Compiler/AnaDomain/Trf/Instantiate.hs
--- a/src/UHC/Light/Compiler/AnaDomain/Trf/Instantiate.hs
+++ b/src/UHC/Light/Compiler/AnaDomain/Trf/Instantiate.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Trf/)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Trf/)
 module UHC.Light.Compiler.AnaDomain.Trf.Instantiate(relevtyInst) where
 
 import UHC.Light.Compiler.Base.Common
diff --git a/src/UHC/Light/Compiler/AnaDomain/Trf/Subst.hs b/src/UHC/Light/Compiler/AnaDomain/Trf/Subst.hs
--- a/src/UHC/Light/Compiler/AnaDomain/Trf/Subst.hs
+++ b/src/UHC/Light/Compiler/AnaDomain/Trf/Subst.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Trf/)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/AnaDomain/Trf/)
 module UHC.Light.Compiler.AnaDomain.Trf.Subst(relevtyAppVarLookup
 , relevqualAppVarLookup
 , relevcoeAppVarLookup) where
diff --git a/src/UHC/Light/Compiler/AnaDomain/Utils.hs b/src/UHC/Light/Compiler/AnaDomain/Utils.hs
--- a/src/UHC/Light/Compiler/AnaDomain/Utils.hs
+++ b/src/UHC/Light/Compiler/AnaDomain/Utils.hs
@@ -23,9 +23,6 @@
 import UHC.Util.Utils
 import Control.Monad.State
 import Control.Applicative
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
-import UHC.Light.Compiler.AnaDomain.Pretty
 
 
 
diff --git a/src/UHC/Light/Compiler/Base/CfgPP.hs b/src/UHC/Light/Compiler/Base/CfgPP.hs
--- a/src/UHC/Light/Compiler/Base/CfgPP.hs
+++ b/src/UHC/Light/Compiler/Base/CfgPP.hs
@@ -1,6 +1,8 @@
+{-# LANGUAGE ExistentialQuantification #-}
+
 module UHC.Light.Compiler.Base.CfgPP
 ( ppScanoptsNm
-, CfgPP (..)
+, CfgPP' (..), CfgPP (..)
 , CfgPP_Plain (..), CfgPP_Core (..), CfgPP_Grin (..), CfgPP_TyCore (..)
 , ppCoreNm
 , ppCTag', ppCTagExtensive'
@@ -16,14 +18,15 @@
 import UHC.Util.Pretty
 import UHC.Util.ScanUtils
 
-{-# LINE 39 "src/ehc/Base/CfgPP.chs" #-}
+{-# LINE 43 "src/ehc/Base/CfgPP.chs" #-}
 -- | Prettyprint 'HsName' with scanopts, taking care of properly escaping based on scan info (used when parsing)
 ppScanoptsNm :: ScanOpts -> HsName -> PP_Doc
 ppScanoptsNm copts n = fst $ ppHsnEscapeWith '$' (hsnOkChars '$' $ copts) (hsnNotOkStrs copts) (`Set.member` leaveAsIs) n
     where leaveAsIs = Set.fromList [hsnRowEmpty]
 
-{-# LINE 50 "src/ehc/Base/CfgPP.chs" #-}
-class CfgPP x where
+{-# LINE 54 "src/ehc/Base/CfgPP.chs" #-}
+-- | API for PP config
+class CfgPP' x where
   cfgppHsName 		:: x -> HsName -> PP_Doc
   cfgppConHsName 	:: x -> HsName -> PP_Doc
   cfgppUID    		:: x -> UID    -> PP_Doc
@@ -44,17 +47,19 @@
   cfgppFollowAST _              			= False
   cfgppTyPPVarDflt							= \x pre tv mbpp -> cfgppVarHsName x (Just $ mkHNm $ pre ++ "_" ++ show tv) (Just tv) Nothing mbpp
 
-{-# LINE 73 "src/ehc/Base/CfgPP.chs" #-}
+data CfgPP = forall x . CfgPP' x => CfgPP x
+
+{-# LINE 80 "src/ehc/Base/CfgPP.chs" #-}
 data CfgPP_Plain   = CfgPP_Plain
 data CfgPP_Core    = CfgPP_Core
 data CfgPP_TyCore  = CfgPP_TyCore
 data CfgPP_Grin    = CfgPP_Grin
 
-{-# LINE 80 "src/ehc/Base/CfgPP.chs" #-}
-instance CfgPP CfgPP_Plain
+{-# LINE 87 "src/ehc/Base/CfgPP.chs" #-}
+instance CfgPP' CfgPP_Plain
 
-{-# LINE 84 "src/ehc/Base/CfgPP.chs" #-}
-instance CfgPP CfgPP_Core where
+{-# LINE 91 "src/ehc/Base/CfgPP.chs" #-}
+instance CfgPP' CfgPP_Core where
   {-
   cfgppHsName    _ n 				= fst $ ppHsnEscapeWith '$' (hsnOkChars '$' $ copts) (hsnNotOkStrs copts) (`Set.member` leaveAsIs) n
     where copts = coreScanOpts emptyEHCOpts
@@ -67,21 +72,21 @@
   cfgppVarHsName x _ (Just u) _ _ 	= cfgppUID x u
   cfgppVarHsName x mn mu mi mp      = cfgppVarHsNameFallback x mn mu mi mp
 
-{-# LINE 99 "src/ehc/Base/CfgPP.chs" #-}
+{-# LINE 106 "src/ehc/Base/CfgPP.chs" #-}
 ppNmTyCore = ppHsnEscaped (Right $ Set.fromList ['0'..'9']) '$' (hsnEscapeeChars '$' tycoreScanOpts)
 
-instance CfgPP CfgPP_TyCore where
+instance CfgPP' CfgPP_TyCore where
   cfgppHsName    _ = ppNmTyCore
 
-{-# LINE 106 "src/ehc/Base/CfgPP.chs" #-}
-instance CfgPP CfgPP_Grin where
+{-# LINE 113 "src/ehc/Base/CfgPP.chs" #-}
+instance CfgPP' CfgPP_Grin where
   cfgppHsName    _ = ppHsnNonAlpha grinScanOpts
 
-{-# LINE 115 "src/ehc/Base/CfgPP.chs" #-}
+{-# LINE 122 "src/ehc/Base/CfgPP.chs" #-}
 ppCoreNm :: HsName -> PP_Doc
 ppCoreNm = cfgppHsName CfgPP_Core
 
-{-# LINE 124 "src/ehc/Base/CfgPP.chs" #-}
+{-# LINE 131 "src/ehc/Base/CfgPP.chs" #-}
 tnUniqRepr :: Int -> String
 tnUniqRepr
   = lrepr
@@ -91,9 +96,9 @@
                         in   (repr d : lrepr r)
         repr    = (chr . (97+))
 
-{-# LINE 139 "src/ehc/Base/CfgPP.chs" #-}
+{-# LINE 146 "src/ehc/Base/CfgPP.chs" #-}
 -- intended for parsing
-ppCTag' :: CfgPP x => x -> CTag -> PP_Doc
+ppCTag' :: CfgPP' x => x -> CTag -> PP_Doc
 ppCTag' x t
   = case t of
       CTagRec                      -> ppCurly "Rec"
@@ -101,15 +106,15 @@
   where ppNm n = cfgppHsName x n
 
 -- intended for parsing
-ppCTagExtensive' :: CfgPP x => x -> CTag -> PP_Doc
+ppCTagExtensive' :: CfgPP' x => x -> CTag -> PP_Doc
 ppCTagExtensive' x t
   = case t of
       CTagRec                      -> ppCurly "Rec"
       CTag ty nm tag arity mxarity -> ppCurlysCommas' [ppNm ty, ppNm nm, pp tag, pp arity, pp mxarity]
   where ppNm n = cfgppHsName x n
 
-{-# LINE 157 "src/ehc/Base/CfgPP.chs" #-}
-ppCTagsMp :: CfgPP x => x -> CTagsMp -> PP_Doc
+{-# LINE 164 "src/ehc/Base/CfgPP.chs" #-}
+ppCTagsMp :: CfgPP' x => x -> CTagsMp -> PP_Doc
 ppCTagsMp x
   = mkl (mkl (ppCTag' x))
   where mkl pe = ppCurlysSemisBlock . map (\(n,e) -> cfgppHsName x n >-< indent 1 ("=" >#< pe e))
diff --git a/src/UHC/Light/Compiler/Base/Common.hs b/src/UHC/Light/Compiler/Base/Common.hs
--- a/src/UHC/Light/Compiler/Base/Common.hs
+++ b/src/UHC/Light/Compiler/Base/Common.hs
@@ -21,8 +21,10 @@
 , hsnLclSupply, hsnLclSupplyWith
 , AlwaysEq (..)
 , VarId, VarIdS
-, whenM, unlessM
-, str2stMp, str2stMpWithOmit, showStr2stMp
+, if'
+, whenM, unlessM, ifM, ifM'
+, maybeM, maybeM', maybe2M, maybeGuardM, guardMaybeM, whenJustM, whenJustGuardM, unlessJustM
+, str2stMp, str2stMpWithOmit, str2stMpWithShow, showStr2stMp
 , unions
 , withLkupLiftCyc1, withLkupChkVisitLift, withLkupLift
 , lookupLiftCycMb1, lookupLiftCycMb2
@@ -53,6 +55,7 @@
 , strHex
 , Backend (..)
 , Presence (..)
+, LinkingStyle (..)
 , fmap2Tuple
 , genNmMap
 , MaybeOk (..), isJustOk, isNotOk, maybeOk, fromJustOk, fromNotOk
@@ -64,13 +67,11 @@
 , mkPrIdCHR
 , emptyPredOccId
 , ppListV
-, snd3, thd
 , CHRScoped (..)
 , InstVariant (..)
 , VarUIDHsName (..), vunmNm
 , vunmMbVar
 , combineToDistinguishedElts
-, LinkingStyle (..)
 , fixityAppPrio
 , InstDerivingFrom (..)
 , SrcConst (..)
@@ -96,6 +97,7 @@
 import UHC.Util.VarLookup (MetaLev,metaLevVal)
 import UHC.Light.Compiler.Scanner.Token
 import UHC.Light.Compiler.Scanner.Machine(scanpredIsIdChar,scanpredIsKeywExtra)
+import GHC.Generics (Generic)
 import UHC.Util.FPath
 import System.IO
 import System.Environment
@@ -111,7 +113,6 @@
 import UHC.Light.Compiler.Base.RLList
 import UHC.Util.Binary
 import UHC.Util.Serialize
-import GHC.Generics (Generic)
 import Data.Version
 
 
@@ -367,24 +368,21 @@
 strBlankPad :: Int -> String -> String
 strBlankPad n s = s ++ replicate (n - length s) ' '
 
-{-# LINE 461 "src/ehc/Base/Common.chs" #-}
-snd3 :: (a,b,c) -> b
-snd3 (a,b,c) = b
-
-thd :: (a,b,c) -> c
-thd (a,b,c) = c
-
 {-# LINE 473 "src/ehc/Base/Common.chs" #-}
 data Verbosity
-  = VerboseQuiet | VerboseMinimal | VerboseNormal | VerboseALot | VerboseDebug
+  = VerboseQuiet		-- nothing at all
+  | VerboseMinimal
+  | VerboseNormal		-- basic info
+  | VerboseALot
+  | VerboseDebug
   deriving (Eq,Ord,Enum)
 
-{-# LINE 483 "src/ehc/Base/Common.chs" #-}
+{-# LINE 487 "src/ehc/Base/Common.chs" #-}
 data CHRScoped
   = CHRScopedInstOnly | CHRScopedMutualSuper | CHRScopedAll
   deriving (Eq,Ord)
 
-{-# LINE 493 "src/ehc/Base/Common.chs" #-}
+{-# LINE 497 "src/ehc/Base/Common.chs" #-}
 data CompilePoint
   = CompilePoint_Imports
   | CompilePoint_Parse
@@ -394,7 +392,7 @@
   | CompilePoint_All
   deriving (Eq,Ord,Show)
 
-{-# LINE 510 "src/ehc/Base/Common.chs" #-}
+{-# LINE 514 "src/ehc/Base/Common.chs" #-}
 data Fixity
   = Fixity_Infix | Fixity_Infixr | Fixity_Infixl
   deriving (Eq,Ord,Show,Enum)
@@ -404,28 +402,34 @@
   pp Fixity_Infixl = pp "infixl"
   pp Fixity_Infixr = pp "infixr"
 
-{-# LINE 521 "src/ehc/Base/Common.chs" #-}
+{-# LINE 525 "src/ehc/Base/Common.chs" #-}
 fixityMaxPrio :: Int
 fixityMaxPrio = 9
 
-{-# LINE 526 "src/ehc/Base/Common.chs" #-}
+{-# LINE 530 "src/ehc/Base/Common.chs" #-}
 fixityAppPrio :: Int
 fixityAppPrio = fixityMaxPrio + 1
 
-{-# LINE 535 "src/ehc/Base/Common.chs" #-}
+{-# LINE 539 "src/ehc/Base/Common.chs" #-}
 data InstVariant
   = InstNormal | InstDefault
   | InstDeriving InstDerivingFrom
   deriving (Eq,Ord,Show)
 
-{-# LINE 544 "src/ehc/Base/Common.chs" #-}
+instance PP InstVariant where
+  pp = pp . show
+
+{-# LINE 551 "src/ehc/Base/Common.chs" #-}
 -- | Either a deriving combined from a datatype directly or a standalone
 data InstDerivingFrom
   = InstDerivingFrom_Datatype
   | InstDerivingFrom_Standalone
   deriving (Eq,Ord,Show)
 
-{-# LINE 556 "src/ehc/Base/Common.chs" #-}
+instance PP InstDerivingFrom where
+  pp = pp . show
+
+{-# LINE 566 "src/ehc/Base/Common.chs" #-}
 type NmLev = Int
 
 nmLevAbsent, nmLevBuiltin, nmLevOutside, nmLevModule :: NmLev
@@ -435,7 +439,7 @@
 nmLevModule  =  0
 
 
-{-# LINE 577 "src/ehc/Base/Common.chs" #-}
+{-# LINE 587 "src/ehc/Base/Common.chs" #-}
 -- Assumption: tokTpIsInt (genTokTp t) == True
 tokMkInt :: Token -> Int
 tokMkInt t
@@ -447,28 +451,28 @@
 tokMkStr :: Token -> String
 tokMkStr = tokenVal
 
-{-# LINE 595 "src/ehc/Base/Common.chs" #-}
+{-# LINE 605 "src/ehc/Base/Common.chs" #-}
 tokMkQName :: Token -> HsName
 tokMkQName t
   = case genTokTp t of
       Just tp | tokTpIsInt tp -> mkHNmPos $ tokMkInt t
       _                       -> mkHNm $ map hsnFromString $ tokenVals t
 
-{-# LINE 605 "src/ehc/Base/Common.chs" #-}
+{-# LINE 615 "src/ehc/Base/Common.chs" #-}
 tokMkQNames :: [Token] -> [HsName]
 tokMkQNames = map tokMkQName
 
 instance HSNM Token where
   mkHNm = tokMkQName
 
-{-# LINE 617 "src/ehc/Base/Common.chs" #-}
+{-# LINE 627 "src/ehc/Base/Common.chs" #-}
 hsnLclSupplyWith :: HsName -> [HsName]
 hsnLclSupplyWith n = map (\i -> hsnSuffix n $ "_" ++ show i) [1..]
 
 hsnLclSupply :: [HsName]
 hsnLclSupply = hsnLclSupplyWith (hsnFromString "")
 
-{-# LINE 629 "src/ehc/Base/Common.chs" #-}
+{-# LINE 639 "src/ehc/Base/Common.chs" #-}
 splitByRadix :: (Integral b) => Int -> Int -> b -> (Int,[Int])
 splitByRadix len radix num
   = ( fromIntegral $ signum num
@@ -484,19 +488,19 @@
                  (abs num)
         difflen = len - length repr
 
-{-# LINE 646 "src/ehc/Base/Common.chs" #-}
+{-# LINE 656 "src/ehc/Base/Common.chs" #-}
 strHex :: (Show a, Integral a) => Int -> a -> String
 strHex prec x
   = replicate (prec - length h) '0' ++ h
   where h = showHex x []
 
-{-# LINE 657 "src/ehc/Base/Common.chs" #-}
+{-# LINE 667 "src/ehc/Base/Common.chs" #-}
 data Backend
   = BackendGrinByteCode
   | BackendSilly
   deriving (Eq, Ord)
 
-{-# LINE 668 "src/ehc/Base/Common.chs" #-}
+{-# LINE 678 "src/ehc/Base/Common.chs" #-}
 data VarUIDHsName
   = VarUIDHs_Name       { vunmId :: !UID, vunmNm' :: !HsName }
   | VarUIDHs_UID        { vunmId :: !UID }
@@ -508,12 +512,12 @@
 vunmNm (VarUIDHs_UID  i  ) = mkHNm i
 vunmNm _                   = panic "Common.assnmNm"
 
-{-# LINE 681 "src/ehc/Base/Common.chs" #-}
+{-# LINE 691 "src/ehc/Base/Common.chs" #-}
 vunmMbVar :: VarUIDHsName -> Maybe UID
 vunmMbVar (VarUIDHs_Var v) = Just v
 vunmMbVar _                = Nothing
 
-{-# LINE 687 "src/ehc/Base/Common.chs" #-}
+{-# LINE 697 "src/ehc/Base/Common.chs" #-}
 instance Show VarUIDHsName where
   show (VarUIDHs_Name _ n) = show n
   show (VarUIDHs_UID  i  ) = show i
@@ -522,7 +526,7 @@
 instance PP VarUIDHsName where
   pp a = pp $ show a
 
-{-# LINE 701 "src/ehc/Base/Common.chs" #-}
+{-# LINE 711 "src/ehc/Base/Common.chs" #-}
 withLkupLiftCyc2 :: (t -> Maybe UID) -> (t -> UIDS) -> (UID -> Maybe t) -> x -> (UIDS -> t -> x) -> (t -> x) -> UIDS -> UID -> x
 withLkupLiftCyc2 get noVisit lookup dflt yes no vsVisited v
   = case lookup v of
@@ -530,7 +534,7 @@
         -> yes (Set.insert v $ Set.union (noVisit t) vsVisited) t
       _ -> dflt
 
-{-# LINE 710 "src/ehc/Base/Common.chs" #-}
+{-# LINE 720 "src/ehc/Base/Common.chs" #-}
 withLkupLiftCyc1 :: (t -> Maybe UID) -> (t -> UIDS) -> (UID -> Maybe t) -> (UIDS -> t -> x) -> (t -> x) -> UIDS -> t -> x
 withLkupLiftCyc1 get noVisit lookup yes no vsVisited t
   = maybe dflt (withLkupLiftCyc2 get noVisit lookup dflt yes no vsVisited) $ get t
@@ -544,7 +548,7 @@
 withLkupLift get
   = withLkupChkVisitLift get (const Set.empty)
 
-{-# LINE 725 "src/ehc/Base/Common.chs" #-}
+{-# LINE 735 "src/ehc/Base/Common.chs" #-}
 lookupLiftCyc1 :: (x -> Maybe UID) -> (UID -> Maybe x) -> x' -> (x->x') -> x -> x'
 lookupLiftCyc1 get lookup dflt found x
   = lk Set.empty dflt found x
@@ -554,17 +558,17 @@
 lookupLiftCyc2 get lookup dflt found x
   = maybe dflt (\x -> lookupLiftCyc1 get lookup (found x) found x) $ lookup x
 
-{-# LINE 736 "src/ehc/Base/Common.chs" #-}
+{-# LINE 746 "src/ehc/Base/Common.chs" #-}
 lookupLiftCycMb1 :: (x -> Maybe UID) -> (UID -> Maybe x) -> x -> Maybe x
 lookupLiftCycMb1 get lookup x = lookupLiftCyc1 get lookup Nothing Just x
 
 lookupLiftCycMb2 :: (x -> Maybe UID) -> (UID -> Maybe x) -> UID -> Maybe x
 lookupLiftCycMb2 get lookup x = lookupLiftCyc2 get lookup Nothing Just x
 
-{-# LINE 748 "src/ehc/Base/Common.chs" #-}
+{-# LINE 758 "src/ehc/Base/Common.chs" #-}
 data Presence = Present | Absent deriving (Eq,Ord,Show)
 
-{-# LINE 756 "src/ehc/Base/Common.chs" #-}
+{-# LINE 766 "src/ehc/Base/Common.chs" #-}
 -- | Combine [[x1..xn],..,[y1..ym]] to [[x1..y1],[x2..y1],..,[xn..ym]].
 --   Each element [xi..yi] is distinct based on the the key k in xi==(k,_)
 combineToDistinguishedElts :: Eq k => [AssocL k v] -> [AssocL k v]
@@ -579,8 +583,8 @@
                                      ls
                       ) l
 
-{-# LINE 779 "src/ehc/Base/Common.chs" #-}
-data AlwaysEq a = AlwaysEq a
+{-# LINE 789 "src/ehc/Base/Common.chs" #-}
+data AlwaysEq a = AlwaysEq { unAlwaysEq :: a }
 
 instance Eq (AlwaysEq a) where
   _ == _ = True
@@ -594,12 +598,16 @@
 instance PP a => PP (AlwaysEq a) where
   pp (AlwaysEq x) = pp x
 
-{-# LINE 799 "src/ehc/Base/Common.chs" #-}
+instance Hashable (AlwaysEq a) where
+  hashWithSalt salt _ = hashWithSalt salt (12345 :: Int) -- arbitarry, but constant
+
+
+{-# LINE 813 "src/ehc/Base/Common.chs" #-}
 type PkgName = String
 
 emptyPkgName = ""
 
-{-# LINE 809 "src/ehc/Base/Common.chs" #-}
+{-# LINE 823 "src/ehc/Base/Common.chs" #-}
 -- | How to do linking/packaging
 data LinkingStyle
   = LinkingStyle_None			-- ^ no linking (e.g. indicated by --compile-only flag)
@@ -608,40 +616,46 @@
   deriving (Eq,Ord,Enum,Bounded)
 
 
-{-# LINE 849 "src/ehc/Base/Common.chs" #-}
+{-# LINE 863 "src/ehc/Base/Common.chs" #-}
 metaLevTy, metaLevKi, metaLevSo :: MetaLev
 metaLevTy  = metaLevVal + 1
 metaLevKi  = metaLevTy  + 1
 metaLevSo  = metaLevKi  + 1
 
-{-# LINE 860 "src/ehc/Base/Common.chs" #-}
+{-# LINE 874 "src/ehc/Base/Common.chs" #-}
 -- | Use as variable id
 type VarId    = UID
 type VarIdS   = Set.Set UID
 
-{-# LINE 870 "src/ehc/Base/Common.chs" #-}
+{-# LINE 884 "src/ehc/Base/Common.chs" #-}
 uidHNm :: UID -> HsName
 uidHNm = mkHNm -- hsnFromString . show
 
-{-# LINE 875 "src/ehc/Base/Common.chs" #-}
+{-# LINE 889 "src/ehc/Base/Common.chs" #-}
 uidQualHNm :: HsName -> UID -> HsName
 uidQualHNm modnm uid =
                         hsnPrefixQual modnm $
                         uidHNm uid
 
 
-{-# LINE 893 "src/ehc/Base/Common.chs" #-}
+{-# LINE 907 "src/ehc/Base/Common.chs" #-}
 data SrcConst
   = SrcConst_Int    Integer
   | SrcConst_Char   Char
   | SrcConst_Ratio  Integer Integer
   deriving (Eq,Show,Ord)
 
-{-# LINE 905 "src/ehc/Base/Common.chs" #-}
+{-# LINE 919 "src/ehc/Base/Common.chs" #-}
 fmap2Tuple :: Functor f => snd -> f x -> f (x,snd)
 fmap2Tuple snd = fmap (\x -> (x,snd))
 
-{-# LINE 914 "src/ehc/Base/Common.chs" #-}
+{-# LINE 928 "src/ehc/Base/Common.chs" #-}
+-- | Shorthand for if
+if' :: Bool -> a -> a -> a
+if' c t e = if c then t else e
+{-# INLINE if' #-}
+
+{-# LINE 939 "src/ehc/Base/Common.chs" #-}
 -- | Variation of `when` where Boolean condition is computed in a monad
 whenM :: Monad m => m Bool -> m () -> m ()
 whenM c m = do
@@ -656,7 +670,61 @@
   unless c' m
 {-# INLINE unlessM #-}
 
-{-# LINE 934 "src/ehc/Base/Common.chs" #-}
+-- | Variation of `if` where Boolean condition is computed in a monad
+ifM :: Monad m => m Bool -> m a -> m a -> m a
+ifM c mt me = do
+  c' <- c
+  if c' then mt else me
+{-# INLINE ifM #-}
+
+-- | Variation of `if` where Boolean condition is computed in a monad, with then and else part flipped
+ifM' :: Monad m => m Bool -> m a -> m a -> m a
+ifM' c = flip (ifM c)
+{-# INLINE ifM' #-}
+
+
+{-# LINE 968 "src/ehc/Base/Common.chs" #-}
+-- | Variation of `maybe` where the maybe is computed in a monad. See also `maybeM'`
+maybeM :: Monad m => m (Maybe a) -> m b -> (a -> m b) -> m b
+maybeM mmaybe mnothing mjust = mmaybe >>= maybe mnothing mjust
+{-# INLINE maybeM #-}
+
+-- | Variation of `maybe` where the maybe is computed in a monad. See also `maybeM'`
+maybe2M :: Monad m => m (Maybe a1) -> (a1 -> m (Maybe a2)) -> m b -> (a1 -> a2 -> m b) -> m b
+maybe2M mmaybe1 mmaybe2 mnothing mjust = do
+  mb1@(~(Just m1)) <- mmaybe1
+  if (isJust mb1)
+    then maybeM (mmaybe2 m1) mnothing (mjust m1)
+    else mnothing
+
+-- | Variation of `maybe` where the maybe is computed in a monad and a guard is involved. See also `maybeM'`
+maybeGuardM :: Monad m => m (Maybe a) -> (a -> m Bool) -> m b -> (a -> m b) -> m b
+maybeGuardM mmaybe mgrd mnothing mjust = mmaybe >>= maybe mnothing (\x -> ifM (mgrd x) (mjust x) mnothing)
+{-# INLINE maybeGuardM #-}
+
+-- | Variation of `maybe` where the maybe is computed in a guarded monad. See also `maybeGuardM'`
+guardMaybeM :: Monad m => (m Bool) -> m (Maybe a) -> m b -> (a -> m b) -> m b
+guardMaybeM mgrd mmaybe mnothing mjust = ifM' mgrd mnothing $ maybeM mmaybe mnothing mjust
+{-# INLINE guardMaybeM #-}
+
+-- | As 'maybeM' but with last 2 args flipped, allowing a continuation based style for case by case analysis based on Maybe
+maybeM' :: Monad m => m (Maybe a) -> (a -> m b) -> m b -> m b
+maybeM' mmaybe = flip (maybeM mmaybe)
+{-# INLINE maybeM' #-}
+
+-- | Variation of `maybe`, when, and ifJust where the maybe is computed in a monad
+whenJustM :: Monad m => m (Maybe a) -> (a -> m ()) -> m ()
+whenJustM mmaybe = maybeM mmaybe (return ())
+
+-- | Variation of `maybe`, when, and ifJust where the maybe is computed in a monad and a guard is involved
+whenJustGuardM :: Monad m => m (Maybe a) -> (a -> m Bool) -> (a -> m ()) -> m ()
+whenJustGuardM mmaybe mgrd mjust = maybeM mmaybe (return ()) $ \a -> whenM (mgrd a) $ mjust a
+
+-- | Variation of `maybe`, unless, and ifNothing where the maybe is computed in a monad
+unlessJustM :: Monad m => m (Maybe a) -> m () -> m ()
+unlessJustM mmaybe = maybeM' mmaybe (\_ -> return ())
+
+{-# LINE 1014 "src/ehc/Base/Common.chs" #-}
 genNmMap :: Ord x => (String->s) -> [x] -> Map.Map x s -> (Map.Map x s, [s])
 genNmMap mk xs m
   = (m',reverse ns)
@@ -671,7 +739,7 @@
         ch x | x < 26    = [chr $ ord 'a' + x]
              | otherwise = let (q,r) = x `quotRem` 26 in ch q ++ ch r
 
-{-# LINE 954 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1034 "src/ehc/Base/Common.chs" #-}
 data MaybeOk a
   = JustOk  a
   | NotOk   String
@@ -693,7 +761,7 @@
 maybeOk _ j (JustOk x) = j x
 maybeOk n _ (NotOk  x) = n x
 
-{-# LINE 981 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1061 "src/ehc/Base/Common.chs" #-}
 -- | Abstract graph visit, over arbitrary structures
 graphVisit
   :: (Ord node)
@@ -713,7 +781,7 @@
                                      unvisited3          = unionUnvisited (newUnvisited `Set.difference` visited') unvisited2
                                  in  v ((visited',unvisited3),thr')
 
-{-# LINE 1006 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1086 "src/ehc/Base/Common.chs" #-}
 data KnownPrim
   =
     -- platform Int
@@ -752,31 +820,37 @@
   | KnownPrim_Mul64
   deriving (Show,Eq,Enum,Bounded)
 
-{-# LINE 1052 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1132 "src/ehc/Base/Common.chs" #-}
 instance PP KnownPrim where
   pp = pp . show
 
-{-# LINE 1057 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1137 "src/ehc/Base/Common.chs" #-}
 allKnownPrimMp :: Map.Map String KnownPrim
 allKnownPrimMp
   = Map.fromList [ (drop prefixLen $ show t, t) | t <- [ minBound .. maxBound ] ]
   where prefixLen = length "KnownPrim_"
 
-{-# LINE 1072 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1152 "src/ehc/Base/Common.chs" #-}
+str2stMpWithOmitShow :: (Enum opt, Bounded opt, Eq opt) => (opt -> String) -> [opt] -> Map.Map String opt
+str2stMpWithOmitShow shw omits = Map.fromList [ (shw o, o) | o <- [minBound .. maxBound] \\ omits ]
+
 str2stMpWithOmit :: (Show opt, Enum opt, Bounded opt, Eq opt) => [opt] -> Map.Map String opt
-str2stMpWithOmit omits = Map.fromList [ (show o, o) | o <- [minBound .. maxBound] \\ omits ]
+str2stMpWithOmit = str2stMpWithOmitShow show
 
+str2stMpWithShow :: (Enum opt, Bounded opt, Eq opt) => (opt -> String) -> Map.Map String opt
+str2stMpWithShow shw = str2stMpWithOmitShow shw []
+
 str2stMp :: (Show opt, Enum opt, Bounded opt, Eq opt) => Map.Map String opt
 str2stMp = str2stMpWithOmit []
 
 showStr2stMp :: Map.Map String opt -> String
 showStr2stMp = concat . intersperse " " . Map.keys
 
-{-# LINE 1087 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1173 "src/ehc/Base/Common.chs" #-}
 deriving instance Data KnownPrim
 deriving instance Typeable KnownPrim
 
-{-# LINE 1092 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1178 "src/ehc/Base/Common.chs" #-}
 deriving instance Typeable VarUIDHsName
 deriving instance Data VarUIDHsName
 
@@ -800,7 +874,7 @@
 deriving instance Data CLbl
 
 
-{-# LINE 1121 "src/ehc/Base/Common.chs" #-}
+{-# LINE 1207 "src/ehc/Base/Common.chs" #-}
 instance Binary KnownPrim where
   put = putEnum8
   get = getEnum8
diff --git a/src/UHC/Light/Compiler/Base/FileSearchLocation.hs b/src/UHC/Light/Compiler/Base/FileSearchLocation.hs
--- a/src/UHC/Light/Compiler/Base/FileSearchLocation.hs
+++ b/src/UHC/Light/Compiler/Base/FileSearchLocation.hs
@@ -19,6 +19,7 @@
 import Data.Maybe
 import Data.Version
 import Data.List
+import UHC.Util.Pretty
 import UU.Parsing
 import UHC.Util.ParseUtils
 import UHC.Util.ScanUtils
@@ -31,13 +32,15 @@
 
 
 
-{-# LINE 44 "src/ehc/Base/FileSearchLocation.chs" #-}
+
+
+{-# LINE 47 "src/ehc/Base/FileSearchLocation.chs" #-}
 data FileLocKind
   = FileLocKind_Dir									-- plain directory
   | FileLocKind_Pkg	PkgKey							-- specific package
   					String							-- with the dir inside package it was found
   | FileLocKind_PkgDb								-- yet unknown package in the package database
-  deriving (Eq,Ord,Generic)
+  deriving (Eq,Ord,Generic,Typeable)
 
 instance Hashable FileLocKind
 
@@ -46,47 +49,53 @@
   show (FileLocKind_Pkg p d)	= "package: " ++ showPkgKey p ++ "(in: " ++ d ++ ")"
   show  FileLocKind_PkgDb    	= "package database"
 
-{-# LINE 74 "src/ehc/Base/FileSearchLocation.chs" #-}
+instance PP FileLocKind where
+  pp = pp . show
+
+{-# LINE 80 "src/ehc/Base/FileSearchLocation.chs" #-}
 data FileLoc
   = FileLoc
       {	filelocKind		:: FileLocKind
       , filelocDir		:: String
       }
-  deriving (Eq,Ord,Generic)
+  deriving (Eq,Ord,Generic,Typeable)
 
 instance Hashable FileLoc
 
 instance Show FileLoc where
   show (FileLoc k d) = d ++ " (" ++ show k ++ ")"
 
+instance PP FileLoc where
+  pp = pp . show
+
 emptyFileLoc :: FileLoc
 emptyFileLoc = FileLoc FileLocKind_Dir ""
 
 fileLocPkgDb :: FileLoc
 fileLocPkgDb = FileLoc FileLocKind_PkgDb ""
 
-{-# LINE 94 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 103 "src/ehc/Base/FileSearchLocation.chs" #-}
 mkDirFileLoc
   = FileLoc FileLocKind_Dir
 
-{-# LINE 103 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 112 "src/ehc/Base/FileSearchLocation.chs" #-}
 mkPkgFileLoc :: PkgKey -> String -> FileLoc
 mkPkgFileLoc p d = FileLoc (FileLocKind_Pkg p d) d
 
-{-# LINE 108 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 117 "src/ehc/Base/FileSearchLocation.chs" #-}
 filelocIsPkg :: FileLoc -> Bool
 filelocIsPkg (FileLoc (FileLocKind_Pkg _ _) _) = True
 filelocIsPkg (FileLoc  FileLocKind_PkgDb    _) = True
 filelocIsPkg _                                 = False
 
-{-# LINE 115 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 124 "src/ehc/Base/FileSearchLocation.chs" #-}
 type StringPath  = [String]
 type FileLocPath = [FileLoc]
 
-{-# LINE 124 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 133 "src/ehc/Base/FileSearchLocation.chs" #-}
 type FileSearchLoc = FileLoc
 
-{-# LINE 132 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 141 "src/ehc/Base/FileSearchLocation.chs" #-}
 type PkgKey1 = PkgName
 type PkgKey2 = Maybe Version
 type PkgKey  = (PkgKey1,PkgKey2)
@@ -95,11 +104,11 @@
   mkHNm (n,Just v) =   mkHNmBase (n ++ "-" ++ (concat $ intersperse "." $ map show $ versionBranch v))
   mkHNm (n,_     ) =   mkHNm      n
 
-{-# LINE 146 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 155 "src/ehc/Base/FileSearchLocation.chs" #-}
 showPkgKey :: PkgKey -> String
 showPkgKey = show . mkHNm
 
-{-# LINE 155 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 164 "src/ehc/Base/FileSearchLocation.chs" #-}
 -- | Description of hiding/exposing pkgs, determining the used packages for looking up modules.
 data PackageSearchFilter
   -- Note: the below order is important, it is used for sorting just before having its effect on searchable packages.
@@ -109,13 +118,13 @@
   | PackageSearchFilter_ExposePkg		[PkgKey]
   deriving (Show, Eq, Ord)
 
-{-# LINE 166 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 175 "src/ehc/Base/FileSearchLocation.chs" #-}
 pkgSearchFilter :: (x -> Maybe PkgKey) -> ([PkgKey] -> PackageSearchFilter) -> [x] -> [PackageSearchFilter]
 pkgSearchFilter mkKey mk ss
   = if null ps then [] else [mk ps]
   where ps = catMaybes $ map mkKey ss
 
-{-# LINE 177 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 186 "src/ehc/Base/FileSearchLocation.chs" #-}
 type PackageCfgKeyVals = Map.Map String String
 
 -- | Per package info
@@ -152,7 +161,7 @@
 emptyPackageDatabase :: PackageDatabase
 emptyPackageDatabase = PackageDatabase emptyPackageMp Map.empty
 
-{-# LINE 219 "src/ehc/Base/FileSearchLocation.chs" #-}
+{-# LINE 228 "src/ehc/Base/FileSearchLocation.chs" #-}
 
 mkInternalPkgFileBase :: PkgKey -> String {- compiler name/version -} -> Target -> TargetFlavor -> FilePath
 mkInternalPkgFileBase pkgKey compversion tgt tgtv =
diff --git a/src/UHC/Light/Compiler/Base/HsName/Builtin.hs b/src/UHC/Light/Compiler/Base/HsName/Builtin.hs
--- a/src/UHC/Light/Compiler/Base/HsName/Builtin.hs
+++ b/src/UHC/Light/Compiler/Base/HsName/Builtin.hs
@@ -20,7 +20,7 @@
 , hsnMain
 , hsnIsConstructorName
 , hsnUndefined, hsnPackedString, hsnPackedStringToString, hsnPrelId, hsnPrimAddInt
-, EHBuiltinNames (..), mkEHBuiltinNames
+, EHBuiltinNames, EHBuiltinNames' (..), mkEHBuiltinNames
 , hsnOImpl, hsnCImpl, hsnPrArrow, hsnIsPrArrow, hsnIsUnknown
 , hsnMonadSeq, hsnMonadBind, hsnMonadFail, hsnClassEq
 , hsnClass2Dict
@@ -32,7 +32,7 @@
 , hsnModBuiltin
 , hsnDataOrderingAltEQ, hsnDataOrderingAltLT, hsnDataOrderingAltGT
 , hsnNm2Gener, hsnNm2GenerReprSyn, hsnNm2GenerDatatype, hsnNm2GenerConstructor, hsnNm2GenerSelector, hsnNm2GenerReprTuple
-, builtinGenerClassNmL
+, builtinGenerClassNmL, builtinGenerClassArityNmL, builtinGenerTypeNmL, builtinGenerTypeArityNmL
 , hsnInteger
 , hsnInt8Unboxed, hsnInt16Unboxed, hsnInt32Unboxed, hsnInt64Unboxed, hsnWordUnboxed, hsnWord8Unboxed, hsnWord16Unboxed, hsnWord32Unboxed, hsnWord64Unboxed
 , hsnPackedStringToInteger, hsnPrimIntegerToInt, hsnPrimIntToInteger
@@ -487,15 +487,15 @@
 {-# LINE 746 "src/ehc/Base/HsName/Builtin.chs" #-}
 -- Dict datatype name for class name, only used when `not ehcCfgClassViaRec'
 hsnClass2Dict :: HsName -> HsName
-hsnClass2Dict = mkHNmHidden . hsnPrefix "Dict_"
+hsnClass2Dict = mkHNmHidden -- . hsnPrefix "Dict_"
 
 {-# LINE 752 "src/ehc/Base/HsName/Builtin.chs" #-}
 hsnClass2Kind :: HsName -> HsName
-hsnClass2Kind = mkHNmHidden . hsnPrefix "ClassKind_"
+hsnClass2Kind = hsnClass2Dict -- mkHNmHidden . hsnPrefix "ClassKind_"
 
 {-# LINE 757 "src/ehc/Base/HsName/Builtin.chs" #-}
 hsnClass2Polarity :: HsName -> HsName
-hsnClass2Polarity = mkHNmHidden . hsnPrefix "ClassPolarity_"
+hsnClass2Polarity = hsnClass2Dict -- mkHNmHidden . hsnPrefix "ClassPolarity_"
 
 {-# LINE 766 "src/ehc/Base/HsName/Builtin.chs" #-}
 -- | a hidden name corresponding to visible names
@@ -523,151 +523,198 @@
 hsnNm2GenerSelector = hsnNm2Gener . hsnPrefix ("S_")
 
 {-# LINE 796 "src/ehc/Base/HsName/Builtin.chs" #-}
-builtinGenerClassNmL :: [HsName]
-builtinGenerClassNmL
-  = [ bi i
-    | bi <- [ ehbnGenerClassConstructor
-            , ehbnGenerClassDatatype
-            , ehbnGenerClassSelector
-            ]
-    ]
-  where i = mkEHBuiltinNames (\_ n -> hsnQualified n)
+builtinGenerClassNmL     , builtinGenerTypeNmL      ::        [(HsName,IdOccKind)]
+builtinGenerClassArityNmL, builtinGenerTypeArityNmL :: Int -> [(HsName,IdOccKind)]
+(  builtinGenerClassNmL
+ , builtinGenerClassArityNmL
+ , builtinGenerTypeNmL
+ , builtinGenerTypeArityNmL
+ )
+  = ( mk [ ehbnGenerClassConstructor
+         , ehbnGenerClassDatatype
+         , ehbnGenerClassSelector
+         ]
+    , \arity -> mka arity
+         [ ehbnGenerClassRepresentableN
+         ]
+    , mk $
+         [ ehbnGenerDataVoid1
+         , ehbnGenerDataUnit1
+         , ehbnGenerDataKonst1
+         , ehbnGenerDataMeta1
+         , ehbnGenerDataFixity
+         , ehbnGenerDataAssociativity
+         , ehbnGenerDataSum
+         , ehbnGenerDataProd
+         , ehbnGenerDataMetaB
+         , ehbnGenerDataMetaR
+         , ehbnGenerDataMetaP
+         , ehbnGenerDataMetaD
+         , ehbnGenerDataMetaC
+         , ehbnGenerDataMetaS
+         , ehbnGenerDataMetaS1
+         ]
+    , \arity ->
+         ( mka arity
+             [ ehbnGenerDataMetaDN
+             , ehbnGenerDataMetaCN
+             ]
+         )
+         ++
+         mk
+           (case arity of
+              0 -> [ ehbnGenerDataPar0
+                   , ehbnGenerDataRec0
+                   ]
+              1 -> [ ehbnGenerDataPar1
+                   , ehbnGenerDataRec1
+                   , ehbnGenerDataComp1
+                   ]
+              _ -> []
+           )
+    )
+  where i       = mkEHBuiltinNames (\k n -> ({- hsnQualified -} n, k))
+        mk    l = [ bi i   | bi <- l ]
+        mka a l = [ bi i a | bi <- l ]
 
-{-# LINE 812 "src/ehc/Base/HsName/Builtin.chs" #-}
-data EHBuiltinNames
+{-# LINE 856 "src/ehc/Base/HsName/Builtin.chs" #-}
+type EHBuiltinNames = EHBuiltinNames' HsName
+
+data EHBuiltinNames' nm
   = EHBuiltinNames
-      { ehbnId                          :: HsName
-      , ehbnUndefined                   :: HsName
-      , ehbnError                       :: HsName
-      , ehbnPackedString                :: HsName
-      , ehbnPackedStringToString        :: HsName
-      , ehbnPrimAddInt                  :: HsName
-      , ehbnPrimGtInt                   :: HsName
-      , ehbnBoolTrue                    :: HsName
-      , ehbnBoolFalse                   :: HsName
-      , ehbnDataListAltNil              :: HsName
-      , ehbnDataListAltCons             :: HsName
-      , ehbnDataOrderingAltLT           :: HsName
-      , ehbnDataOrderingAltEQ           :: HsName
-      , ehbnDataOrderingAltGT           :: HsName
-      , ehbnDataList                    :: HsName
-      , ehbnDataBool                    :: HsName
-      , ehbnPrelString                  :: HsName
-      , ehbnFunPtr                      :: HsName
-      , ehbnMap                         :: HsName
-      , ehbnBoolAnd                     :: HsName
-      , ehbnBoolOr                      :: HsName
-      , ehbnClassEq                     :: HsName
-      , ehbnClassEqFldEq                :: HsName
-      , ehbnClassOrd                    :: HsName
-      , ehbnClassOrdFldCompare          :: HsName
-      , ehbnDataOrdering                :: HsName
-      , ehbnClassShow                   :: HsName
-      , ehbnClassShowFldShow            :: HsName
-      , ehbnClassShowFldShowsPrec       :: HsName
-      , ehbnPrelShowString              :: HsName
-      , ehbnPrelShowParen               :: HsName
-      , ehbnPrelConcat                  :: HsName
-      , ehbnPrelConcat2                 :: HsName
-      , ehbnPrelConcatMap               :: HsName
-      , ehbnPrelCompose                 :: HsName
-      , ehbnClassEnum                   :: HsName
-      , ehbnClassEnumFldFromEnum        :: HsName
-      , ehbnClassEnumFldToEnum          :: HsName
-      , ehbnClassEnumFldSucc            :: HsName
-      , ehbnClassEnumFldPred            :: HsName
-      , ehbnClassEnumFldEnumFrom        :: HsName
-      , ehbnClassEnumFldEnumFromTo      :: HsName
-      , ehbnClassEnumFldEnumFromThen    :: HsName
-      , ehbnClassEnumFldEnumFromThenTo  :: HsName
-      , ehbnClassBounded                :: HsName
-      , ehbnClassBoundedFldMinBound     :: HsName
-      , ehbnClassBoundedFldMaxBound     :: HsName
-      , ehbnPrimLtInt                   :: HsName
+      { ehbnId                          :: nm
+      , ehbnUndefined                   :: nm
+      , ehbnError                       :: nm
+      , ehbnPackedString                :: nm
+      , ehbnPackedStringToString        :: nm
+      , ehbnPrimAddInt                  :: nm
+      , ehbnPrimGtInt                   :: nm
+      , ehbnBoolTrue                    :: nm
+      , ehbnBoolFalse                   :: nm
+      , ehbnDataListAltNil              :: nm
+      , ehbnDataListAltCons             :: nm
+      , ehbnDataOrderingAltLT           :: nm
+      , ehbnDataOrderingAltEQ           :: nm
+      , ehbnDataOrderingAltGT           :: nm
+      , ehbnDataList                    :: nm
+      , ehbnDataBool                    :: nm
+      , ehbnPrelString                  :: nm
+      , ehbnFunPtr                      :: nm
+      , ehbnMap                         :: nm
+      , ehbnBoolAnd                     :: nm
+      , ehbnBoolOr                      :: nm
+      , ehbnClassEq                     :: nm
+      , ehbnClassEqFldEq                :: nm
+      , ehbnClassOrd                    :: nm
+      , ehbnClassOrdFldCompare          :: nm
+      , ehbnDataOrdering                :: nm
+      , ehbnClassShow                   :: nm
+      , ehbnClassShowFldShow            :: nm
+      , ehbnClassShowFldShowsPrec       :: nm
+      , ehbnPrelShowString              :: nm
+      , ehbnPrelShowParen               :: nm
+      , ehbnPrelConcat                  :: nm
+      , ehbnPrelConcat2                 :: nm
+      , ehbnPrelConcatMap               :: nm
+      , ehbnPrelCompose                 :: nm
+      , ehbnClassEnum                   :: nm
+      , ehbnClassEnumFldFromEnum        :: nm
+      , ehbnClassEnumFldToEnum          :: nm
+      , ehbnClassEnumFldSucc            :: nm
+      , ehbnClassEnumFldPred            :: nm
+      , ehbnClassEnumFldEnumFrom        :: nm
+      , ehbnClassEnumFldEnumFromTo      :: nm
+      , ehbnClassEnumFldEnumFromThen    :: nm
+      , ehbnClassEnumFldEnumFromThenTo  :: nm
+      , ehbnClassBounded                :: nm
+      , ehbnClassBoundedFldMinBound     :: nm
+      , ehbnClassBoundedFldMaxBound     :: nm
+      , ehbnPrimLtInt                   :: nm
 		-- for generic deriving
-      , ehbnGenerClassRepresentableN    	:: Int -> HsName
-      , ehbnGenerClassRepresentableNFldFrom	:: Int -> HsName
-      , ehbnGenerClassRepresentableNFldTo	:: Int -> HsName
-      , ehbnGenerClassDatatype    			:: HsName
-      , ehbnGenerClassDatatypeFldName    	:: HsName
-      , ehbnGenerClassDatatypeFldModule    	:: HsName
-      , ehbnGenerClassSelector    			:: HsName
-      , ehbnGenerClassSelectorFldName		:: HsName
-      , ehbnGenerDataNoSelector				:: HsName
-      , ehbnGenerClassConstructor    		:: HsName
-      , ehbnGenerClassConstructorFldName	:: HsName
-      , ehbnGenerClassConstructorFldFixity	:: HsName
-      , ehbnGenerClassConstructorFldIsRec	:: HsName
-      , ehbnGenerDataVoid1              	:: HsName
-      , ehbnGenerDataUnit1              	:: HsName
-      , ehbnGenerDataUnit1AltU1          	:: HsName
-      , ehbnGenerDataKonst1             	:: HsName
-      , ehbnGenerDataKonst1AltK1         	:: HsName
-      , ehbnGenerDataMeta1              	:: HsName
-      , ehbnGenerDataMeta1AltM1          	:: HsName
-      , ehbnGenerDataFixity    				:: HsName
-      , ehbnGenerDataFixityAltPrefix		:: HsName
-      , ehbnGenerDataFixityAltInfix			:: HsName
-      , ehbnGenerDataAssociativity    		:: HsName
-      , ehbnGenerDataAssociativityAltLeft	:: HsName
-      , ehbnGenerDataAssociativityAltRight	:: HsName
-      , ehbnGenerDataAssociativityAltNot	:: HsName
-      , ehbnGenerDataSum    				:: HsName
-      , ehbnGenerDataSumAltLeft				:: HsName
-      , ehbnGenerDataSumAltRight			:: HsName
-      , ehbnGenerDataProd    				:: HsName
-      , ehbnGenerDataProdAltProd			:: HsName
-      , ehbnGenerDataPar0    				:: HsName
-      , ehbnGenerDataPar1    				:: HsName
-      , ehbnGenerDataPar1AltPar1			:: HsName
-      , ehbnGenerDataRec0    				:: HsName
-      , ehbnGenerDataRec1    				:: HsName
-      , ehbnGenerDataRec1AltRec1			:: HsName
-      , ehbnGenerDataComp1    				:: HsName
-      , ehbnGenerDataComp1AltComp1			:: HsName
-      , ehbnGenerDataMetaB    				:: HsName
-      , ehbnGenerDataMetaR    				:: HsName
-      , ehbnGenerDataMetaP    				:: HsName
-      , ehbnGenerDataMetaD    				:: HsName
-      , ehbnGenerDataMetaC    				:: HsName
-      , ehbnGenerDataMetaS    				:: HsName
-      , ehbnGenerDataMetaDN    				:: Int -> HsName
-      , ehbnGenerDataMetaCN    				:: Int -> HsName
-      , ehbnGenerDataMetaS1    				:: HsName
-      , ehbnGenerTupleRepresentableN		:: Int -> Int -> HsName
-      , ehbnInt8                        :: HsName
-      , ehbnInt16                       :: HsName
-      , ehbnInt32                       :: HsName
-      , ehbnInt64                       :: HsName
-      , ehbnWord                        :: HsName
-      , ehbnWord8                       :: HsName
-      , ehbnWord16                      :: HsName
-      , ehbnWord32                      :: HsName
-      , ehbnWord64                      :: HsName
-      , ehbnFloat                       :: HsName
-      , ehbnDouble                      :: HsName
-      , ehbnPackedStringToInteger       :: HsName
-      , ehbnPrimIntToInteger            :: HsName
-      , ehbnFromInteger                 :: HsName
-      , ehbnIO                          :: HsName
-      , ehbnHandle                      :: HsName
-      , ehbnByteArray                   :: HsName
-      , ehbnRealWorld                   :: HsName
-      , ehbnClassIx                     :: HsName
-      , ehbnClassIxFldRange             :: HsName
-      , ehbnClassIxFldIndex             :: HsName
-      , ehbnClassIxFldInRange           :: HsName
-      , ehbnClassRead                   :: HsName
-      , ehbnClassReadFldRead            :: HsName
-      , ehbnClassReadFldReadsPrec       :: HsName
-      , ehbnPrelLex                     :: HsName
-      , ehbnPrelReadParen               :: HsName
-      , ehbnPrimEqChar                  :: HsName
-      , ehbnAddr                        :: HsName
-      -- , ehbnStackTracePush              :: HsName
+      , ehbnGenerClassGeneric    			:: nm
+      , ehbnGenerClassRepresentableN    	:: Int -> nm
+      , ehbnGenerClassRepresentableNFldFrom	:: Int -> nm
+      , ehbnGenerClassRepresentableNFldTo	:: Int -> nm
+      , ehbnGenerClassDatatype    			:: nm
+      , ehbnGenerClassDatatypeFldName    	:: nm
+      , ehbnGenerClassDatatypeFldModule    	:: nm
+      , ehbnGenerClassSelector    			:: nm
+      , ehbnGenerClassSelectorFldName		:: nm
+      , ehbnGenerDataNoSelector				:: nm
+      , ehbnGenerClassConstructor    		:: nm
+      , ehbnGenerClassConstructorFldName	:: nm
+      , ehbnGenerClassConstructorFldFixity	:: nm
+      , ehbnGenerClassConstructorFldIsRec	:: nm
+      , ehbnGenerDataVoid1              	:: nm
+      , ehbnGenerDataUnit1              	:: nm
+      , ehbnGenerDataUnit1AltU1          	:: nm
+      , ehbnGenerDataKonst1             	:: nm
+      , ehbnGenerDataKonst1AltK1         	:: nm
+      , ehbnGenerDataMeta1              	:: nm
+      , ehbnGenerDataMeta1AltM1          	:: nm
+      , ehbnGenerDataFixity    				:: nm
+      , ehbnGenerDataFixityAltPrefix		:: nm
+      , ehbnGenerDataFixityAltInfix			:: nm
+      , ehbnGenerDataAssociativity    		:: nm
+      , ehbnGenerDataAssociativityAltLeft	:: nm
+      , ehbnGenerDataAssociativityAltRight	:: nm
+      , ehbnGenerDataAssociativityAltNot	:: nm
+      , ehbnGenerDataSum    				:: nm
+      , ehbnGenerDataSumAltLeft				:: nm
+      , ehbnGenerDataSumAltRight			:: nm
+      , ehbnGenerDataProd    				:: nm
+      , ehbnGenerDataProdAltProd			:: nm
+      , ehbnGenerDataPar0    				:: nm
+      , ehbnGenerDataPar1    				:: nm
+      , ehbnGenerDataPar1AltPar1			:: nm
+      , ehbnGenerDataRec0    				:: nm
+      , ehbnGenerDataRec1    				:: nm
+      , ehbnGenerDataRec1AltRec1			:: nm
+      , ehbnGenerDataComp1    				:: nm
+      , ehbnGenerDataComp1AltComp1			:: nm
+      , ehbnGenerDataMetaB    				:: nm
+      , ehbnGenerDataMetaR    				:: nm
+      , ehbnGenerDataMetaP    				:: nm
+      , ehbnGenerDataMetaD    				:: nm
+      , ehbnGenerDataMetaC    				:: nm
+      , ehbnGenerDataMetaS    				:: nm
+      , ehbnGenerDataMetaDN    				:: Int -> nm
+      , ehbnGenerDataMetaCN    				:: Int -> nm
+      , ehbnGenerDataMetaS1    				:: nm
+      , ehbnGenerTupleRepresentableN		:: Int -> Int -> nm
+      , ehbnInt8                        :: nm
+      , ehbnInt16                       :: nm
+      , ehbnInt32                       :: nm
+      , ehbnInt64                       :: nm
+      , ehbnWord                        :: nm
+      , ehbnWord8                       :: nm
+      , ehbnWord16                      :: nm
+      , ehbnWord32                      :: nm
+      , ehbnWord64                      :: nm
+      , ehbnFloat                       :: nm
+      , ehbnDouble                      :: nm
+      , ehbnPackedStringToInteger       :: nm
+      , ehbnPrimIntToInteger            :: nm
+      , ehbnFromInteger                 :: nm
+      , ehbnIO                          :: nm
+      , ehbnHandle                      :: nm
+      , ehbnByteArray                   :: nm
+      , ehbnRealWorld                   :: nm
+      , ehbnClassIx                     :: nm
+      , ehbnClassIxFldRange             :: nm
+      , ehbnClassIxFldIndex             :: nm
+      , ehbnClassIxFldInRange           :: nm
+      , ehbnClassRead                   :: nm
+      , ehbnClassReadFldRead            :: nm
+      , ehbnClassReadFldReadsPrec       :: nm
+      , ehbnPrelLex                     :: nm
+      , ehbnPrelReadParen               :: nm
+      , ehbnPrimEqChar                  :: nm
+      , ehbnAddr                        :: nm
+      -- , ehbnStackTracePush              :: nm
       }
 
-mkEHBuiltinNames :: (IdOccKind -> HsName -> HsName) -> EHBuiltinNames
+mkEHBuiltinNames :: (IdOccKind -> HsName -> nm) -> EHBuiltinNames' nm
 mkEHBuiltinNames f
   = EHBuiltinNames
       { ehbnId                          = f IdOcc_Val       hsnPrelId
@@ -719,6 +766,7 @@
       , ehbnClassBoundedFldMaxBound     = f IdOcc_Val       hsnClassBoundedFldMaxBound
       , ehbnPrimLtInt                   = f IdOcc_Val       hsnPrimLtInt
 		-- for generic deriving
+      , ehbnGenerClassGeneric    	        =       f IdOcc_Class (mkGenerRV     "Generic"	        )
       , ehbnGenerClassRepresentableN    	= \n -> f IdOcc_Class (mkGenerRVN  n "Representable"	)
       , ehbnGenerClassRepresentableNFldFrom	= \n -> f IdOcc_Val   (mkGenerRVN  n "from"				)
       , ehbnGenerClassRepresentableNFldTo	= \n -> f IdOcc_Val   (mkGenerRVN  n "to"				)
diff --git a/src/UHC/Light/Compiler/Base/Optimize.hs b/src/UHC/Light/Compiler/Base/Optimize.hs
--- a/src/UHC/Light/Compiler/Base/Optimize.hs
+++ b/src/UHC/Light/Compiler/Base/Optimize.hs
@@ -15,6 +15,7 @@
 , OptimizationLevelMp
 , optimizationLevelMp )
 where
+import GHC.Generics
 import UHC.Light.Compiler.Base.Common
 import qualified Data.Set as Set
 import qualified Data.Map as Map
@@ -26,14 +27,14 @@
 import UHC.Util.Serialize
 
 
-{-# LINE 29 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 32 "src/ehc/Base/Optimize.chs" #-}
 -- | individual optimizations, unit of turning off/on. (Assumption) Names of alternatives must start with Optimize_
 data Optimize
   = Optimize_GrinLocal							-- Grin: local base optimizations
   | Optimize_StrictnessAnalysis					-- Core: relevance analysis
-  deriving (Eq,Ord,Enum,Show,Bounded)
+  deriving (Eq,Ord,Enum,Show,Bounded,Generic,Typeable)
 
-{-# LINE 46 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 51 "src/ehc/Base/Optimize.chs" #-}
 -- | All optimizations, mapped to from string representation derived via show.
 -- | See also Optimize def for assumption.
 allOptimizeMp :: Map.Map String Optimize
@@ -41,30 +42,34 @@
   = Map.fromList [ (drop lenPrefix $ show o, o) | o <- [minBound .. maxBound] ]
   where lenPrefix = length "Optimize_"
 
-{-# LINE 72 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 77 "src/ehc/Base/Optimize.chs" #-}
 -- | extra optimization specific flags/config/tuning/option/etc
 data OptimizeOption
   = OptimizeOption_StrictnessAnalysisQuant
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Generic,Typeable)
 
-{-# LINE 83 "src/ehc/Base/Optimize.chs" #-}
+instance Hashable OptimizeOption
+
+{-# LINE 90 "src/ehc/Base/Optimize.chs" #-}
 -- | extra optimization specific flags/config/tuning/option/etc
 data OptimizeOptionValue
   = OptimizeOptionValue_StrictnessAnalysis_NoQuant					-- no quantification of relevance type
   | OptimizeOptionValue_StrictnessAnalysis_Quant					-- (default) quantification of relevance type
   | OptimizeOptionValue_StrictnessAnalysis_QuantInstantiate			-- quant + later instantiation
-  deriving (Eq,Ord,Show,Enum)
+  deriving (Eq,Ord,Show,Enum,Generic,Typeable)
 
-{-# LINE 96 "src/ehc/Base/Optimize.chs" #-}
+instance Hashable OptimizeOptionValue
+
+{-# LINE 105 "src/ehc/Base/Optimize.chs" #-}
 -- | the map which holds for each optimization additional (optional) configuration
 type OptimizeOptionMp' val = Map.Map Optimize (Map.Map OptimizeOption val)
 type OptimizeOptionMp      = OptimizeOptionMp' OptimizeOptionValue
 
-{-# LINE 102 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 111 "src/ehc/Base/Optimize.chs" #-}
 optimizeOptionMpSingleton :: Optimize -> OptimizeOption -> OptimizeOptionValue -> OptimizeOptionMp
 optimizeOptionMpSingleton o oo v = Map.singleton o (Map.singleton oo v)
 
-{-# LINE 107 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 116 "src/ehc/Base/Optimize.chs" #-}
 -- | quantification options related to strictness analysis
 optimizeOptionStictnessAnalysisQuant :: OptimizeOptionMp -> OptimizeOptionValue
 optimizeOptionStictnessAnalysisQuant m
@@ -73,7 +78,7 @@
       _       ->       OptimizeOptionValue_StrictnessAnalysis_Quant
   where extr = Just
 
-{-# LINE 130 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 139 "src/ehc/Base/Optimize.chs" #-}
 -- | All optimization options, map from optimize flag to allowed range of
 allOptimizeOptionMp
   :: OptimizeOptionMp'
@@ -92,7 +97,7 @@
         )
       ]
 
-{-# LINE 154 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 163 "src/ehc/Base/Optimize.chs" #-}
 -- | Just get any optimize option (if available) with default
 allOptimizeOptionMpAnyOption :: Optimize -> (OptimizeOption, OptimizeOptionValue)
 allOptimizeOptionMpAnyOption o
@@ -105,7 +110,7 @@
                    }
          }
 
-{-# LINE 176 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 185 "src/ehc/Base/Optimize.chs" #-}
 data OptimizationLevel
   = OptimizationLevel_Off               -- no optimizations                 : -O0
   | OptimizationLevel_Normal            -- easy and cheap optimizations     : -O1 (default)
@@ -113,13 +118,15 @@
   | OptimizationLevel_Full              -- throw everything in it           : -O3
   deriving (Eq,Ord,Show,Enum,Bounded)
 
-{-# LINE 185 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 194 "src/ehc/Base/Optimize.chs" #-}
 -- | Scope of optimizations, increasingly more global
 data OptimizationScope
   = OptimizationScope_PerModule			-- per module
   | OptimizationScope_WholeCore			-- whole program, starting with Core
-  deriving (Eq,Ord,Enum,Bounded)
+  deriving (Eq,Ord,Enum,Bounded,Typeable,Generic)
 
+instance Hashable OptimizationScope
+
 instance Show OptimizationScope where
   show OptimizationScope_PerModule = "permodule"
   show OptimizationScope_WholeCore = "perwholecore"
@@ -127,10 +134,10 @@
 allOptimScopeMp :: Map.Map String OptimizationScope
 allOptimScopeMp = str2stMp
 
-{-# LINE 214 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 225 "src/ehc/Base/Optimize.chs" #-}
 type OptimizeRequiresMp = Map.Map Optimize OptimizeS
 
-{-# LINE 218 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 229 "src/ehc/Base/Optimize.chs" #-}
 optimizeRequiresMp :: OptimizeRequiresMp
 optimizeRequiresMp
   = Map.map Set.fromList $ Map.fromList
@@ -139,7 +146,7 @@
         )
       ]
 
-{-# LINE 232 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 243 "src/ehc/Base/Optimize.chs" #-}
 -- | transitive closure of required optimizations
 optimizeRequiresClosure :: OptimizeS -> OptimizeS
 optimizeRequiresClosure os
@@ -150,14 +157,14 @@
               `Set.difference` os
         closes = Set.fold close
 
-{-# LINE 248 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 259 "src/ehc/Base/Optimize.chs" #-}
 type OptimizeS = Set.Set Optimize
 
-{-# LINE 252 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 263 "src/ehc/Base/Optimize.chs" #-}
 -- | mapping to group of optimizations
 type OptimizationLevelMp = Map.Map OptimizationLevel OptimizeS
 
-{-# LINE 257 "src/ehc/Base/Optimize.chs" #-}
+{-# LINE 268 "src/ehc/Base/Optimize.chs" #-}
 -- | map from level to optimizations, specified as increments relative to previous in Enum ordering of level
 optimizationLevelMp :: OptimizationLevelMp
 optimizationLevelMp
diff --git a/src/UHC/Light/Compiler/Base/ParseUtils.hs b/src/UHC/Light/Compiler/Base/ParseUtils.hs
--- a/src/UHC/Light/Compiler/Base/ParseUtils.hs
+++ b/src/UHC/Light/Compiler/Base/ParseUtils.hs
@@ -40,18 +40,18 @@
 -- | Options to influence parsing
 data EHParseOpts
   = EHParseOpts
-      { ehpoptsLitMode		:: Bool			-- ^ literal mode?
-      , ehpoptsStopAtErr	:: Bool			-- ^ stop prematurely when parse error occurs?
-      , ehpoptsForImport	:: Bool			-- ^ for import only?
+      { ehpoptsLitMode			:: Bool			-- ^ literal mode?
+      , ehpoptsOkToStopAtErr	:: Bool			-- ^ stop prematurely when parse error occurs and be ok with the result parsed until then?
+      , ehpoptsForImport		:: Bool			-- ^ for import only?
       }
     deriving (Show)
 
 defaultEHParseOpts :: EHParseOpts
 defaultEHParseOpts
   = EHParseOpts
-      { ehpoptsLitMode		= False
-      , ehpoptsStopAtErr	= False
-      , ehpoptsForImport	= False
+      { ehpoptsLitMode			= False
+      , ehpoptsOkToStopAtErr	= False
+      , ehpoptsForImport		= False
       }
 
 {-# LINE 83 "src/ehc/Base/ParseUtils.chs" #-}
@@ -84,7 +84,7 @@
 -- instance EHParser (OffsideParser [Token] Pair Token (Maybe Token)) [Token] Token (OffsideSymbol Token) (Maybe Token) where
   ehScanParseToResMsgs sopts popts prs fn fh = do
     tokens <- offsideScanHandle sopts fn fh
-    return $ if ehpoptsStopAtErr popts
+    return $ if ehpoptsOkToStopAtErr popts
       then parseOffsideToResMsgsStopAtErr prs tokens
       else parseOffsideToResMsgs prs tokens
 
diff --git a/src/UHC/Light/Compiler/Base/Trace.hs b/src/UHC/Light/Compiler/Base/Trace.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/Base/Trace.hs
@@ -0,0 +1,92 @@
+module UHC.Light.Compiler.Base.Trace
+( (><)
+, TraceOn (..), allTraceOnMp
+, TrPP, trppIsEmpty, trppEmpty
+, trPPOnIO, trPP, trOnPP, trOn )
+where
+import UHC.Util.Pretty
+import UHC.Util.Utils
+import GHC.Generics (Generic)
+import Data.Typeable
+import Control.Monad
+import Control.Monad.IO.Class
+import qualified Data.Map as Map
+import qualified Data.Sequence as Sq
+import qualified Data.Foldable as Fld
+import Data.Sequence ((><))
+import UHC.Light.Compiler.Base.Common
+
+{-# LINE 31 "src/ehc/Base/Trace.chs" #-}
+-- | Trace on specific topic(s)
+data TraceOn
+  = TraceOn_BldFun					-- build functions (bcall, ...)
+  | TraceOn_BldFlow					-- build flow
+  | TraceOn_BldFPaths				-- build fpaths constructed
+  | TraceOn_BldSearchPaths			-- build searchpath used
+  | TraceOn_BldSccImports			-- build compile order (scc = strongly connected components)
+  | TraceOn_BldTypeables			-- build Typeable instances encountered
+  | TraceOn_BldPipe					-- build Pipe related
+  | TraceOn_BldPlan					-- build Plan related
+  | TraceOn_BldFold					-- build folds related
+  | TraceOn_BldTimes				-- build file times related
+  | TraceOn_BldResult				-- build results related
+  | TraceOn_BldImport				-- build import related
+  | TraceOn_BldRef					-- build reference related
+  | TraceOn_BldMod					-- build module related
+  | TraceOn_HsScc					-- HS scc of name dependency analysis
+  | TraceOn_HsDpd					-- HS dpd info of name dependency analysis
+  | TraceOn_HsOcc					-- HS name occurrence info
+  | TraceOn_EhClsGam				-- EH class gam lookup results
+  | TraceOn_EhDataGam				-- EH data gam lookup results
+  | TraceOn_EhValGam				-- EH value gam lookup results
+  | TraceOn_RunMod					-- run module related
+  | TraceOn_RunHeap					-- run heap related
+  | TraceOn_RunGlobals				-- run globals related
+  | TraceOn_RunFrame				-- run frame (minimally) related
+  | TraceOn_RunFrames				-- run frames related
+  | TraceOn_RunEval					-- run evaluation related
+  | TraceOn_RunRef					-- run reference related
+  deriving (Eq,Ord,Enum,Show,Typeable,Bounded,Generic)
+
+instance DataAndConName TraceOn
+
+allTraceOnMp :: Map.Map String TraceOn
+allTraceOnMp = str2stMpWithShow (strToLower . showUnprefixed 1)
+
+{-# LINE 75 "src/ehc/Base/Trace.chs" #-}
+type TrPP = Sq.Seq PP_Doc
+
+trppIsEmpty :: TrPP -> Bool
+trppIsEmpty = Sq.null
+
+trppEmpty :: TrPP
+trppEmpty = Sq.empty
+
+{-# LINE 85 "src/ehc/Base/Trace.chs" #-}
+-- | Tracing PPs
+trPP :: (TraceOn -> Bool) -> TraceOn -> [PP_Doc] -> TrPP
+trPP onTr ton ms = if onTr ton then pr ms else trppEmpty
+  where pr []      = trppEmpty
+        pr [m]     = Sq.singleton $ show ton >|< ":" >#< m
+        pr (m:ms)  = pr [m] >< (Sq.fromList $ map (indent 2) ms)
+
+-- | Dump trace IO monadically
+trPPOnIO :: (Monad m, MonadIO m) => TrPP -> m ()
+trPPOnIO ppl = liftIO $ mapM_ putPPLn $ Fld.toList ppl
+
+-- | Tracing PPs, producing output on IO
+trOnPP :: (Monad m, MonadIO m) => (TraceOn -> Bool) -> TraceOn -> [PP_Doc] -> m ()
+trOnPP onTr ton ms = when (onTr ton) $ trPPOnIO $ trPP onTr ton ms
+{-
+  where pr []      = return ()
+        pr [m]     = putPPLn $ show ton >|< ":" >#< m
+        pr (m:ms)  = do pr [m]
+                        forM_ ms $ \m -> putPPLn $ indent 2 m
+-}
+{-# INLINE trOnPP #-}
+
+-- | Tracing Strings, producing output on IO
+trOn :: (Monad m, MonadIO m) => (TraceOn -> Bool) -> TraceOn -> [String] -> m ()
+trOn onTr ton ms = trOnPP onTr ton $ map pp ms
+{-# INLINE trOn #-}
+
diff --git a/src/UHC/Light/Compiler/Base/TreeTrie.hs b/src/UHC/Light/Compiler/Base/TreeTrie.hs
--- a/src/UHC/Light/Compiler/Base/TreeTrie.hs
+++ b/src/UHC/Light/Compiler/Base/TreeTrie.hs
@@ -31,7 +31,6 @@
 import qualified UHC.Util.Pretty as PP
 import Data.Typeable (Typeable)
 import Data.Generics (Data)
-import UHC.Light.Compiler.Base.Debug
 import Control.Monad
 import UHC.Util.Serialize
 
diff --git a/src/UHC/Light/Compiler/Base/UnderDev.hs b/src/UHC/Light/Compiler/Base/UnderDev.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/Base/UnderDev.hs
@@ -0,0 +1,25 @@
+module UHC.Light.Compiler.Base.UnderDev
+( UnderDev (..), allUnderDevMp )
+where
+import UHC.Util.Utils
+import GHC.Generics (Generic)
+import Data.Typeable
+import qualified Data.Map as Map
+import UHC.Light.Compiler.Base.Common
+
+{-# LINE 31 "src/ehc/Base/UnderDev.chs" #-}
+-- | Topics under development
+data UnderDev
+  = UnderDev_Anon					-- something under development not further specified
+  | UnderDev_NameAnalysis			-- alternate (more accurate) name dependency analysis, required for named instances
+  | UnderDev_NamedInst				-- newer syntax for naming instances
+  deriving (Eq,Ord,Enum,Typeable,Bounded,Generic)
+
+instance DataAndConName UnderDev
+
+instance Show UnderDev where
+  show = strToLower . showUnprefixed 1
+
+allUnderDevMp :: Map.Map String UnderDev
+allUnderDevMp = str2stMp
+
diff --git a/src/UHC/Light/Compiler/CodeGen/CEnv.hs b/src/UHC/Light/Compiler/CodeGen/CEnv.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/CodeGen/CEnv.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module UHC.Light.Compiler.CodeGen.CEnv
+( CEnv (..), emptyCEnv
+, cenvDataGam
+, cenvLamMp )
+where
+import Data.Typeable
+import UHC.Util.Lens
+import UHC.Light.Compiler.Gam
+import UHC.Light.Compiler.Gam.DataGam
+import UHC.Light.Compiler.LamInfo
+
+
+
+{-# LINE 31 "src/ehc/CodeGen/CEnv.chs" #-}
+data CEnv
+  = CEnv
+      { _cenvDataGam         :: DataGam			-- info about datatypes
+      											-- 20151009 AD: TBD, for now non strict field
+      , _cenvLamMp         	 :: LamMp			-- info about functions
+      											-- 20151009 AD: TBD, for now non strict field
+      -- , _cenvOptim       	 :: !Optim			-- inter module optimisation info
+      											-- 20151009 AD: TBD, for now non strict field
+      }
+  deriving (Typeable)
+
+emptyCEnv =
+  CEnv emptyGam
+       emptyLamMp
+       -- defaultOptim
+
+{-# LINE 57 "src/ehc/CodeGen/CEnv.chs" #-}
+mkLabel ''CEnv
+
+
diff --git a/src/UHC/Light/Compiler/CodeGen/ImportUsedModules.hs b/src/UHC/Light/Compiler/CodeGen/ImportUsedModules.hs
--- a/src/UHC/Light/Compiler/CodeGen/ImportUsedModules.hs
+++ b/src/UHC/Light/Compiler/CodeGen/ImportUsedModules.hs
@@ -7,7 +7,7 @@
 {-# LINE 18 "src/ehc/CodeGen/ImportUsedModules.chs" #-}
 data ImportUsedModules
   = ImportUsedModules
-      { iumHSDeclModules		:: !HsNameS			-- ^ imported modules as declared in src .hs
+      { iumSrcDeclModules		:: !HsNameS			-- ^ imported modules as declared in src .hs
       , iumHIDeclModules		:: !HsNameS			-- ^ imported modules as declared, either in .hs or .hi
       , iumHIUsedModules		:: !HsNameS			-- ^ imported modules as actually used
       , iumIntrodModules		:: !HsNameS			-- ^ module names for which a introduction/def is made
diff --git a/src/UHC/Light/Compiler/CodeGen/ModuleImportExportImpl.hs b/src/UHC/Light/Compiler/CodeGen/ModuleImportExportImpl.hs
--- a/src/UHC/Light/Compiler/CodeGen/ModuleImportExportImpl.hs
+++ b/src/UHC/Light/Compiler/CodeGen/ModuleImportExportImpl.hs
@@ -14,6 +14,7 @@
       , mieimplHsName2FldMpMp	:: HsName2FldMpMp	-- ^ imported modules fld mp
       , mieimplHsName2FldMp		:: HsName2FldMp		-- ^ export fld map
       }
+  deriving (Typeable)
 
 emptyModuleImportExportImpl = ModuleImportExportImpl Map.empty [] Map.empty Map.empty
 
diff --git a/src/UHC/Light/Compiler/Config.hs b/src/UHC/Light/Compiler/Config.hs
--- a/src/UHC/Light/Compiler/Config.hs
+++ b/src/UHC/Light/Compiler/Config.hs
@@ -17,6 +17,7 @@
 , mbSuffixExec, linkerSymbolPrefix
 , suffixDotlessBinaryCoreRun, suffixDotlessInputOutputBinaryCoreRun, suffixDotlessOutputTextualCoreRun, suffixDotlessInputOutputTextualCoreRun
 , suffixDotlessBinaryCore, suffixDotlessInputOutputBinaryCore, suffixDotlessOutputTextualCore, suffixDotlessInputOutputTextualCore
+, suffixDotlessOutputTextualEh, suffixDotlessOutputTextualEhAST
 , suffixDotlessInputOutputCoreRun
 , mkInstallPkgdirSystem
 , mkInstallPkgdirUser
@@ -65,12 +66,12 @@
       , verMajor            = "1"
       , verMinor            = "1"
       , verMinorMinor       = "9"
-      , verMinorMinorMinor  = "0"
+      , verMinorMinorMinor  = "1"
       , verQuality          = "alpha"
       , verShort            = "1.1"
       , verMedium           = "1.1.9"
-      , verFull             = "1.1.9.0"
-      , verAsNumber         = "1010900"
+      , verFull             = "1.1.9.1"
+      , verAsNumber         = "1010901"
       , verProg             = "ehc"
       }
 
@@ -248,6 +249,15 @@
 
 
 {-# LINE 344 "src/ehc/Config.chs" #-}
+-- | Suffix (dotless) for textually dumped/output EH files
+suffixDotlessOutputTextualEh :: String
+suffixDotlessOutputTextualEh = "teh"
+
+-- | Suffix (dotless) for textually dumped/output EH AST files
+suffixDotlessOutputTextualEhAST :: String
+suffixDotlessOutputTextualEhAST = "asteh"
+
+{-# LINE 354 "src/ehc/Config.chs" #-}
 -- | Suffix (dotless) for CoreRun files
 suffixDotlessInputOutputCoreRun :: String
 suffixDotlessInputOutputCoreRun = "rcr"
diff --git a/src/UHC/Light/Compiler/ConfigInstall.hs b/src/UHC/Light/Compiler/ConfigInstall.hs
--- a/src/UHC/Light/Compiler/ConfigInstall.hs
+++ b/src/UHC/Light/Compiler/ConfigInstall.hs
@@ -11,7 +11,7 @@
 cppOpts  = fst $ parseCmdLineOpts Cmd_CPP "-Wno-invalid-pp-token"
 -- cppOpts  = showCmdLineOpts cppOpts'
 
-ehcSvnRevision = "master@94b9e4103b"
+ehcSvnRevision = "master@c64f1799ad"
 
 ehcDefaultInplaceInstallDir = "/Volumes/Work/Programming/uhc/EHC/install"
 
diff --git a/src/UHC/Light/Compiler/ConfigInternalVersions.hs b/src/UHC/Light/Compiler/ConfigInternalVersions.hs
--- a/src/UHC/Light/Compiler/ConfigInternalVersions.hs
+++ b/src/UHC/Light/Compiler/ConfigInternalVersions.hs
@@ -1,7 +1,7 @@
 module UHC.Light.Compiler.ConfigInternalVersions
 ( InternalVersionCombined
 , internalVersionCombined
-, internalVersionHI, internalVersionCore, internalVersionCoreRun )
+, internalVersionTySys, internalVersionCodeGen, internalVersionHI, internalVersionCore, internalVersionCoreRun )
 where
 import Data.Word
 import Data.Bits
@@ -20,8 +20,16 @@
       internalVersionHI
   .|. (internalVersionCore 		`shiftL` 8)
   .|. (internalVersionCoreRun 	`shiftL` 16)
+  .|. (internalVersionTySys 	`shiftL` 24)
+  .|. (internalVersionCodeGen 	`shiftL` 32)
 
-{-# LINE 33 "src/ehc/ConfigInternalVersions.chs" #-}
+{-# LINE 35 "src/ehc/ConfigInternalVersions.chs" #-}
+-- | For variation in type inferencing
+internalVersionTySys = mkInternalVersion 5
+
+-- | For variation in code gen
+internalVersionCodeGen = mkInternalVersion 1
+
 -- | For binary/serialized HI .hi files and all data stored there
 internalVersionHI = mkInternalVersion 1
 
@@ -29,5 +37,5 @@
 internalVersionCore = mkInternalVersion 20
 
 -- | For binary/serialized CoreRun .crr/.bcrr./tcrr etc files
-internalVersionCoreRun = mkInternalVersion 6
+internalVersionCoreRun = mkInternalVersion 11
 
diff --git a/src/UHC/Light/Compiler/Core.hs b/src/UHC/Light/Compiler/Core.hs
--- a/src/UHC/Light/Compiler/Core.hs
+++ b/src/UHC/Light/Compiler/Core.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core.ag)
 module UHC.Light.Compiler.Core(module UHC.Light.Compiler.AbstractCore
 , module UHC.Light.Compiler.AnaDomain
 , module UHC.Light.Compiler.Base.Target
@@ -60,7 +60,6 @@
 import qualified Data.Map as Map
 import qualified Data.Set as Set
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug
 import UHC.Light.Compiler.Module.Merge
 import Data.Array
 import Control.Monad
@@ -106,8 +105,6 @@
 
 instance Show CBound where
   show _ = "CBound"
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Core/BindExtract.hs b/src/UHC/Light/Compiler/Core/BindExtract.hs
--- a/src/UHC/Light/Compiler/Core/BindExtract.hs
+++ b/src/UHC/Light/Compiler/Core/BindExtract.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/BindExtra)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/BindExtra)
 module UHC.Light.Compiler.Core.BindExtract(BoundSel (..), noBoundSel, emptyBoundSel
 , boundSelVal, boundSelExpr, boundSelMetaLev0, boundSelMetaLev01
 , SelVal
diff --git a/src/UHC/Light/Compiler/Core/Check.hs b/src/UHC/Light/Compiler/Core/Check.hs
--- a/src/UHC/Light/Compiler/Core/Check.hs
+++ b/src/UHC/Light/Compiler/Core/Check.hs
@@ -1,3462 +1,3261 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Check.ag)
-module UHC.Light.Compiler.Core.Check(NotYetTransformed (..), NotYetTransformedS
-, cmodCheck', Inh_CodeAGItf (..), Syn_CodeAGItf (..)) where
-
-import UHC.Light.Compiler.Base.HsName.Builtin
-import UHC.Light.Compiler.Base.Common
-import UHC.Light.Compiler.Opts
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Error
-import UHC.Light.Compiler.Gam
-import UHC.Light.Compiler.Gam.DataGam
-import UHC.Light.Compiler.Base.TermLike
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.Core
-import Data.Maybe
-import qualified Data.Map as Map
-import qualified Data.Set as Set
-import qualified UHC.Util.FastSeq as Seq
-import qualified UHC.Util.Rel as Rel
-import Control.Applicative
-import UHC.Util.Pretty
-import UHC.Light.Compiler.Module.ImportExport
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- | What not yet has been transformed in the given Core, absence means some aspect has been transformed everywhere
-data NotYetTransformed
-  = NotYetTransformed_LambdaLifted
-  | NotYetTransformed_ANormal
-  deriving (Eq, Ord, Show, Enum, Bounded)
-
-type NotYetTransformedS = Set.Set NotYetTransformed
-
-
-
-cmodCheck'
-  :: Inh_CodeAGItf
-     -> CModule
-     -> Syn_CodeAGItf
-cmodCheck' inh cmod
-  = t
-  where t = wrap_CodeAGItf
-              (sem_CodeAGItf (CodeAGItf_AGItf cmod))
-              inh
-
-
-
-
-type UndefNmMp = Map.Map MetaLev [ACoreBindRef]
-
-undefmpUnion :: UndefNmMp -> UndefNmMp -> UndefNmMp
-undefmpUnion = Map.unionWith (++)
-
--- CAlt --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Alt:
-         child pat            : CPat 
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local lev         : _
--}
--- cata
-sem_CAlt :: CAlt ->
-            T_CAlt
-sem_CAlt (CAlt_Alt _pat _expr) =
-    (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
--- semantic domain
-type T_CAlt = DataGam ->
-              EvalCtx ->
-              Int ->
-              EHCOpts ->
-              ( ErrSq,Bool,UndefNmMp)
-sem_CAlt_Alt :: T_CPat ->
-                T_CExpr ->
-                T_CAlt
-sem_CAlt_Alt pat_ expr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIlev
-       _lhsIopts ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _exprOopts ->
-            (case (_lhsIlev + 1) of
-             { _lev ->
-             (case (_lev) of
-              { _exprOlev ->
-              (case (_lhsIevalCtx) of
-               { _exprOevalCtx ->
-               (case (_lhsIdataGam) of
-                { _exprOdataGam ->
-                (case (True) of
-                 { _exprOisTopTup ->
-                 (case (True) of
-                  { _exprOisTopApp ->
-                  (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                   { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                       (case (_lhsIopts) of
-                        { _patOopts ->
-                        (case (_lev) of
-                         { _patOlev ->
-                         (case (_lhsIdataGam) of
-                          { _patOdataGam ->
-                          (case (pat_ _patOdataGam _patOlev _patOopts) of
-                           { ( _patIerrs,_patIfldNmL,_patIisFreeOfLam,_patIundefNmMp) ->
-                               (case (_patIerrs `Seq.union` _exprIerrs) of
-                                { _lhsOerrs ->
-                                (case (_patIisFreeOfLam && _exprIisFreeOfLam) of
-                                 { _lhsOisFreeOfLam ->
-                                 (case (_patIundefNmMp `undefmpUnion` _exprIundefNmMp) of
-                                  { _lhsOundefNmMp ->
-                                  ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CAltL -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CAlt 
-         child tl             : CAltL 
-      alternative Nil:
--}
--- cata
-sem_CAltL :: CAltL ->
-             T_CAltL
-sem_CAltL list =
-    (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
--- semantic domain
-type T_CAltL = DataGam ->
-               EvalCtx ->
-               Int ->
-               EHCOpts ->
-               ( ErrSq,Bool,UndefNmMp)
-sem_CAltL_Cons :: T_CAlt ->
-                  T_CAltL ->
-                  T_CAltL
-sem_CAltL_Cons hd_ tl_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _tlOopts ->
-          (case (_lhsIlev) of
-           { _tlOlev ->
-           (case (_lhsIevalCtx) of
-            { _tlOevalCtx ->
-            (case (_lhsIdataGam) of
-             { _tlOdataGam ->
-             (case (tl_ _tlOdataGam _tlOevalCtx _tlOlev _tlOopts) of
-              { ( _tlIerrs,_tlIisFreeOfLam,_tlIundefNmMp) ->
-                  (case (_lhsIopts) of
-                   { _hdOopts ->
-                   (case (_lhsIlev) of
-                    { _hdOlev ->
-                    (case (_lhsIevalCtx) of
-                     { _hdOevalCtx ->
-                     (case (_lhsIdataGam) of
-                      { _hdOdataGam ->
-                      (case (hd_ _hdOdataGam _hdOevalCtx _hdOlev _hdOopts) of
-                       { ( _hdIerrs,_hdIisFreeOfLam,_hdIundefNmMp) ->
-                           (case (_hdIerrs `Seq.union` _tlIerrs) of
-                            { _lhsOerrs ->
-                            (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
-                             { _lhsOisFreeOfLam ->
-                             (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                              { _lhsOundefNmMp ->
-                              ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CAltL_Nil :: T_CAltL
-sem_CAltL_Nil =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CBind -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         isGlobal             : Bool
-         letBindingsCateg     : CBindCateg
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         hasMain              : Bool
-         isFreeOfLam          : Bool
-         modDefsRel           : ModEntRel
-         nm                   : HsName
-         notYetTransformed    : NotYetTransformedS
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Bind:
-         child nm             : {HsName}
-         child bindAspects    : CBoundL 
--}
--- cata
-sem_CBind :: CBind ->
-             T_CBind
-sem_CBind (CBind_Bind _nm _bindAspects) =
-    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
--- semantic domain
-type T_CBind = DataGam ->
-               EvalCtx ->
-               Bool ->
-               CBindCateg ->
-               Int ->
-               EHCOpts ->
-               ( ErrSq,Bool,Bool,ModEntRel,HsName,NotYetTransformedS,UndefNmMp)
-sem_CBind_Bind :: HsName ->
-                  T_CBoundL ->
-                  T_CBind
-sem_CBind_Bind nm_ bindAspects_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _bindAspectsOopts ->
-          (case (_lhsIlev) of
-           { _bindAspectsOlev ->
-           (case (_lhsIletBindingsCateg) of
-            { _bindAspectsOletBindingsCateg ->
-            (case (_lhsIisGlobal) of
-             { _bindAspectsOisGlobal ->
-             (case (_lhsIevalCtx) of
-              { _bindAspectsOevalCtx ->
-              (case (_lhsIdataGam) of
-               { _bindAspectsOdataGam ->
-               (case (nm_) of
-                { _bindAspectsOnm ->
-                (case (bindAspects_ _bindAspectsOdataGam _bindAspectsOevalCtx _bindAspectsOisGlobal _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOnm _bindAspectsOopts) of
-                 { ( _bindAspectsIerrs,_bindAspectsIisFreeOfLam,_bindAspectsInotYetTransformed,_bindAspectsIundefNmMp) ->
-                     (case (_bindAspectsIerrs) of
-                      { _lhsOerrs ->
-                      (case (nm_ == hsnMain) of
-                       { _lhsOhasMain ->
-                       (case (_bindAspectsIisFreeOfLam) of
-                        { _lhsOisFreeOfLam ->
-                        (case (let o = IdOcc nm_ IdOcc_Val
-                               in  Rel.fromList [ (hsnQualified (ioccNm o), ModEnt (ioccKind o) o Set.empty emptyRange) ]) of
-                         { _lhsOmodDefsRel ->
-                         (case (nm_) of
-                          { _lhsOnm ->
-                          (case (_bindAspectsInotYetTransformed) of
-                           { _lhsOnotYetTransformed ->
-                           (case (_bindAspectsIundefNmMp) of
-                            { _lhsOundefNmMp ->
-                            ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnm,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CBindAnn ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Coe:
-         child coe            : {RelevCoe}
--}
--- cata
-sem_CBindAnn :: CBindAnn ->
-                T_CBindAnn
-sem_CBindAnn (CBindAnn_Coe _coe) =
-    (sem_CBindAnn_Coe _coe)
--- semantic domain
-type T_CBindAnn = DataGam ->
-                  Int ->
-                  EHCOpts ->
-                  ( ErrSq,Bool,UndefNmMp)
-sem_CBindAnn_Coe :: RelevCoe ->
-                    T_CBindAnn
-sem_CBindAnn_Coe coe_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CBindAnnL ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CBindAnn 
-         child tl             : CBindAnnL 
-      alternative Nil:
--}
--- cata
-sem_CBindAnnL :: CBindAnnL ->
-                 T_CBindAnnL
-sem_CBindAnnL list =
-    (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
--- semantic domain
-type T_CBindAnnL = DataGam ->
-                   Int ->
-                   EHCOpts ->
-                   ( ErrSq,Bool,UndefNmMp)
-sem_CBindAnnL_Cons :: T_CBindAnn ->
-                      T_CBindAnnL ->
-                      T_CBindAnnL
-sem_CBindAnnL_Cons hd_ tl_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _tlOopts ->
-          (case (_lhsIlev) of
-           { _tlOlev ->
-           (case (_lhsIdataGam) of
-            { _tlOdataGam ->
-            (case (tl_ _tlOdataGam _tlOlev _tlOopts) of
-             { ( _tlIerrs,_tlIisFreeOfLam,_tlIundefNmMp) ->
-                 (case (_lhsIopts) of
-                  { _hdOopts ->
-                  (case (_lhsIlev) of
-                   { _hdOlev ->
-                   (case (_lhsIdataGam) of
-                    { _hdOdataGam ->
-                    (case (hd_ _hdOdataGam _hdOlev _hdOopts) of
-                     { ( _hdIerrs,_hdIisFreeOfLam,_hdIundefNmMp) ->
-                         (case (_hdIerrs `Seq.union` _tlIerrs) of
-                          { _lhsOerrs ->
-                          (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
-                           { _lhsOisFreeOfLam ->
-                           (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                            { _lhsOundefNmMp ->
-                            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBindAnnL_Nil :: T_CBindAnnL
-sem_CBindAnnL_Nil =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CBindL ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         isGlobal             : Bool
-         letBindingsCateg     : CBindCateg
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         hasMain              : Bool
-         isFreeOfLam          : Bool
-         modDefsRel           : ModEntRel
-         notYetTransformed    : NotYetTransformedS
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CBind 
-         child tl             : CBindL 
-      alternative Nil:
--}
--- cata
-sem_CBindL :: CBindL ->
-              T_CBindL
-sem_CBindL list =
-    (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
--- semantic domain
-type T_CBindL = DataGam ->
-                EvalCtx ->
-                Bool ->
-                CBindCateg ->
-                Int ->
-                EHCOpts ->
-                ( ErrSq,Bool,Bool,ModEntRel,NotYetTransformedS,UndefNmMp)
-sem_CBindL_Cons :: T_CBind ->
-                   T_CBindL ->
-                   T_CBindL
-sem_CBindL_Cons hd_ tl_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _tlOopts ->
-          (case (_lhsIlev) of
-           { _tlOlev ->
-           (case (_lhsIletBindingsCateg) of
-            { _tlOletBindingsCateg ->
-            (case (_lhsIisGlobal) of
-             { _tlOisGlobal ->
-             (case (_lhsIevalCtx) of
-              { _tlOevalCtx ->
-              (case (_lhsIdataGam) of
-               { _tlOdataGam ->
-               (case (tl_ _tlOdataGam _tlOevalCtx _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOopts) of
-                { ( _tlIerrs,_tlIhasMain,_tlIisFreeOfLam,_tlImodDefsRel,_tlInotYetTransformed,_tlIundefNmMp) ->
-                    (case (_lhsIopts) of
-                     { _hdOopts ->
-                     (case (_lhsIlev) of
-                      { _hdOlev ->
-                      (case (_lhsIletBindingsCateg) of
-                       { _hdOletBindingsCateg ->
-                       (case (_lhsIisGlobal) of
-                        { _hdOisGlobal ->
-                        (case (_lhsIevalCtx) of
-                         { _hdOevalCtx ->
-                         (case (_lhsIdataGam) of
-                          { _hdOdataGam ->
-                          (case (hd_ _hdOdataGam _hdOevalCtx _hdOisGlobal _hdOletBindingsCateg _hdOlev _hdOopts) of
-                           { ( _hdIerrs,_hdIhasMain,_hdIisFreeOfLam,_hdImodDefsRel,_hdInm,_hdInotYetTransformed,_hdIundefNmMp) ->
-                               (case (_hdIerrs `Seq.union` _tlIerrs) of
-                                { _lhsOerrs ->
-                                (case (_hdIhasMain || _tlIhasMain) of
-                                 { _lhsOhasMain ->
-                                 (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
-                                  { _lhsOisFreeOfLam ->
-                                  (case (_hdImodDefsRel `Rel.union` _tlImodDefsRel) of
-                                   { _lhsOmodDefsRel ->
-                                   (case (_hdInotYetTransformed `Set.union` _tlInotYetTransformed) of
-                                    { _lhsOnotYetTransformed ->
-                                    (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                                     { _lhsOundefNmMp ->
-                                     ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBindL_Nil :: T_CBindL
-sem_CBindL_Nil =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (Rel.empty) of
-             { _lhsOmodDefsRel ->
-             (case (Set.empty) of
-              { _lhsOnotYetTransformed ->
-              (case (Map.empty) of
-               { _lhsOundefNmMp ->
-               ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }))
--- CBound ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         isGlobal             : Bool
-         isTopApp             : Bool
-         isTopTup             : Bool
-         letBindingsCateg     : CBindCateg
-         lev                  : Int
-         nm                   : HsName
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         isSimple             : Bool
-         notYetTransformed    : NotYetTransformedS
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Bind:
-         child bindMeta       : CMetas 
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isSimple    : _
-            local bindNotYetTransformed : _
-      alternative Meta:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child cmetas         : CMetas 
-      alternative RelevTy:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child relevTy        : {RelevTy}
-      alternative Val:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child mlev           : {MetaLev}
-         child lbl            : {CLbl}
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isSimple    : _
-            local bindNotYetTransformed : _
-      alternative Ty:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child ty             : {Ty}
-      alternative FFE:
-         child callconv       : {FFIWay}
-         child expEnt         : {ForeignEnt}
-         child expr           : CExpr 
-         child ty             : {Ty}
-         visit 0:
-            local whatAbove   : {WhatExpr}
--}
--- cata
-sem_CBound :: CBound ->
-              T_CBound
-sem_CBound (CBound_Bind _bindMeta _expr) =
-    (sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
-sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
-    (sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
-sem_CBound (CBound_RelevTy _aspectKeyS _relevTy) =
-    (sem_CBound_RelevTy _aspectKeyS _relevTy)
-sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
-    (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
-sem_CBound (CBound_Ty _aspectKeyS _ty) =
-    (sem_CBound_Ty _aspectKeyS _ty)
-sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
-    (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
--- semantic domain
-type T_CBound = DataGam ->
-                EvalCtx ->
-                Bool ->
-                Bool ->
-                Bool ->
-                CBindCateg ->
-                Int ->
-                HsName ->
-                EHCOpts ->
-                ( ErrSq,Bool,Bool,NotYetTransformedS,UndefNmMp)
-sem_CBound_Bind :: T_CMetas ->
-                   T_CExpr ->
-                   T_CBound
-sem_CBound_Bind bindMeta_ expr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (ExprIsBind _lhsInm) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _exprOopts ->
-            (case (_lhsIlev) of
-             { _exprOlev ->
-             (case (_lhsIevalCtx) of
-              { _exprOevalCtx ->
-              (case (_lhsIdataGam) of
-               { _exprOdataGam ->
-               (case (True) of
-                { _exprOisTopTup ->
-                (case (True) of
-                 { _exprOisTopApp ->
-                 (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                  { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                      (case (_lhsIopts) of
-                       { _bindMetaOopts ->
-                       (case (_lhsIlev) of
-                        { _bindMetaOlev ->
-                        (case (_lhsIdataGam) of
-                         { _bindMetaOdataGam ->
-                         (case (bindMeta_ _bindMetaOdataGam _bindMetaOlev _bindMetaOopts) of
-                          { ( _bindMetaIerrs,_bindMetaIisFreeOfLam,_bindMetaIundefNmMp) ->
-                              (case (_bindMetaIerrs `Seq.union` _exprIerrs) of
-                               { _lhsOerrs ->
-                               (case (_bindMetaIisFreeOfLam && _exprIisFreeOfLam) of
-                                { _lhsOisFreeOfLam ->
-                                (case (case _exprIwhatBelow of
-                                           ExprIsVar _     -> True
-                                           ExprIsInt _     -> True
-                                           ExprIsOtherWHNF -> True
-                                           _               -> False) of
-                                 { _isSimple ->
-                                 (case (_isSimple) of
-                                  { _lhsOisSimple ->
-                                  (case (if whatExprIsLam _exprIwhatBelow
-                                         then if _lhsIisGlobal && _exprIlamBodyIsFreeOfLam
-                                              then Set.empty
-                                              else Set.singleton NotYetTransformed_LambdaLifted
-                                         else if _exprIisFreeOfLam
-                                              then Set.empty
-                                              else Set.singleton NotYetTransformed_LambdaLifted) of
-                                   { _bindNotYetTransformed ->
-                                   (case (Set.unions [_bindNotYetTransformed, _exprInotYetTransformed]) of
-                                    { _lhsOnotYetTransformed ->
-                                    (case (_bindMetaIundefNmMp `undefmpUnion` _exprIundefNmMp) of
-                                     { _lhsOundefNmMp ->
-                                     ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBound_Meta :: ACoreBindAspectKeyS ->
-                   T_CMetas ->
-                   T_CBound
-sem_CBound_Meta aspectKeyS_ cmetas_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _cmetasOopts ->
-          (case (_lhsIlev) of
-           { _cmetasOlev ->
-           (case (_lhsIdataGam) of
-            { _cmetasOdataGam ->
-            (case (cmetas_ _cmetasOdataGam _cmetasOlev _cmetasOopts) of
-             { ( _cmetasIerrs,_cmetasIisFreeOfLam,_cmetasIundefNmMp) ->
-                 (case (_cmetasIerrs) of
-                  { _lhsOerrs ->
-                  (case (_cmetasIisFreeOfLam) of
-                   { _lhsOisFreeOfLam ->
-                   (case (False) of
-                    { _lhsOisSimple ->
-                    (case (Set.empty) of
-                     { _lhsOnotYetTransformed ->
-                     (case (_cmetasIundefNmMp) of
-                      { _lhsOundefNmMp ->
-                      ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }))
-sem_CBound_RelevTy :: ACoreBindAspectKeyS ->
-                      RelevTy ->
-                      T_CBound
-sem_CBound_RelevTy aspectKeyS_ relevTy_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (False) of
-            { _lhsOisSimple ->
-            (case (Set.empty) of
-             { _lhsOnotYetTransformed ->
-             (case (Map.empty) of
-              { _lhsOundefNmMp ->
-              ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }))
-sem_CBound_Val :: ACoreBindAspectKeyS ->
-                  MetaLev ->
-                  CLbl ->
-                  T_CExpr ->
-                  T_CBound
-sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (ExprIsBind _lhsInm) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _exprOopts ->
-            (case (_lhsIlev) of
-             { _exprOlev ->
-             (case (_lhsIisTopTup) of
-              { _exprOisTopTup ->
-              (case (_lhsIisTopApp) of
-               { _exprOisTopApp ->
-               (case (_lhsIevalCtx) of
-                { _exprOevalCtx ->
-                (case (_lhsIdataGam) of
-                 { _exprOdataGam ->
-                 (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                  { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                      (case (_exprIerrs) of
-                       { _lhsOerrs ->
-                       (case (_exprIisFreeOfLam) of
-                        { _lhsOisFreeOfLam ->
-                        (case (case _exprIwhatBelow of
-                                   ExprIsVar _     -> True
-                                   ExprIsInt _     -> True
-                                   ExprIsOtherWHNF -> True
-                                   _               -> False) of
-                         { _isSimple ->
-                         (case (_isSimple) of
-                          { _lhsOisSimple ->
-                          (case (if whatExprIsLam _exprIwhatBelow
-                                 then if _lhsIisGlobal && _exprIlamBodyIsFreeOfLam
-                                      then Set.empty
-                                      else Set.singleton NotYetTransformed_LambdaLifted
-                                 else if _exprIisFreeOfLam
-                                      then Set.empty
-                                      else Set.singleton NotYetTransformed_LambdaLifted) of
-                           { _bindNotYetTransformed ->
-                           (case (Set.unions [_bindNotYetTransformed, _exprInotYetTransformed]) of
-                            { _lhsOnotYetTransformed ->
-                            (case (_exprIundefNmMp) of
-                             { _lhsOundefNmMp ->
-                             ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBound_Ty :: ACoreBindAspectKeyS ->
-                 Ty ->
-                 T_CBound
-sem_CBound_Ty aspectKeyS_ ty_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (False) of
-            { _lhsOisSimple ->
-            (case (Set.empty) of
-             { _lhsOnotYetTransformed ->
-             (case (Map.empty) of
-              { _lhsOundefNmMp ->
-              ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }))
-sem_CBound_FFE :: FFIWay ->
-                  ForeignEnt ->
-                  T_CExpr ->
-                  Ty ->
-                  T_CBound
-sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (ExprIsLam 0 Nothing) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _exprOopts ->
-            (case (_lhsIlev) of
-             { _exprOlev ->
-             (case (_lhsIevalCtx) of
-              { _exprOevalCtx ->
-              (case (_lhsIdataGam) of
-               { _exprOdataGam ->
-               (case (True) of
-                { _exprOisTopTup ->
-                (case (True) of
-                 { _exprOisTopApp ->
-                 (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                  { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                      (case (_exprIerrs) of
-                       { _lhsOerrs ->
-                       (case (_exprIisFreeOfLam) of
-                        { _lhsOisFreeOfLam ->
-                        (case (False) of
-                         { _lhsOisSimple ->
-                         (case (_exprInotYetTransformed) of
-                          { _lhsOnotYetTransformed ->
-                          (case (_exprIundefNmMp) of
-                           { _lhsOundefNmMp ->
-                           ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CBoundL -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         isGlobal             : Bool
-         letBindingsCateg     : CBindCateg
-         lev                  : Int
-         nm                   : HsName
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         notYetTransformed    : NotYetTransformedS
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CBound 
-         child tl             : CBoundL 
-      alternative Nil:
--}
--- cata
-sem_CBoundL :: CBoundL ->
-               T_CBoundL
-sem_CBoundL list =
-    (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
--- semantic domain
-type T_CBoundL = DataGam ->
-                 EvalCtx ->
-                 Bool ->
-                 CBindCateg ->
-                 Int ->
-                 HsName ->
-                 EHCOpts ->
-                 ( ErrSq,Bool,NotYetTransformedS,UndefNmMp)
-sem_CBoundL_Cons :: T_CBound ->
-                    T_CBoundL ->
-                    T_CBoundL
-sem_CBoundL_Cons hd_ tl_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _tlOopts ->
-          (case (_lhsInm) of
-           { _tlOnm ->
-           (case (_lhsIlev) of
-            { _tlOlev ->
-            (case (_lhsIletBindingsCateg) of
-             { _tlOletBindingsCateg ->
-             (case (_lhsIisGlobal) of
-              { _tlOisGlobal ->
-              (case (_lhsIevalCtx) of
-               { _tlOevalCtx ->
-               (case (_lhsIdataGam) of
-                { _tlOdataGam ->
-                (case (tl_ _tlOdataGam _tlOevalCtx _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOnm _tlOopts) of
-                 { ( _tlIerrs,_tlIisFreeOfLam,_tlInotYetTransformed,_tlIundefNmMp) ->
-                     (case (_lhsIopts) of
-                      { _hdOopts ->
-                      (case (_lhsInm) of
-                       { _hdOnm ->
-                       (case (_lhsIlev) of
-                        { _hdOlev ->
-                        (case (_lhsIletBindingsCateg) of
-                         { _hdOletBindingsCateg ->
-                         (case (_lhsIisGlobal) of
-                          { _hdOisGlobal ->
-                          (case (_lhsIevalCtx) of
-                           { _hdOevalCtx ->
-                           (case (_lhsIdataGam) of
-                            { _hdOdataGam ->
-                            (case (True) of
-                             { _hdOisTopTup ->
-                             (case (True) of
-                              { _hdOisTopApp ->
-                              (case (hd_ _hdOdataGam _hdOevalCtx _hdOisGlobal _hdOisTopApp _hdOisTopTup _hdOletBindingsCateg _hdOlev _hdOnm _hdOopts) of
-                               { ( _hdIerrs,_hdIisFreeOfLam,_hdIisSimple,_hdInotYetTransformed,_hdIundefNmMp) ->
-                                   (case (_hdIerrs `Seq.union` _tlIerrs) of
-                                    { _lhsOerrs ->
-                                    (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
-                                     { _lhsOisFreeOfLam ->
-                                     (case (_hdInotYetTransformed `Set.union` _tlInotYetTransformed) of
-                                      { _lhsOnotYetTransformed ->
-                                      (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                                       { _lhsOundefNmMp ->
-                                       ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBoundL_Nil :: T_CBoundL
-sem_CBoundL_Nil =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsInm
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Set.empty) of
-            { _lhsOnotYetTransformed ->
-            (case (Map.empty) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }))
--- CDataCon ----------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         dataConNmL           : [HsName]
-         dataConstrTagMp      : DataConstrTagMp
-         errs                 : ErrSq
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Con:
-         child conNm          : {HsName}
-         child tagNr          : {Int}
-         child arity          : {Int}
-         visit 0:
-            local dti         : _
--}
--- cata
-sem_CDataCon :: CDataCon ->
-                T_CDataCon
-sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
-    (sem_CDataCon_Con _conNm _tagNr _arity)
--- semantic domain
-type T_CDataCon = ( ([HsName]),DataConstrTagMp,ErrSq,UndefNmMp)
-sem_CDataCon_Con :: HsName ->
-                    Int ->
-                    Int ->
-                    T_CDataCon
-sem_CDataCon_Con conNm_ tagNr_ arity_ =
-    (case ([conNm_]) of
-     { _lhsOdataConNmL ->
-     (case (emptyDataTagInfo
-                { dtiConNm          = conNm_
-                , dtiCTag           = mkOnlyConInfoCTag conNm_ tagNr_ arity_
-                }) of
-      { _dti ->
-      (case (Map.singleton conNm_ _dti) of
-       { _lhsOdataConstrTagMp ->
-       (case (Seq.empty) of
-        { _lhsOerrs ->
-        (case (Map.empty) of
-         { _lhsOundefNmMp ->
-         ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) })
--- CDataConL ---------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         dataConNmL           : [HsName]
-         dataConstrTagMp      : DataConstrTagMp
-         errs                 : ErrSq
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CDataCon 
-         child tl             : CDataConL 
-      alternative Nil:
--}
--- cata
-sem_CDataConL :: CDataConL ->
-                 T_CDataConL
-sem_CDataConL list =
-    (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
--- semantic domain
-type T_CDataConL = ( ([HsName]),DataConstrTagMp,ErrSq,UndefNmMp)
-sem_CDataConL_Cons :: T_CDataCon ->
-                      T_CDataConL ->
-                      T_CDataConL
-sem_CDataConL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIdataConNmL,_tlIdataConstrTagMp,_tlIerrs,_tlIundefNmMp) ->
-         (case (hd_) of
-          { ( _hdIdataConNmL,_hdIdataConstrTagMp,_hdIerrs,_hdIundefNmMp) ->
-              (case (_hdIdataConNmL ++ _tlIdataConNmL) of
-               { _lhsOdataConNmL ->
-               (case (_hdIdataConstrTagMp `Map.union` _tlIdataConstrTagMp) of
-                { _lhsOdataConstrTagMp ->
-                (case (_hdIerrs `Seq.union` _tlIerrs) of
-                 { _lhsOerrs ->
-                 (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                  { _lhsOundefNmMp ->
-                  ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) }) })
-sem_CDataConL_Nil :: T_CDataConL
-sem_CDataConL_Nil =
-    (case ([]) of
-     { _lhsOdataConNmL ->
-     (case (Map.empty) of
-      { _lhsOdataConstrTagMp ->
-      (case (Seq.empty) of
-       { _lhsOerrs ->
-       (case (Map.empty) of
-        { _lhsOundefNmMp ->
-        ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) })
--- CDeclMeta ---------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         errs                 : ErrSq
-         gathDataGam          : DataGam
-         modDefsRel           : ModEntRel
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Data:
-         child tyNm           : {HsName}
-         child dataCons       : CDataConL 
--}
--- cata
-sem_CDeclMeta :: CDeclMeta ->
-                 T_CDeclMeta
-sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
-    (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
--- semantic domain
-type T_CDeclMeta = ( ErrSq,DataGam,ModEntRel,UndefNmMp)
-sem_CDeclMeta_Data :: HsName ->
-                      T_CDataConL ->
-                      T_CDeclMeta
-sem_CDeclMeta_Data tyNm_ dataCons_ =
-    (case (dataCons_) of
-     { ( _dataConsIdataConNmL,_dataConsIdataConstrTagMp,_dataConsIerrs,_dataConsIundefNmMp) ->
-         (case (_dataConsIerrs) of
-          { _lhsOerrs ->
-          (case (gamSingleton tyNm_ $ mkDGIForCodegenOnly tyNm_ _dataConsIdataConstrTagMp) of
-           { _lhsOgathDataGam ->
-           (case (let to = IdOcc ( tyNm_) IdOcc_Data
-                      subs = [ ModEnt (ioccKind o) o Set.empty emptyRange | cn <- _dataConsIdataConNmL, let o = IdOcc ( cn) IdOcc_Val ]
-                  in  Rel.singleton (hsnQualified (ioccNm to)) (ModEnt (ioccKind to) to (Set.fromList subs) emptyRange)) of
-            { _lhsOmodDefsRel ->
-            (case (_dataConsIundefNmMp) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) })
--- CDeclMetaL --------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         errs                 : ErrSq
-         gathDataGam          : DataGam
-         modDefsRel           : ModEntRel
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CDeclMeta 
-         child tl             : CDeclMetaL 
-      alternative Nil:
--}
--- cata
-sem_CDeclMetaL :: CDeclMetaL ->
-                  T_CDeclMetaL
-sem_CDeclMetaL list =
-    (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
--- semantic domain
-type T_CDeclMetaL = ( ErrSq,DataGam,ModEntRel,UndefNmMp)
-sem_CDeclMetaL_Cons :: T_CDeclMeta ->
-                       T_CDeclMetaL ->
-                       T_CDeclMetaL
-sem_CDeclMetaL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIerrs,_tlIgathDataGam,_tlImodDefsRel,_tlIundefNmMp) ->
-         (case (hd_) of
-          { ( _hdIerrs,_hdIgathDataGam,_hdImodDefsRel,_hdIundefNmMp) ->
-              (case (_hdIerrs `Seq.union` _tlIerrs) of
-               { _lhsOerrs ->
-               (case (_hdIgathDataGam `gamUnion` _tlIgathDataGam) of
-                { _lhsOgathDataGam ->
-                (case (_hdImodDefsRel `Rel.union` _tlImodDefsRel) of
-                 { _lhsOmodDefsRel ->
-                 (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                  { _lhsOundefNmMp ->
-                  ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) }) })
-sem_CDeclMetaL_Nil :: T_CDeclMetaL
-sem_CDeclMetaL_Nil =
-    (case (Seq.empty) of
-     { _lhsOerrs ->
-     (case (emptyGam) of
-      { _lhsOgathDataGam ->
-      (case (Rel.empty) of
-       { _lhsOmodDefsRel ->
-       (case (Map.empty) of
-        { _lhsOundefNmMp ->
-        ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) })
--- CExport -----------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         errs                 : ErrSq
-         modExpL              : [ModExp]
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Export:
-         child nm             : {HsName}
-      alternative ExportData:
-         child nm             : {HsName}
-         child mbConNmL       : {Maybe [HsName]}
--}
--- cata
-sem_CExport :: CExport ->
-               T_CExport
-sem_CExport (CExport_Export _nm) =
-    (sem_CExport_Export _nm)
-sem_CExport (CExport_ExportData _nm _mbConNmL) =
-    (sem_CExport_ExportData _nm _mbConNmL)
--- semantic domain
-type T_CExport = ( ErrSq,([ModExp]),UndefNmMp)
-sem_CExport_Export :: HsName ->
-                      T_CExport
-sem_CExport_Export nm_ =
-    (case (Seq.empty) of
-     { _lhsOerrs ->
-     (case ([ModExpEnt (ModEntSpec (hsnQualified nm_) emptyRange Nothing)]) of
-      { _lhsOmodExpL ->
-      (case (Map.empty) of
-       { _lhsOundefNmMp ->
-       ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) })
-sem_CExport_ExportData :: HsName ->
-                          (Maybe [HsName]) ->
-                          T_CExport
-sem_CExport_ExportData nm_ mbConNmL_ =
-    (case (Seq.empty) of
-     { _lhsOerrs ->
-     (case ([ModExpEnt (ModEntSpec (hsnQualified nm_) emptyRange (fmap (ModEntSubs . map hsnQualified) mbConNmL_))]) of
-      { _lhsOmodExpL ->
-      (case (Map.empty) of
-       { _lhsOundefNmMp ->
-       ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) })
--- CExportL ----------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         errs                 : ErrSq
-         modExpL              : [ModExp]
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CExport 
-         child tl             : CExportL 
-      alternative Nil:
--}
--- cata
-sem_CExportL :: CExportL ->
-                T_CExportL
-sem_CExportL list =
-    (Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list))
--- semantic domain
-type T_CExportL = ( ErrSq,([ModExp]),UndefNmMp)
-sem_CExportL_Cons :: T_CExport ->
-                     T_CExportL ->
-                     T_CExportL
-sem_CExportL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIerrs,_tlImodExpL,_tlIundefNmMp) ->
-         (case (hd_) of
-          { ( _hdIerrs,_hdImodExpL,_hdIundefNmMp) ->
-              (case (_hdIerrs `Seq.union` _tlIerrs) of
-               { _lhsOerrs ->
-               (case (_hdImodExpL ++ _tlImodExpL) of
-                { _lhsOmodExpL ->
-                (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                 { _lhsOundefNmMp ->
-                 ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) }) }) })
-sem_CExportL_Nil :: T_CExportL
-sem_CExportL_Nil =
-    (case (Seq.empty) of
-     { _lhsOerrs ->
-     (case ([]) of
-      { _lhsOmodExpL ->
-      (case (Map.empty) of
-       { _lhsOundefNmMp ->
-       ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) })
--- CExpr -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         evalCtx              : EvalCtx
-         isTopApp             : Bool
-         isTopTup             : Bool
-         lev                  : Int
-         opts                 : EHCOpts
-         whatAbove            : WhatExpr
-      synthesized attributes:
-         errs                 : ErrSq
-         hasMain              : Bool
-         isFreeOfLam          : Bool
-         lamBodyIsFreeOfLam   : Bool
-         modDefsRel           : ModEntRel
-         notYetTransformed    : NotYetTransformedS
-         undefNmMp            : UndefNmMp
-         whatBelow            : WhatExpr
-   alternatives:
-      alternative Var:
-         child ref            : {ACoreBindRef}
-         visit 0:
-            local nm          : {HsName}
-            local whatBelow   : _
-      alternative Int:
-         child int            : {Int}
-         visit 0:
-            local whatBelow   : _
-      alternative Char:
-         child char           : {Char}
-         visit 0:
-            local whatBelow   : _
-      alternative String:
-         child str            : {String}
-         visit 0:
-            local whatBelow   : _
-      alternative Integer:
-         child integer        : {Integer}
-         visit 0:
-            local whatBelow   : _
-      alternative Tup:
-         child tag            : {CTag}
-         visit 0:
-            local whatBelow   : _
-      alternative Let:
-         child categ          : {CBindCateg}
-         child binds          : CBindL 
-         child body           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local evalCtx     : _
-            local letBindingsCateg : _
-            local isGlobal    : _
-            local whatBelow   : _
-      alternative App:
-         child func           : CExpr 
-         child arg            : CBound 
-         visit 0:
-            local letBindingsCateg : _
-            local isTopTup    : _
-            local isGlobal    : _
-            local whatAbove   : {WhatExpr}
-            local appNotYetTransformed : _
-            local whatBelow   : _
-      alternative Lam:
-         child bind           : CBind 
-         child body           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local lev         : _
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local letBindingsCateg : _
-            local isGlobal    : _
-            local whatBelow   : _
-      alternative Case:
-         child expr           : CExpr 
-         child alts           : CAltL 
-         child dflt           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative CaseAltFail:
-         child failReason     : {CaseAltFailReason}
-         child errorExpr      : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-      alternative TupDel:
-         child expr           : CExpr 
-         child tag            : {CTag}
-         child nm             : {HsName}
-         child offset         : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative TupIns:
-         child expr           : CExpr 
-         child tag            : {CTag}
-         child nm             : {HsName}
-         child offset         : CExpr 
-         child fldExpr        : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative TupUpd:
-         child expr           : CExpr 
-         child tag            : {CTag}
-         child nm             : {HsName}
-         child offset         : CExpr 
-         child fldExpr        : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative FFI:
-         child callconv       : {FFIWay}
-         child safety         : {String}
-         child impEnt         : {ForeignEnt}
-         child ty             : {Ty}
-         visit 0:
-            local whatBelow   : _
-      alternative Dbg:
-         child info           : {String}
-         visit 0:
-            local whatBelow   : _
-      alternative Hole:
-         child uid            : {UID}
-         visit 0:
-            local whatBelow   : _
-      alternative HoleLet:
-         child bindsUid       : {UID}
-         child body           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative CoeArg:
-         visit 0:
-            local whatBelow   : _
-      alternative ImplsApp:
-         child func           : CExpr 
-         child uid            : {ImplsVarId}
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative ImplsLam:
-         child uid            : {ImplsVarId}
-         child body           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local whatBelow   : _
-      alternative Ann:
-         child ann            : CExprAnn 
-         child expr           : CExpr 
--}
--- cata
-sem_CExpr :: CExpr ->
-             T_CExpr
-sem_CExpr (CExpr_Var _ref) =
-    (sem_CExpr_Var _ref)
-sem_CExpr (CExpr_Int _int) =
-    (sem_CExpr_Int _int)
-sem_CExpr (CExpr_Char _char) =
-    (sem_CExpr_Char _char)
-sem_CExpr (CExpr_String _str) =
-    (sem_CExpr_String _str)
-sem_CExpr (CExpr_Integer _integer) =
-    (sem_CExpr_Integer _integer)
-sem_CExpr (CExpr_Tup _tag) =
-    (sem_CExpr_Tup _tag)
-sem_CExpr (CExpr_Let _categ _binds _body) =
-    (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
-sem_CExpr (CExpr_App _func _arg) =
-    (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
-sem_CExpr (CExpr_Lam _bind _body) =
-    (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
-sem_CExpr (CExpr_Case _expr _alts _dflt) =
-    (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
-sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
-    (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
-sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
-    (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
-sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
-    (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
-sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
-    (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
-sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
-    (sem_CExpr_FFI _callconv _safety _impEnt _ty)
-sem_CExpr (CExpr_Dbg _info) =
-    (sem_CExpr_Dbg _info)
-sem_CExpr (CExpr_Hole _uid) =
-    (sem_CExpr_Hole _uid)
-sem_CExpr (CExpr_HoleLet _bindsUid _body) =
-    (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
-sem_CExpr (CExpr_CoeArg) =
-    (sem_CExpr_CoeArg)
-sem_CExpr (CExpr_ImplsApp _func _uid) =
-    (sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
-sem_CExpr (CExpr_ImplsLam _uid _body) =
-    (sem_CExpr_ImplsLam _uid (sem_CExpr _body))
-sem_CExpr (CExpr_Ann _ann _expr) =
-    (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
--- semantic domain
-type T_CExpr = DataGam ->
-               EvalCtx ->
-               Bool ->
-               Bool ->
-               Int ->
-               EHCOpts ->
-               WhatExpr ->
-               ( ErrSq,Bool,Bool,Bool,ModEntRel,NotYetTransformedS,UndefNmMp,WhatExpr)
-sem_CExpr_Var :: ACoreBindRef ->
-                 T_CExpr
-sem_CExpr_Var ref_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (acbrefNm ref_) of
-                 { _nm ->
-                 (case (ExprIsVar _nm) of
-                  { _whatBelow ->
-                  (case (_whatBelow) of
-                   { _lhsOwhatBelow ->
-                   ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Int :: Int ->
-                 T_CExpr
-sem_CExpr_Int int_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsInt int_) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Char :: Char ->
-                  T_CExpr
-sem_CExpr_Char char_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsOtherWHNF) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_String :: String ->
-                    T_CExpr
-sem_CExpr_String str_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsOtherWHNF) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Integer :: Integer ->
-                     T_CExpr
-sem_CExpr_Integer integer_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsOtherWHNF) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Tup :: CTag ->
-                 T_CExpr
-sem_CExpr_Tup tag_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsTup tag_) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Let :: CBindCateg ->
-                 T_CBindL ->
-                 T_CExpr ->
-                 T_CExpr
-sem_CExpr_Let categ_ binds_ body_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _bodyOwhatAbove ->
-           (case (_lhsIopts) of
-            { _bodyOopts ->
-            (case (_lhsIlev) of
-             { _bodyOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _bodyOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _bodyOisTopApp ->
-                 (case (if categ_ == CBindCateg_Strict
-                        then EvalCtx_Eval
-                        else EvalCtx_Thunk) of
-                  { _evalCtx ->
-                  (case (_evalCtx) of
-                   { _bodyOevalCtx ->
-                   (case (_lhsIdataGam) of
-                    { _bodyOdataGam ->
-                    (case (body_ _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
-                     { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
-                         (case (_lhsIopts) of
-                          { _bindsOopts ->
-                          (case (categ_) of
-                           { _letBindingsCateg ->
-                           (case (_letBindingsCateg) of
-                            { _bindsOletBindingsCateg ->
-                            (case (_lhsIlev == cLevModule) of
-                             { _isGlobal ->
-                             (case (_isGlobal) of
-                              { _bindsOisGlobal ->
-                              (case (_evalCtx) of
-                               { _bindsOevalCtx ->
-                               (case (_lhsIdataGam) of
-                                { _bindsOdataGam ->
-                                (case (_lhsIlev + 1) of
-                                 { _bindsOlev ->
-                                 (case (binds_ _bindsOdataGam _bindsOevalCtx _bindsOisGlobal _bindsOletBindingsCateg _bindsOlev _bindsOopts) of
-                                  { ( _bindsIerrs,_bindsIhasMain,_bindsIisFreeOfLam,_bindsImodDefsRel,_bindsInotYetTransformed,_bindsIundefNmMp) ->
-                                      (case (_bindsIerrs `Seq.union` _bodyIerrs) of
-                                       { _lhsOerrs ->
-                                       (case (_bindsIhasMain || _bodyIhasMain) of
-                                        { _lhsOhasMain ->
-                                        (case (_bindsIisFreeOfLam && _bodyIisFreeOfLam) of
-                                         { _lhsOisFreeOfLam ->
-                                         (case (False) of
-                                          { _lhsOlamBodyIsFreeOfLam ->
-                                          (case (_bindsImodDefsRel `Rel.union` _bodyImodDefsRel) of
-                                           { _lhsOmodDefsRel ->
-                                           (case (_bindsInotYetTransformed `Set.union` _bodyInotYetTransformed) of
-                                            { _lhsOnotYetTransformed ->
-                                            (case (_bindsIundefNmMp `undefmpUnion` _bodyIundefNmMp) of
-                                             { _lhsOundefNmMp ->
-                                             (case (ExprIsOther) of
-                                              { _whatBelow ->
-                                              (case (_whatBelow) of
-                                               { _lhsOwhatBelow ->
-                                               ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_App :: T_CExpr ->
-                 T_CBound ->
-                 T_CExpr
-sem_CExpr_App func_ arg_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (_lhsIopts) of
-          { _argOopts ->
-          (case (_lhsIlev) of
-           { _argOlev ->
-           (case (acoreBindcategPlain) of
-            { _letBindingsCateg ->
-            (case (_letBindingsCateg) of
-             { _argOletBindingsCateg ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _argOisTopTup ->
-               (case (False) of
-                { _isGlobal ->
-                (case (_isGlobal) of
-                 { _argOisGlobal ->
-                 (case (_lhsIdataGam) of
-                  { _argOdataGam ->
-                  (case (hsnUnknown) of
-                   { _argOnm ->
-                   (case (EvalCtx_Thunk) of
-                    { _argOevalCtx ->
-                    (case (True) of
-                     { _argOisTopApp ->
-                     (case (arg_ _argOdataGam _argOevalCtx _argOisGlobal _argOisTopApp _argOisTopTup _argOletBindingsCateg _argOlev _argOnm _argOopts) of
-                      { ( _argIerrs,_argIisFreeOfLam,_argIisSimple,_argInotYetTransformed,_argIundefNmMp) ->
-                          (case (maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove) of
-                           { _whatAbove ->
-                           (case (_whatAbove) of
-                            { _funcOwhatAbove ->
-                            (case (_lhsIopts) of
-                             { _funcOopts ->
-                             (case (_lhsIlev) of
-                              { _funcOlev ->
-                              (case (_isTopTup) of
-                               { _funcOisTopTup ->
-                               (case (_lhsIevalCtx) of
-                                { _funcOevalCtx ->
-                                (case (_lhsIdataGam) of
-                                 { _funcOdataGam ->
-                                 (case (False) of
-                                  { _funcOisTopApp ->
-                                  (case (func_ _funcOdataGam _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlev _funcOopts _funcOwhatAbove) of
-                                   { ( _funcIerrs,_funcIhasMain,_funcIisFreeOfLam,_funcIlamBodyIsFreeOfLam,_funcImodDefsRel,_funcInotYetTransformed,_funcIundefNmMp,_funcIwhatBelow) ->
-                                       (case (_funcIerrs `Seq.union` _argIerrs) of
-                                        { _lhsOerrs ->
-                                        (case (_funcIhasMain) of
-                                         { _lhsOhasMain ->
-                                         (case (_funcIisFreeOfLam && _argIisFreeOfLam) of
-                                          { _lhsOisFreeOfLam ->
-                                          (case (False) of
-                                           { _lhsOlamBodyIsFreeOfLam ->
-                                           (case (_funcImodDefsRel) of
-                                            { _lhsOmodDefsRel ->
-                                            (case (if _argIisSimple then Set.empty else Set.singleton NotYetTransformed_ANormal) of
-                                             { _appNotYetTransformed ->
-                                             (case (Set.unions [_appNotYetTransformed, _funcInotYetTransformed, _argInotYetTransformed]) of
-                                              { _lhsOnotYetTransformed ->
-                                              (case (_funcIundefNmMp `undefmpUnion` _argIundefNmMp) of
-                                               { _lhsOundefNmMp ->
-                                               (case (maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow) of
-                                                { _whatBelow ->
-                                                (case (_whatBelow) of
-                                                 { _lhsOwhatBelow ->
-                                                 ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Lam :: T_CBind ->
-                 T_CExpr ->
-                 T_CExpr
-sem_CExpr_Lam bind_ body_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (case _lhsIwhatAbove of
-                    ExprIsLam a mbnm    -> ExprIsLam (a + 1) mbnm
-                    ExprIsBind nm       -> ExprIsLam 1       (Just nm)
-                    _                   -> ExprIsLam 1       Nothing) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _bodyOwhatAbove ->
-           (case (_lhsIopts) of
-            { _bodyOopts ->
-            (case (_lhsIlev + 1) of
-             { _lev ->
-             (case (_lev) of
-              { _bodyOlev ->
-              (case (True) of
-               { _isTopTup ->
-               (case (_isTopTup) of
-                { _bodyOisTopTup ->
-                (case (True) of
-                 { _isTopApp ->
-                 (case (_isTopApp) of
-                  { _bodyOisTopApp ->
-                  (case (_lhsIevalCtx) of
-                   { _bodyOevalCtx ->
-                   (case (_lhsIdataGam) of
-                    { _bodyOdataGam ->
-                    (case (body_ _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
-                     { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
-                         (case (_lhsIopts) of
-                          { _bindOopts ->
-                          (case (_lev) of
-                           { _bindOlev ->
-                           (case (acoreBindcategPlain) of
-                            { _letBindingsCateg ->
-                            (case (_letBindingsCateg) of
-                             { _bindOletBindingsCateg ->
-                             (case (False) of
-                              { _isGlobal ->
-                              (case (_isGlobal) of
-                               { _bindOisGlobal ->
-                               (case (_lhsIevalCtx) of
-                                { _bindOevalCtx ->
-                                (case (_lhsIdataGam) of
-                                 { _bindOdataGam ->
-                                 (case (bind_ _bindOdataGam _bindOevalCtx _bindOisGlobal _bindOletBindingsCateg _bindOlev _bindOopts) of
-                                  { ( _bindIerrs,_bindIhasMain,_bindIisFreeOfLam,_bindImodDefsRel,_bindInm,_bindInotYetTransformed,_bindIundefNmMp) ->
-                                      (case (_bindIerrs `Seq.union` _bodyIerrs) of
-                                       { _lhsOerrs ->
-                                       (case (_bindIhasMain || _bodyIhasMain) of
-                                        { _lhsOhasMain ->
-                                        (case (False) of
-                                         { _lhsOisFreeOfLam ->
-                                         (case (if whatExprIsLam _bodyIwhatBelow
-                                                then _bodyIlamBodyIsFreeOfLam
-                                                else _bodyIisFreeOfLam) of
-                                          { _lhsOlamBodyIsFreeOfLam ->
-                                          (case (_bindImodDefsRel `Rel.union` _bodyImodDefsRel) of
-                                           { _lhsOmodDefsRel ->
-                                           (case (_bindInotYetTransformed `Set.union` _bodyInotYetTransformed) of
-                                            { _lhsOnotYetTransformed ->
-                                            (case (_bindIundefNmMp `undefmpUnion` _bodyIundefNmMp) of
-                                             { _lhsOundefNmMp ->
-                                             (case (maybe (ExprIsLam 1 Nothing) (\a -> ExprIsLam (a + 1) Nothing) $ whatExprMbLam _bodyIwhatBelow) of
-                                              { _whatBelow ->
-                                              (case (_whatBelow) of
-                                               { _lhsOwhatBelow ->
-                                               ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Case :: T_CExpr ->
-                  T_CAltL ->
-                  T_CExpr ->
-                  T_CExpr
-sem_CExpr_Case expr_ alts_ dflt_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _dfltOwhatAbove ->
-           (case (_lhsIopts) of
-            { _dfltOopts ->
-            (case (_lhsIlev) of
-             { _dfltOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _dfltOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _dfltOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _dfltOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _dfltOdataGam ->
-                   (case (dflt_ _dfltOdataGam _dfltOevalCtx _dfltOisTopApp _dfltOisTopTup _dfltOlev _dfltOopts _dfltOwhatAbove) of
-                    { ( _dfltIerrs,_dfltIhasMain,_dfltIisFreeOfLam,_dfltIlamBodyIsFreeOfLam,_dfltImodDefsRel,_dfltInotYetTransformed,_dfltIundefNmMp,_dfltIwhatBelow) ->
-                        (case (_lhsIopts) of
-                         { _altsOopts ->
-                         (case (_lhsIlev) of
-                          { _altsOlev ->
-                          (case (_lhsIevalCtx) of
-                           { _altsOevalCtx ->
-                           (case (_lhsIdataGam) of
-                            { _altsOdataGam ->
-                            (case (alts_ _altsOdataGam _altsOevalCtx _altsOlev _altsOopts) of
-                             { ( _altsIerrs,_altsIisFreeOfLam,_altsIundefNmMp) ->
-                                 (case (_whatAbove) of
-                                  { _exprOwhatAbove ->
-                                  (case (_lhsIopts) of
-                                   { _exprOopts ->
-                                   (case (_lhsIlev) of
-                                    { _exprOlev ->
-                                    (case (_isTopTup) of
-                                     { _exprOisTopTup ->
-                                     (case (_isTopApp) of
-                                      { _exprOisTopApp ->
-                                      (case (_lhsIevalCtx) of
-                                       { _exprOevalCtx ->
-                                       (case (_lhsIdataGam) of
-                                        { _exprOdataGam ->
-                                        (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                                         { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                                             (case (_exprIerrs `Seq.union` _altsIerrs `Seq.union` _dfltIerrs) of
-                                              { _lhsOerrs ->
-                                              (case (_exprIhasMain || _dfltIhasMain) of
-                                               { _lhsOhasMain ->
-                                               (case (_exprIisFreeOfLam && _altsIisFreeOfLam && _dfltIisFreeOfLam) of
-                                                { _lhsOisFreeOfLam ->
-                                                (case (False) of
-                                                 { _lhsOlamBodyIsFreeOfLam ->
-                                                 (case (_exprImodDefsRel `Rel.union` _dfltImodDefsRel) of
-                                                  { _lhsOmodDefsRel ->
-                                                  (case (_exprInotYetTransformed `Set.union` _dfltInotYetTransformed) of
-                                                   { _lhsOnotYetTransformed ->
-                                                   (case (_exprIundefNmMp `undefmpUnion` _altsIundefNmMp `undefmpUnion` _dfltIundefNmMp) of
-                                                    { _lhsOundefNmMp ->
-                                                    (case (ExprIsOther) of
-                                                     { _whatBelow ->
-                                                     (case (_whatBelow) of
-                                                      { _lhsOwhatBelow ->
-                                                      ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_CaseAltFail :: CaseAltFailReason ->
-                         T_CExpr ->
-                         T_CExpr
-sem_CExpr_CaseAltFail failReason_ errorExpr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _errorExprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _errorExprOopts ->
-            (case (_lhsIlev) of
-             { _errorExprOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _errorExprOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _errorExprOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _errorExprOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _errorExprOdataGam ->
-                   (case (errorExpr_ _errorExprOdataGam _errorExprOevalCtx _errorExprOisTopApp _errorExprOisTopTup _errorExprOlev _errorExprOopts _errorExprOwhatAbove) of
-                    { ( _errorExprIerrs,_errorExprIhasMain,_errorExprIisFreeOfLam,_errorExprIlamBodyIsFreeOfLam,_errorExprImodDefsRel,_errorExprInotYetTransformed,_errorExprIundefNmMp,_errorExprIwhatBelow) ->
-                        (case (_errorExprIerrs) of
-                         { _lhsOerrs ->
-                         (case (_errorExprIhasMain) of
-                          { _lhsOhasMain ->
-                          (case (_errorExprIisFreeOfLam) of
-                           { _lhsOisFreeOfLam ->
-                           (case (False) of
-                            { _lhsOlamBodyIsFreeOfLam ->
-                            (case (_errorExprImodDefsRel) of
-                             { _lhsOmodDefsRel ->
-                             (case (_errorExprInotYetTransformed) of
-                              { _lhsOnotYetTransformed ->
-                              (case (_errorExprIundefNmMp) of
-                               { _lhsOundefNmMp ->
-                               (case (_errorExprIwhatBelow) of
-                                { _lhsOwhatBelow ->
-                                ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_TupDel :: T_CExpr ->
-                    CTag ->
-                    HsName ->
-                    T_CExpr ->
-                    T_CExpr
-sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _offsetOwhatAbove ->
-           (case (_lhsIopts) of
-            { _offsetOopts ->
-            (case (_lhsIlev) of
-             { _offsetOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _offsetOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _offsetOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _offsetOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _offsetOdataGam ->
-                   (case (offset_ _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
-                    { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
-                        (case (_whatAbove) of
-                         { _exprOwhatAbove ->
-                         (case (_lhsIopts) of
-                          { _exprOopts ->
-                          (case (_lhsIlev) of
-                           { _exprOlev ->
-                           (case (_isTopApp) of
-                            { _exprOisTopApp ->
-                            (case (_lhsIevalCtx) of
-                             { _exprOevalCtx ->
-                             (case (_lhsIdataGam) of
-                              { _exprOdataGam ->
-                              (case (False) of
-                               { _exprOisTopTup ->
-                               (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                                { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                                    (case (_exprIerrs `Seq.union` _offsetIerrs) of
-                                     { _lhsOerrs ->
-                                     (case (_exprIhasMain || _offsetIhasMain) of
-                                      { _lhsOhasMain ->
-                                      (case (_exprIisFreeOfLam && _offsetIisFreeOfLam) of
-                                       { _lhsOisFreeOfLam ->
-                                       (case (False) of
-                                        { _lhsOlamBodyIsFreeOfLam ->
-                                        (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel) of
-                                         { _lhsOmodDefsRel ->
-                                         (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed) of
-                                          { _lhsOnotYetTransformed ->
-                                          (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp) of
-                                           { _lhsOundefNmMp ->
-                                           (case (ExprIsOther) of
-                                            { _whatBelow ->
-                                            (case (_whatBelow) of
-                                             { _lhsOwhatBelow ->
-                                             ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_TupIns :: T_CExpr ->
-                    CTag ->
-                    HsName ->
-                    T_CExpr ->
-                    T_CExpr ->
-                    T_CExpr
-sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _fldExprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _fldExprOopts ->
-            (case (_lhsIlev) of
-             { _fldExprOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _fldExprOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _fldExprOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _fldExprOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _fldExprOdataGam ->
-                   (case (fldExpr_ _fldExprOdataGam _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlev _fldExprOopts _fldExprOwhatAbove) of
-                    { ( _fldExprIerrs,_fldExprIhasMain,_fldExprIisFreeOfLam,_fldExprIlamBodyIsFreeOfLam,_fldExprImodDefsRel,_fldExprInotYetTransformed,_fldExprIundefNmMp,_fldExprIwhatBelow) ->
-                        (case (_whatAbove) of
-                         { _offsetOwhatAbove ->
-                         (case (_lhsIopts) of
-                          { _offsetOopts ->
-                          (case (_lhsIlev) of
-                           { _offsetOlev ->
-                           (case (_isTopTup) of
-                            { _offsetOisTopTup ->
-                            (case (_isTopApp) of
-                             { _offsetOisTopApp ->
-                             (case (_lhsIevalCtx) of
-                              { _offsetOevalCtx ->
-                              (case (_lhsIdataGam) of
-                               { _offsetOdataGam ->
-                               (case (offset_ _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
-                                { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
-                                    (case (_whatAbove) of
-                                     { _exprOwhatAbove ->
-                                     (case (_lhsIopts) of
-                                      { _exprOopts ->
-                                      (case (_lhsIlev) of
-                                       { _exprOlev ->
-                                       (case (_isTopApp) of
-                                        { _exprOisTopApp ->
-                                        (case (_lhsIevalCtx) of
-                                         { _exprOevalCtx ->
-                                         (case (_lhsIdataGam) of
-                                          { _exprOdataGam ->
-                                          (case (False) of
-                                           { _exprOisTopTup ->
-                                           (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                                            { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                                                (case (_exprIerrs `Seq.union` _offsetIerrs `Seq.union` _fldExprIerrs) of
-                                                 { _lhsOerrs ->
-                                                 (case (_exprIhasMain || _offsetIhasMain || _fldExprIhasMain) of
-                                                  { _lhsOhasMain ->
-                                                  (case (_exprIisFreeOfLam && _offsetIisFreeOfLam && _fldExprIisFreeOfLam) of
-                                                   { _lhsOisFreeOfLam ->
-                                                   (case (False) of
-                                                    { _lhsOlamBodyIsFreeOfLam ->
-                                                    (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel `Rel.union` _fldExprImodDefsRel) of
-                                                     { _lhsOmodDefsRel ->
-                                                     (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed `Set.union` _fldExprInotYetTransformed) of
-                                                      { _lhsOnotYetTransformed ->
-                                                      (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp `undefmpUnion` _fldExprIundefNmMp) of
-                                                       { _lhsOundefNmMp ->
-                                                       (case (ExprIsOther) of
-                                                        { _whatBelow ->
-                                                        (case (_whatBelow) of
-                                                         { _lhsOwhatBelow ->
-                                                         ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_TupUpd :: T_CExpr ->
-                    CTag ->
-                    HsName ->
-                    T_CExpr ->
-                    T_CExpr ->
-                    T_CExpr
-sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _fldExprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _fldExprOopts ->
-            (case (_lhsIlev) of
-             { _fldExprOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _fldExprOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _fldExprOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _fldExprOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _fldExprOdataGam ->
-                   (case (fldExpr_ _fldExprOdataGam _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlev _fldExprOopts _fldExprOwhatAbove) of
-                    { ( _fldExprIerrs,_fldExprIhasMain,_fldExprIisFreeOfLam,_fldExprIlamBodyIsFreeOfLam,_fldExprImodDefsRel,_fldExprInotYetTransformed,_fldExprIundefNmMp,_fldExprIwhatBelow) ->
-                        (case (_whatAbove) of
-                         { _offsetOwhatAbove ->
-                         (case (_lhsIopts) of
-                          { _offsetOopts ->
-                          (case (_lhsIlev) of
-                           { _offsetOlev ->
-                           (case (_isTopTup) of
-                            { _offsetOisTopTup ->
-                            (case (_isTopApp) of
-                             { _offsetOisTopApp ->
-                             (case (_lhsIevalCtx) of
-                              { _offsetOevalCtx ->
-                              (case (_lhsIdataGam) of
-                               { _offsetOdataGam ->
-                               (case (offset_ _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
-                                { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
-                                    (case (_whatAbove) of
-                                     { _exprOwhatAbove ->
-                                     (case (_lhsIopts) of
-                                      { _exprOopts ->
-                                      (case (_lhsIlev) of
-                                       { _exprOlev ->
-                                       (case (_isTopApp) of
-                                        { _exprOisTopApp ->
-                                        (case (_lhsIevalCtx) of
-                                         { _exprOevalCtx ->
-                                         (case (_lhsIdataGam) of
-                                          { _exprOdataGam ->
-                                          (case (False) of
-                                           { _exprOisTopTup ->
-                                           (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                                            { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                                                (case (_exprIerrs `Seq.union` _offsetIerrs `Seq.union` _fldExprIerrs) of
-                                                 { _lhsOerrs ->
-                                                 (case (_exprIhasMain || _offsetIhasMain || _fldExprIhasMain) of
-                                                  { _lhsOhasMain ->
-                                                  (case (_exprIisFreeOfLam && _offsetIisFreeOfLam && _fldExprIisFreeOfLam) of
-                                                   { _lhsOisFreeOfLam ->
-                                                   (case (False) of
-                                                    { _lhsOlamBodyIsFreeOfLam ->
-                                                    (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel `Rel.union` _fldExprImodDefsRel) of
-                                                     { _lhsOmodDefsRel ->
-                                                     (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed `Set.union` _fldExprInotYetTransformed) of
-                                                      { _lhsOnotYetTransformed ->
-                                                      (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp `undefmpUnion` _fldExprIundefNmMp) of
-                                                       { _lhsOundefNmMp ->
-                                                       (case (ExprIsOther) of
-                                                        { _whatBelow ->
-                                                        (case (_whatBelow) of
-                                                         { _lhsOwhatBelow ->
-                                                         ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_FFI :: FFIWay ->
-                 String ->
-                 ForeignEnt ->
-                 Ty ->
-                 T_CExpr
-sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsFFI) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Dbg :: String ->
-                 T_CExpr
-sem_CExpr_Dbg info_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsOther) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Hole :: UID ->
-                  T_CExpr
-sem_CExpr_Hole uid_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsOther) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_HoleLet :: UID ->
-                     T_CExpr ->
-                     T_CExpr
-sem_CExpr_HoleLet bindsUid_ body_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _bodyOwhatAbove ->
-           (case (_lhsIopts) of
-            { _bodyOopts ->
-            (case (_lhsIlev) of
-             { _bodyOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _bodyOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _bodyOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _bodyOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _bodyOdataGam ->
-                   (case (body_ _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
-                    { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
-                        (case (_bodyIerrs) of
-                         { _lhsOerrs ->
-                         (case (_bodyIhasMain) of
-                          { _lhsOhasMain ->
-                          (case (_bodyIisFreeOfLam) of
-                           { _lhsOisFreeOfLam ->
-                           (case (False) of
-                            { _lhsOlamBodyIsFreeOfLam ->
-                            (case (_bodyImodDefsRel) of
-                             { _lhsOmodDefsRel ->
-                             (case (_bodyInotYetTransformed) of
-                              { _lhsOnotYetTransformed ->
-                              (case (_bodyIundefNmMp) of
-                               { _lhsOundefNmMp ->
-                               (case (ExprIsOther) of
-                                { _whatBelow ->
-                                (case (_whatBelow) of
-                                 { _lhsOwhatBelow ->
-                                 ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_CoeArg :: T_CExpr
-sem_CExpr_CoeArg =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (False) of
-           { _lhsOhasMain ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (False) of
-             { _lhsOlamBodyIsFreeOfLam ->
-             (case (Rel.empty) of
-              { _lhsOmodDefsRel ->
-              (case (Set.empty) of
-               { _lhsOnotYetTransformed ->
-               (case (Map.empty) of
-                { _lhsOundefNmMp ->
-                (case (ExprIsOther) of
-                 { _whatBelow ->
-                 (case (_whatBelow) of
-                  { _lhsOwhatBelow ->
-                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
-sem_CExpr_ImplsApp :: T_CExpr ->
-                      ImplsVarId ->
-                      T_CExpr
-sem_CExpr_ImplsApp func_ uid_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _funcOwhatAbove ->
-           (case (_lhsIopts) of
-            { _funcOopts ->
-            (case (_lhsIlev) of
-             { _funcOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _funcOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _funcOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _funcOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _funcOdataGam ->
-                   (case (func_ _funcOdataGam _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlev _funcOopts _funcOwhatAbove) of
-                    { ( _funcIerrs,_funcIhasMain,_funcIisFreeOfLam,_funcIlamBodyIsFreeOfLam,_funcImodDefsRel,_funcInotYetTransformed,_funcIundefNmMp,_funcIwhatBelow) ->
-                        (case (_funcIerrs) of
-                         { _lhsOerrs ->
-                         (case (_funcIhasMain) of
-                          { _lhsOhasMain ->
-                          (case (_funcIisFreeOfLam) of
-                           { _lhsOisFreeOfLam ->
-                           (case (False) of
-                            { _lhsOlamBodyIsFreeOfLam ->
-                            (case (_funcImodDefsRel) of
-                             { _lhsOmodDefsRel ->
-                             (case (_funcInotYetTransformed) of
-                              { _lhsOnotYetTransformed ->
-                              (case (_funcIundefNmMp) of
-                               { _lhsOundefNmMp ->
-                               (case (ExprIsOther) of
-                                { _whatBelow ->
-                                (case (_whatBelow) of
-                                 { _lhsOwhatBelow ->
-                                 ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_ImplsLam :: ImplsVarId ->
-                      T_CExpr ->
-                      T_CExpr
-sem_CExpr_ImplsLam uid_ body_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _bodyOwhatAbove ->
-           (case (_lhsIopts) of
-            { _bodyOopts ->
-            (case (_lhsIlev) of
-             { _bodyOlev ->
-             (case (True) of
-              { _isTopTup ->
-              (case (_isTopTup) of
-               { _bodyOisTopTup ->
-               (case (True) of
-                { _isTopApp ->
-                (case (_isTopApp) of
-                 { _bodyOisTopApp ->
-                 (case (_lhsIevalCtx) of
-                  { _bodyOevalCtx ->
-                  (case (_lhsIdataGam) of
-                   { _bodyOdataGam ->
-                   (case (body_ _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
-                    { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
-                        (case (_bodyIerrs) of
-                         { _lhsOerrs ->
-                         (case (_bodyIhasMain) of
-                          { _lhsOhasMain ->
-                          (case (_bodyIisFreeOfLam) of
-                           { _lhsOisFreeOfLam ->
-                           (case (False) of
-                            { _lhsOlamBodyIsFreeOfLam ->
-                            (case (_bodyImodDefsRel) of
-                             { _lhsOmodDefsRel ->
-                             (case (_bodyInotYetTransformed) of
-                              { _lhsOnotYetTransformed ->
-                              (case (_bodyIundefNmMp) of
-                               { _lhsOundefNmMp ->
-                               (case (ExprIsOther) of
-                                { _whatBelow ->
-                                (case (_whatBelow) of
-                                 { _lhsOwhatBelow ->
-                                 ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CExpr_Ann :: T_CExprAnn ->
-                 T_CExpr ->
-                 T_CExpr
-sem_CExpr_Ann ann_ expr_ =
-    (\ _lhsIdataGam
-       _lhsIevalCtx
-       _lhsIisTopApp
-       _lhsIisTopTup
-       _lhsIlev
-       _lhsIopts
-       _lhsIwhatAbove ->
-         (case (_lhsIwhatAbove) of
-          { _exprOwhatAbove ->
-          (case (_lhsIopts) of
-           { _exprOopts ->
-           (case (_lhsIlev) of
-            { _exprOlev ->
-            (case (_lhsIisTopTup) of
-             { _exprOisTopTup ->
-             (case (_lhsIisTopApp) of
-              { _exprOisTopApp ->
-              (case (_lhsIevalCtx) of
-               { _exprOevalCtx ->
-               (case (_lhsIdataGam) of
-                { _exprOdataGam ->
-                (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                 { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                     (case (_lhsIopts) of
-                      { _annOopts ->
-                      (case (_lhsIlev) of
-                       { _annOlev ->
-                       (case (_lhsIdataGam) of
-                        { _annOdataGam ->
-                        (case (ann_ _annOdataGam _annOlev _annOopts) of
-                         { ( _annIerrs,_annIisFreeOfLam,_annIundefNmMp) ->
-                             (case (_annIerrs `Seq.union` _exprIerrs) of
-                              { _lhsOerrs ->
-                              (case (_exprIhasMain) of
-                               { _lhsOhasMain ->
-                               (case (_annIisFreeOfLam && _exprIisFreeOfLam) of
-                                { _lhsOisFreeOfLam ->
-                                (case (False) of
-                                 { _lhsOlamBodyIsFreeOfLam ->
-                                 (case (_exprImodDefsRel) of
-                                  { _lhsOmodDefsRel ->
-                                  (case (_exprInotYetTransformed) of
-                                   { _lhsOnotYetTransformed ->
-                                   (case (_annIundefNmMp `undefmpUnion` _exprIundefNmMp) of
-                                    { _lhsOundefNmMp ->
-                                    (case (_exprIwhatBelow) of
-                                     { _lhsOwhatBelow ->
-                                     ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CExprAnn ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Ty:
-         child ty             : {Ty}
-      alternative Coe:
-         child coe            : {RelevCoe}
-      alternative Debug:
-         child info           : {String}
--}
--- cata
-sem_CExprAnn :: CExprAnn ->
-                T_CExprAnn
-sem_CExprAnn (CExprAnn_Ty _ty) =
-    (sem_CExprAnn_Ty _ty)
-sem_CExprAnn (CExprAnn_Coe _coe) =
-    (sem_CExprAnn_Coe _coe)
-sem_CExprAnn (CExprAnn_Debug _info) =
-    (sem_CExprAnn_Debug _info)
--- semantic domain
-type T_CExprAnn = DataGam ->
-                  Int ->
-                  EHCOpts ->
-                  ( ErrSq,Bool,UndefNmMp)
-sem_CExprAnn_Ty :: Ty ->
-                   T_CExprAnn
-sem_CExprAnn_Ty ty_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CExprAnn_Coe :: RelevCoe ->
-                    T_CExprAnn
-sem_CExprAnn_Coe coe_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CExprAnn_Debug :: String ->
-                      T_CExprAnn
-sem_CExprAnn_Debug info_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CImport -----------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         errs                 : ErrSq
-         impModNmL            : [HsName]
-         modImpL              : [ModImp]
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Import:
-         child nm             : {HsName}
--}
--- cata
-sem_CImport :: CImport ->
-               T_CImport
-sem_CImport (CImport_Import _nm) =
-    (sem_CImport_Import _nm)
--- semantic domain
-type T_CImport = ( ErrSq,([HsName]),([ModImp]),UndefNmMp)
-sem_CImport_Import :: HsName ->
-                      T_CImport
-sem_CImport_Import nm_ =
-    (case (Seq.empty) of
-     { _lhsOerrs ->
-     (case ([nm_]) of
-      { _lhsOimpModNmL ->
-      (case ([ModImp True nm_ nm_ False [] emptyRange]) of
-       { _lhsOmodImpL ->
-       (case (Map.empty) of
-        { _lhsOundefNmMp ->
-        ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) })
--- CImportL ----------------------------------------------------
-{-
-   visit 0:
-      synthesized attributes:
-         errs                 : ErrSq
-         impModNmL            : [HsName]
-         modImpL              : [ModImp]
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CImport 
-         child tl             : CImportL 
-      alternative Nil:
--}
--- cata
-sem_CImportL :: CImportL ->
-                T_CImportL
-sem_CImportL list =
-    (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
--- semantic domain
-type T_CImportL = ( ErrSq,([HsName]),([ModImp]),UndefNmMp)
-sem_CImportL_Cons :: T_CImport ->
-                     T_CImportL ->
-                     T_CImportL
-sem_CImportL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIerrs,_tlIimpModNmL,_tlImodImpL,_tlIundefNmMp) ->
-         (case (hd_) of
-          { ( _hdIerrs,_hdIimpModNmL,_hdImodImpL,_hdIundefNmMp) ->
-              (case (_hdIerrs `Seq.union` _tlIerrs) of
-               { _lhsOerrs ->
-               (case (_hdIimpModNmL ++ _tlIimpModNmL) of
-                { _lhsOimpModNmL ->
-                (case (_hdImodImpL ++ _tlImodImpL) of
-                 { _lhsOmodImpL ->
-                 (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                  { _lhsOundefNmMp ->
-                  ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) }) }) })
-sem_CImportL_Nil :: T_CImportL
-sem_CImportL_Nil =
-    (case (Seq.empty) of
-     { _lhsOerrs ->
-     (case ([]) of
-      { _lhsOimpModNmL ->
-      (case ([]) of
-       { _lhsOmodImpL ->
-       (case (Map.empty) of
-        { _lhsOundefNmMp ->
-        ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) })
--- CMetaBind ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Plain:
-      alternative Function0:
-      alternative Function1:
-      alternative Apply0:
--}
--- cata
-sem_CMetaBind :: CMetaBind ->
-                 T_CMetaBind
-sem_CMetaBind (CMetaBind_Plain) =
-    (sem_CMetaBind_Plain)
-sem_CMetaBind (CMetaBind_Function0) =
-    (sem_CMetaBind_Function0)
-sem_CMetaBind (CMetaBind_Function1) =
-    (sem_CMetaBind_Function1)
-sem_CMetaBind (CMetaBind_Apply0) =
-    (sem_CMetaBind_Apply0)
--- semantic domain
-type T_CMetaBind = DataGam ->
-                   Int ->
-                   EHCOpts ->
-                   ( ErrSq,Bool,UndefNmMp)
-sem_CMetaBind_Plain :: T_CMetaBind
-sem_CMetaBind_Plain =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaBind_Function0 :: T_CMetaBind
-sem_CMetaBind_Function0 =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaBind_Function1 :: T_CMetaBind
-sem_CMetaBind_Function1 =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaBind_Apply0 :: T_CMetaBind
-sem_CMetaBind_Apply0 =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CMetaVal ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Val:
-      alternative Dict:
-      alternative DictClass:
-         child tracks         : {[Track]}
-      alternative DictInstance:
-         child tracks         : {[Track]}
-      alternative Track:
-         child track          : {Track}
--}
--- cata
-sem_CMetaVal :: CMetaVal ->
-                T_CMetaVal
-sem_CMetaVal (CMetaVal_Val) =
-    (sem_CMetaVal_Val)
-sem_CMetaVal (CMetaVal_Dict) =
-    (sem_CMetaVal_Dict)
-sem_CMetaVal (CMetaVal_DictClass _tracks) =
-    (sem_CMetaVal_DictClass _tracks)
-sem_CMetaVal (CMetaVal_DictInstance _tracks) =
-    (sem_CMetaVal_DictInstance _tracks)
-sem_CMetaVal (CMetaVal_Track _track) =
-    (sem_CMetaVal_Track _track)
--- semantic domain
-type T_CMetaVal = DataGam ->
-                  Int ->
-                  EHCOpts ->
-                  ( ErrSq,Bool,UndefNmMp)
-sem_CMetaVal_Val :: T_CMetaVal
-sem_CMetaVal_Val =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaVal_Dict :: T_CMetaVal
-sem_CMetaVal_Dict =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaVal_DictClass :: ([Track]) ->
-                          T_CMetaVal
-sem_CMetaVal_DictClass tracks_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaVal_DictInstance :: ([Track]) ->
-                             T_CMetaVal
-sem_CMetaVal_DictInstance tracks_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CMetaVal_Track :: Track ->
-                      T_CMetaVal
-sem_CMetaVal_Track track_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CMetas ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Tuple:
-         child x1             : CMetaBind 
-         child x2             : CMetaVal 
--}
--- cata
-sem_CMetas :: CMetas ->
-              T_CMetas
-sem_CMetas ( x1,x2) =
-    (sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
--- semantic domain
-type T_CMetas = DataGam ->
-                Int ->
-                EHCOpts ->
-                ( ErrSq,Bool,UndefNmMp)
-sem_CMetas_Tuple :: T_CMetaBind ->
-                    T_CMetaVal ->
-                    T_CMetas
-sem_CMetas_Tuple x1_ x2_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _x2Oopts ->
-          (case (_lhsIlev) of
-           { _x2Olev ->
-           (case (_lhsIdataGam) of
-            { _x2OdataGam ->
-            (case (x2_ _x2OdataGam _x2Olev _x2Oopts) of
-             { ( _x2Ierrs,_x2IisFreeOfLam,_x2IundefNmMp) ->
-                 (case (_lhsIopts) of
-                  { _x1Oopts ->
-                  (case (_lhsIlev) of
-                   { _x1Olev ->
-                   (case (_lhsIdataGam) of
-                    { _x1OdataGam ->
-                    (case (x1_ _x1OdataGam _x1Olev _x1Oopts) of
-                     { ( _x1Ierrs,_x1IisFreeOfLam,_x1IundefNmMp) ->
-                         (case (_x1Ierrs `Seq.union` _x2Ierrs) of
-                          { _lhsOerrs ->
-                          (case (_x1IisFreeOfLam && _x2IisFreeOfLam) of
-                           { _lhsOisFreeOfLam ->
-                           (case (_x1IundefNmMp `undefmpUnion` _x2IundefNmMp) of
-                            { _lhsOundefNmMp ->
-                            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }))
--- CModule -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         moduleNm             : HsName
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         gathDataGam          : DataGam
-         hasMain              : Bool
-         impModNmL            : [HsName]
-         isFreeOfLam          : Bool
-         mod                  : Mod
-         notYetTransformed    : NotYetTransformedS
-         realModuleNm         : HsName
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Mod:
-         child moduleNm       : {HsName}
-         child exports        : CExportL 
-         child imports        : CImportL 
-         child declMetas      : CDeclMetaL 
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local dataGam     : _
-            local realModuleNm : _
--}
--- cata
-sem_CModule :: CModule ->
-               T_CModule
-sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) =
-    (sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
--- semantic domain
-type T_CModule = DataGam ->
-                 Int ->
-                 HsName ->
-                 EHCOpts ->
-                 ( ErrSq,DataGam,Bool,([HsName]),Bool,Mod,NotYetTransformedS,HsName,UndefNmMp)
-sem_CModule_Mod :: HsName ->
-                   T_CExportL ->
-                   T_CImportL ->
-                   T_CDeclMetaL ->
-                   T_CExpr ->
-                   T_CModule
-sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsImoduleNm
-       _lhsIopts ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (_lhsIopts) of
-            { _exprOopts ->
-            (case (_lhsIlev) of
-             { _exprOlev ->
-             (case (declMetas_) of
-              { ( _declMetasIerrs,_declMetasIgathDataGam,_declMetasImodDefsRel,_declMetasIundefNmMp) ->
-                  (case (_lhsIdataGam `gamUnion` _declMetasIgathDataGam) of
-                   { _dataGam ->
-                   (case (_dataGam) of
-                    { _exprOdataGam ->
-                    (case (EvalCtx_Eval) of
-                     { _exprOevalCtx ->
-                     (case (True) of
-                      { _exprOisTopTup ->
-                      (case (True) of
-                       { _exprOisTopApp ->
-                       (case (expr_ _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
-                        { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
-                            (case (imports_) of
-                             { ( _importsIerrs,_importsIimpModNmL,_importsImodImpL,_importsIundefNmMp) ->
-                                 (case (exports_) of
-                                  { ( _exportsIerrs,_exportsImodExpL,_exportsIundefNmMp) ->
-                                      (case (_exportsIerrs `Seq.union` _importsIerrs `Seq.union` _declMetasIerrs `Seq.union` _exprIerrs) of
-                                       { _lhsOerrs ->
-                                       (case (_declMetasIgathDataGam) of
-                                        { _lhsOgathDataGam ->
-                                        (case (_exprIhasMain) of
-                                         { _lhsOhasMain ->
-                                         (case (_importsIimpModNmL) of
-                                          { _lhsOimpModNmL ->
-                                          (case (_exprIisFreeOfLam) of
-                                           { _lhsOisFreeOfLam ->
-                                           (case (moduleNm_) of
-                                            { _realModuleNm ->
-                                            (case (Mod _realModuleNm (Just _realModuleNm) (Just _exportsImodExpL) _importsImodImpL
-                                                       (_declMetasImodDefsRel `Rel.union` _exprImodDefsRel)
-                                                       Rel.empty []) of
-                                             { _lhsOmod ->
-                                             (case (_exprInotYetTransformed) of
-                                              { _lhsOnotYetTransformed ->
-                                              (case (_realModuleNm) of
-                                               { _lhsOrealModuleNm ->
-                                               (case (_exportsIundefNmMp `undefmpUnion` _importsIundefNmMp `undefmpUnion` _declMetasIundefNmMp `undefmpUnion` _exprIundefNmMp) of
-                                                { _lhsOundefNmMp ->
-                                                ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOisFreeOfLam,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CPat --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         fldNmL               : [HsName]
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Var:
-         child pnm            : {HsName}
-      alternative Con:
-         child tag            : {CTag}
-         child rest           : CPatRest 
-         child binds          : CPatFldL 
-      alternative Int:
-         child int            : {Int}
-      alternative Char:
-         child char           : {Char}
-      alternative BoolExpr:
-         child cexpr          : {CExpr}
--}
--- cata
-sem_CPat :: CPat ->
-            T_CPat
-sem_CPat (CPat_Var _pnm) =
-    (sem_CPat_Var _pnm)
-sem_CPat (CPat_Con _tag _rest _binds) =
-    (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
-sem_CPat (CPat_Int _int) =
-    (sem_CPat_Int _int)
-sem_CPat (CPat_Char _char) =
-    (sem_CPat_Char _char)
-sem_CPat (CPat_BoolExpr _cexpr) =
-    (sem_CPat_BoolExpr _cexpr)
--- semantic domain
-type T_CPat = DataGam ->
-              Int ->
-              EHCOpts ->
-              ( ErrSq,([HsName]),Bool,UndefNmMp)
-sem_CPat_Var :: HsName ->
-                T_CPat
-sem_CPat_Var pnm_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (Map.empty) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
-sem_CPat_Con :: CTag ->
-                T_CPatRest ->
-                T_CPatFldL ->
-                T_CPat
-sem_CPat_Con tag_ rest_ binds_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _bindsOopts ->
-          (case (_lhsIlev) of
-           { _bindsOlev ->
-           (case (_lhsIdataGam) of
-            { _bindsOdataGam ->
-            (case (binds_ _bindsOdataGam _bindsOlev _bindsOopts) of
-             { ( _bindsIerrs,_bindsIfldNmL,_bindsIisFreeOfLam,_bindsIundefNmMp) ->
-                 (case (_lhsIopts) of
-                  { _restOopts ->
-                  (case (_lhsIlev) of
-                   { _restOlev ->
-                   (case (_lhsIdataGam) of
-                    { _restOdataGam ->
-                    (case (rest_ _restOdataGam _restOlev _restOopts) of
-                     { ( _restIerrs,_restIisFreeOfLam,_restIundefNmMp) ->
-                         (case (_restIerrs `Seq.union` _bindsIerrs) of
-                          { _lhsOerrs ->
-                          (case (_bindsIfldNmL) of
-                           { _lhsOfldNmL ->
-                           (case (_restIisFreeOfLam && _bindsIisFreeOfLam) of
-                            { _lhsOisFreeOfLam ->
-                            (case (_restIundefNmMp `undefmpUnion` _bindsIundefNmMp) of
-                             { _lhsOundefNmMp ->
-                             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CPat_Int :: Int ->
-                T_CPat
-sem_CPat_Int int_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (Map.empty) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
-sem_CPat_Char :: Char ->
-                 T_CPat
-sem_CPat_Char char_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (Map.empty) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
-sem_CPat_BoolExpr :: CExpr ->
-                     T_CPat
-sem_CPat_BoolExpr cexpr_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (Map.empty) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
--- CPatFld -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         fldNmL               : [HsName]
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Fld:
-         child lbl            : {HsName}
-         child offset         : CExpr 
-         child bind           : CBind 
-         child fldAnns        : CBindAnnL 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local fldNm       : _
--}
--- cata
-sem_CPatFld :: CPatFld ->
-               T_CPatFld
-sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
-    (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
--- semantic domain
-type T_CPatFld = DataGam ->
-                 Int ->
-                 EHCOpts ->
-                 ( ErrSq,([HsName]),Bool,UndefNmMp)
-sem_CPatFld_Fld :: HsName ->
-                   T_CExpr ->
-                   T_CBind ->
-                   T_CBindAnnL ->
-                   T_CPatFld
-sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _fldAnnsOopts ->
-          (case (_lhsIlev) of
-           { _fldAnnsOlev ->
-           (case (_lhsIdataGam) of
-            { _fldAnnsOdataGam ->
-            (case (fldAnns_ _fldAnnsOdataGam _fldAnnsOlev _fldAnnsOopts) of
-             { ( _fldAnnsIerrs,_fldAnnsIisFreeOfLam,_fldAnnsIundefNmMp) ->
-                 (case (_lhsIopts) of
-                  { _bindOopts ->
-                  (case (_lhsIlev) of
-                   { _bindOlev ->
-                   (case (_lhsIdataGam) of
-                    { _bindOdataGam ->
-                    (case (False) of
-                     { _bindOisGlobal ->
-                     (case (EvalCtx_None) of
-                      { _bindOevalCtx ->
-                      (case (acoreBindcategPlain) of
-                       { _bindOletBindingsCateg ->
-                       (case (bind_ _bindOdataGam _bindOevalCtx _bindOisGlobal _bindOletBindingsCateg _bindOlev _bindOopts) of
-                        { ( _bindIerrs,_bindIhasMain,_bindIisFreeOfLam,_bindImodDefsRel,_bindInm,_bindInotYetTransformed,_bindIundefNmMp) ->
-                            (case (ExprIsOther) of
-                             { _whatAbove ->
-                             (case (_whatAbove) of
-                              { _offsetOwhatAbove ->
-                              (case (_lhsIopts) of
-                               { _offsetOopts ->
-                               (case (_lhsIlev) of
-                                { _offsetOlev ->
-                                (case (_lhsIdataGam) of
-                                 { _offsetOdataGam ->
-                                 (case (EvalCtx_Eval) of
-                                  { _offsetOevalCtx ->
-                                  (case (True) of
-                                   { _offsetOisTopTup ->
-                                   (case (True) of
-                                    { _offsetOisTopApp ->
-                                    (case (offset_ _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
-                                     { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
-                                         (case (_offsetIerrs `Seq.union` _bindIerrs `Seq.union` _fldAnnsIerrs) of
-                                          { _lhsOerrs ->
-                                          (case (_bindInm) of
-                                           { _fldNm ->
-                                           (case ([_fldNm]) of
-                                            { _lhsOfldNmL ->
-                                            (case (_offsetIisFreeOfLam && _bindIisFreeOfLam && _fldAnnsIisFreeOfLam) of
-                                             { _lhsOisFreeOfLam ->
-                                             (case (_offsetIundefNmMp `undefmpUnion` _bindIundefNmMp `undefmpUnion` _fldAnnsIundefNmMp) of
-                                              { _lhsOundefNmMp ->
-                                              ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CPatFldL ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         fldNmL               : [HsName]
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Cons:
-         child hd             : CPatFld 
-         child tl             : CPatFldL 
-      alternative Nil:
--}
--- cata
-sem_CPatFldL :: CPatFldL ->
-                T_CPatFldL
-sem_CPatFldL list =
-    (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
--- semantic domain
-type T_CPatFldL = DataGam ->
-                  Int ->
-                  EHCOpts ->
-                  ( ErrSq,([HsName]),Bool,UndefNmMp)
-sem_CPatFldL_Cons :: T_CPatFld ->
-                     T_CPatFldL ->
-                     T_CPatFldL
-sem_CPatFldL_Cons hd_ tl_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _tlOopts ->
-          (case (_lhsIlev) of
-           { _tlOlev ->
-           (case (_lhsIdataGam) of
-            { _tlOdataGam ->
-            (case (tl_ _tlOdataGam _tlOlev _tlOopts) of
-             { ( _tlIerrs,_tlIfldNmL,_tlIisFreeOfLam,_tlIundefNmMp) ->
-                 (case (_lhsIopts) of
-                  { _hdOopts ->
-                  (case (_lhsIlev) of
-                   { _hdOlev ->
-                   (case (_lhsIdataGam) of
-                    { _hdOdataGam ->
-                    (case (hd_ _hdOdataGam _hdOlev _hdOopts) of
-                     { ( _hdIerrs,_hdIfldNmL,_hdIisFreeOfLam,_hdIundefNmMp) ->
-                         (case (_hdIerrs `Seq.union` _tlIerrs) of
-                          { _lhsOerrs ->
-                          (case (_hdIfldNmL ++ _tlIfldNmL) of
-                           { _lhsOfldNmL ->
-                           (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
-                            { _lhsOisFreeOfLam ->
-                            (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
-                             { _lhsOundefNmMp ->
-                             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CPatFldL_Nil :: T_CPatFldL
-sem_CPatFldL_Nil =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (True) of
-            { _lhsOisFreeOfLam ->
-            (case (Map.empty) of
-             { _lhsOundefNmMp ->
-             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
--- CPatRest ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         lev                  : Int
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         isFreeOfLam          : Bool
-         undefNmMp            : UndefNmMp
-   alternatives:
-      alternative Var:
-         child nm             : {HsName}
-      alternative Empty:
--}
--- cata
-sem_CPatRest :: CPatRest ->
-                T_CPatRest
-sem_CPatRest (CPatRest_Var _nm) =
-    (sem_CPatRest_Var _nm)
-sem_CPatRest (CPatRest_Empty) =
-    (sem_CPatRest_Empty)
--- semantic domain
-type T_CPatRest = DataGam ->
-                  Int ->
-                  EHCOpts ->
-                  ( ErrSq,Bool,UndefNmMp)
-sem_CPatRest_Var :: HsName ->
-                    T_CPatRest
-sem_CPatRest_Var nm_ =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
-sem_CPatRest_Empty :: T_CPatRest
-sem_CPatRest_Empty =
-    (\ _lhsIdataGam
-       _lhsIlev
-       _lhsIopts ->
-         (case (Seq.empty) of
-          { _lhsOerrs ->
-          (case (True) of
-           { _lhsOisFreeOfLam ->
-           (case (Map.empty) of
-            { _lhsOundefNmMp ->
-            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
--- CodeAGItf ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         dataGam              : DataGam
-         moduleNm             : HsName
-         opts                 : EHCOpts
-      synthesized attributes:
-         errs                 : ErrSq
-         gathDataGam          : DataGam
-         hasMain              : Bool
-         impModNmL            : [HsName]
-         mod                  : Mod
-         notYetTransformed    : NotYetTransformedS
-         realModuleNm         : HsName
-   alternatives:
-      alternative AGItf:
-         child module         : CModule 
--}
--- cata
-sem_CodeAGItf :: CodeAGItf ->
-                 T_CodeAGItf
-sem_CodeAGItf (CodeAGItf_AGItf _module) =
-    (sem_CodeAGItf_AGItf (sem_CModule _module))
--- semantic domain
-type T_CodeAGItf = DataGam ->
-                   HsName ->
-                   EHCOpts ->
-                   ( ErrSq,DataGam,Bool,([HsName]),Mod,NotYetTransformedS,HsName)
-data Inh_CodeAGItf = Inh_CodeAGItf {dataGam_Inh_CodeAGItf :: !(DataGam),moduleNm_Inh_CodeAGItf :: !(HsName),opts_Inh_CodeAGItf :: !(EHCOpts)}
-data Syn_CodeAGItf = Syn_CodeAGItf {errs_Syn_CodeAGItf :: !(ErrSq),gathDataGam_Syn_CodeAGItf :: !(DataGam),hasMain_Syn_CodeAGItf :: !(Bool),impModNmL_Syn_CodeAGItf :: !(([HsName])),mod_Syn_CodeAGItf :: !(Mod),notYetTransformed_Syn_CodeAGItf :: !(NotYetTransformedS),realModuleNm_Syn_CodeAGItf :: !(HsName)}
-wrap_CodeAGItf :: T_CodeAGItf ->
-                  Inh_CodeAGItf ->
-                  Syn_CodeAGItf
-wrap_CodeAGItf sem (Inh_CodeAGItf _lhsIdataGam _lhsImoduleNm _lhsIopts) =
-    (let ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm) = sem _lhsIdataGam _lhsImoduleNm _lhsIopts
-     in  (Syn_CodeAGItf _lhsOerrs _lhsOgathDataGam _lhsOhasMain _lhsOimpModNmL _lhsOmod _lhsOnotYetTransformed _lhsOrealModuleNm))
-sem_CodeAGItf_AGItf :: T_CModule ->
-                       T_CodeAGItf
-sem_CodeAGItf_AGItf module_ =
-    (\ _lhsIdataGam
-       _lhsImoduleNm
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _moduleOopts ->
-          (case (_lhsImoduleNm) of
-           { _moduleOmoduleNm ->
-           (case (_lhsIdataGam) of
-            { _moduleOdataGam ->
-            (case (cLevModule) of
-             { _moduleOlev ->
-             (case (module_ _moduleOdataGam _moduleOlev _moduleOmoduleNm _moduleOopts) of
-              { ( _moduleIerrs,_moduleIgathDataGam,_moduleIhasMain,_moduleIimpModNmL,_moduleIisFreeOfLam,_moduleImod,_moduleInotYetTransformed,_moduleIrealModuleNm,_moduleIundefNmMp) ->
-                  (case (_moduleIerrs) of
-                   { _lhsOerrs ->
-                   (case (_moduleIgathDataGam) of
-                    { _lhsOgathDataGam ->
-                    (case (_moduleIhasMain) of
-                     { _lhsOhasMain ->
-                     (case (_moduleIimpModNmL) of
-                      { _lhsOimpModNmL ->
-                      (case (_moduleImod) of
-                       { _lhsOmod ->
-                       (case (_moduleInotYetTransformed) of
-                        { _lhsOnotYetTransformed ->
-                        (case (_moduleIrealModuleNm) of
-                         { _lhsOrealModuleNm ->
-                         ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm) }) }) }) }) }) }) }) }) }) }) }) }))
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Check.ag)
+module UHC.Light.Compiler.Core.Check(NotYetTransformed (..), NotYetTransformedS
+, cmodCheck', Inh_CodeAGItf (..), Syn_CodeAGItf (..)) where
+
+import UHC.Light.Compiler.Base.HsName.Builtin
+import UHC.Light.Compiler.Base.Common
+import UHC.Light.Compiler.Opts
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Error
+import UHC.Light.Compiler.Gam
+import UHC.Light.Compiler.Gam.DataGam
+import UHC.Light.Compiler.Base.TermLike
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.Core
+import Data.Maybe
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import qualified UHC.Util.FastSeq as Seq
+import qualified UHC.Util.Rel as Rel
+import Control.Applicative
+import UHC.Util.Pretty
+import UHC.Light.Compiler.Module.ImportExport
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+deriving instance Typeable Syn_CodeAGItf
+
+
+
+
+
+-- | What not yet has been transformed in the given Core, absence means some aspect has been transformed everywhere
+data NotYetTransformed
+  = NotYetTransformed_LambdaLifted
+  | NotYetTransformed_ANormal
+  deriving (Eq, Ord, Show, Enum, Bounded)
+
+type NotYetTransformedS = Set.Set NotYetTransformed
+
+
+
+cmodCheck'
+  :: Inh_CodeAGItf
+     -> CModule
+     -> Syn_CodeAGItf
+cmodCheck' inh cmod
+  = t
+  where t = wrap_CodeAGItf
+              (sem_CodeAGItf (CodeAGItf_AGItf cmod))
+              inh
+
+
+
+
+type UndefNmMp = Map.Map MetaLev [ACoreBindRef]
+
+undefmpUnion :: UndefNmMp -> UndefNmMp -> UndefNmMp
+undefmpUnion = Map.unionWith (++)
+
+-- CAlt --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Alt:
+         child pat            : CPat 
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local lev         : _
+-}
+-- cata
+sem_CAlt :: CAlt ->
+            T_CAlt
+sem_CAlt (CAlt_Alt _pat _expr) =
+    (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
+-- semantic domain
+type T_CAlt = EvalCtx ->
+              Int ->
+              EHCOpts ->
+              ( ErrSq,Bool,UndefNmMp)
+sem_CAlt_Alt :: T_CPat ->
+                T_CExpr ->
+                T_CAlt
+sem_CAlt_Alt pat_ expr_ =
+    (\ _lhsIevalCtx
+       _lhsIlev
+       _lhsIopts ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _exprOopts ->
+            (case (_lhsIlev + 1) of
+             { _lev ->
+             (case (_lev) of
+              { _exprOlev ->
+              (case (_lhsIevalCtx) of
+               { _exprOevalCtx ->
+               (case (True) of
+                { _exprOisTopTup ->
+                (case (True) of
+                 { _exprOisTopApp ->
+                 (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                  { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                      (case (_lhsIopts) of
+                       { _patOopts ->
+                       (case (_lev) of
+                        { _patOlev ->
+                        (case (pat_ _patOlev _patOopts) of
+                         { ( _patIerrs,_patIfldNmL,_patIisFreeOfLam,_patIundefNmMp) ->
+                             (case (_patIerrs `Seq.union` _exprIerrs) of
+                              { _lhsOerrs ->
+                              (case (_patIisFreeOfLam && _exprIisFreeOfLam) of
+                               { _lhsOisFreeOfLam ->
+                               (case (_patIundefNmMp `undefmpUnion` _exprIundefNmMp) of
+                                { _lhsOundefNmMp ->
+                                ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CAltL -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CAlt 
+         child tl             : CAltL 
+      alternative Nil:
+-}
+-- cata
+sem_CAltL :: CAltL ->
+             T_CAltL
+sem_CAltL list =
+    (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
+-- semantic domain
+type T_CAltL = EvalCtx ->
+               Int ->
+               EHCOpts ->
+               ( ErrSq,Bool,UndefNmMp)
+sem_CAltL_Cons :: T_CAlt ->
+                  T_CAltL ->
+                  T_CAltL
+sem_CAltL_Cons hd_ tl_ =
+    (\ _lhsIevalCtx
+       _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _tlOopts ->
+          (case (_lhsIlev) of
+           { _tlOlev ->
+           (case (_lhsIevalCtx) of
+            { _tlOevalCtx ->
+            (case (tl_ _tlOevalCtx _tlOlev _tlOopts) of
+             { ( _tlIerrs,_tlIisFreeOfLam,_tlIundefNmMp) ->
+                 (case (_lhsIopts) of
+                  { _hdOopts ->
+                  (case (_lhsIlev) of
+                   { _hdOlev ->
+                   (case (_lhsIevalCtx) of
+                    { _hdOevalCtx ->
+                    (case (hd_ _hdOevalCtx _hdOlev _hdOopts) of
+                     { ( _hdIerrs,_hdIisFreeOfLam,_hdIundefNmMp) ->
+                         (case (_hdIerrs `Seq.union` _tlIerrs) of
+                          { _lhsOerrs ->
+                          (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
+                           { _lhsOisFreeOfLam ->
+                           (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                            { _lhsOundefNmMp ->
+                            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }))
+sem_CAltL_Nil :: T_CAltL
+sem_CAltL_Nil =
+    (\ _lhsIevalCtx
+       _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CBind -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         isGlobal             : Bool
+         letBindingsCateg     : CBindCateg
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         hasMain              : Bool
+         isFreeOfLam          : Bool
+         modDefsRel           : ModEntRel
+         nm                   : HsName
+         notYetTransformed    : NotYetTransformedS
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Bind:
+         child nm             : {HsName}
+         child bindAspects    : CBoundL 
+-}
+-- cata
+sem_CBind :: CBind ->
+             T_CBind
+sem_CBind (CBind_Bind _nm _bindAspects) =
+    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
+-- semantic domain
+type T_CBind = EvalCtx ->
+               Bool ->
+               CBindCateg ->
+               Int ->
+               EHCOpts ->
+               ( ErrSq,Bool,Bool,ModEntRel,HsName,NotYetTransformedS,UndefNmMp)
+sem_CBind_Bind :: HsName ->
+                  T_CBoundL ->
+                  T_CBind
+sem_CBind_Bind nm_ bindAspects_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _bindAspectsOopts ->
+          (case (_lhsIlev) of
+           { _bindAspectsOlev ->
+           (case (_lhsIletBindingsCateg) of
+            { _bindAspectsOletBindingsCateg ->
+            (case (_lhsIisGlobal) of
+             { _bindAspectsOisGlobal ->
+             (case (_lhsIevalCtx) of
+              { _bindAspectsOevalCtx ->
+              (case (nm_) of
+               { _bindAspectsOnm ->
+               (case (bindAspects_ _bindAspectsOevalCtx _bindAspectsOisGlobal _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOnm _bindAspectsOopts) of
+                { ( _bindAspectsIerrs,_bindAspectsIisFreeOfLam,_bindAspectsInotYetTransformed,_bindAspectsIundefNmMp) ->
+                    (case (_bindAspectsIerrs) of
+                     { _lhsOerrs ->
+                     (case (nm_ == hsnMain) of
+                      { _lhsOhasMain ->
+                      (case (_bindAspectsIisFreeOfLam) of
+                       { _lhsOisFreeOfLam ->
+                       (case (let o = IdOcc nm_ IdOcc_Val
+                              in  Rel.fromList [ (hsnQualified (ioccNm o), ModEnt (ioccKind o) o Set.empty emptyRange) ]) of
+                        { _lhsOmodDefsRel ->
+                        (case (nm_) of
+                         { _lhsOnm ->
+                         (case (_bindAspectsInotYetTransformed) of
+                          { _lhsOnotYetTransformed ->
+                          (case (_bindAspectsIundefNmMp) of
+                           { _lhsOundefNmMp ->
+                           ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnm,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CBindAnn ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Coe:
+         child coe            : {RelevCoe}
+-}
+-- cata
+sem_CBindAnn :: CBindAnn ->
+                T_CBindAnn
+sem_CBindAnn (CBindAnn_Coe _coe) =
+    (sem_CBindAnn_Coe _coe)
+-- semantic domain
+type T_CBindAnn = Int ->
+                  EHCOpts ->
+                  ( ErrSq,Bool,UndefNmMp)
+sem_CBindAnn_Coe :: RelevCoe ->
+                    T_CBindAnn
+sem_CBindAnn_Coe coe_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CBindAnnL ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CBindAnn 
+         child tl             : CBindAnnL 
+      alternative Nil:
+-}
+-- cata
+sem_CBindAnnL :: CBindAnnL ->
+                 T_CBindAnnL
+sem_CBindAnnL list =
+    (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
+-- semantic domain
+type T_CBindAnnL = Int ->
+                   EHCOpts ->
+                   ( ErrSq,Bool,UndefNmMp)
+sem_CBindAnnL_Cons :: T_CBindAnn ->
+                      T_CBindAnnL ->
+                      T_CBindAnnL
+sem_CBindAnnL_Cons hd_ tl_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _tlOopts ->
+          (case (_lhsIlev) of
+           { _tlOlev ->
+           (case (tl_ _tlOlev _tlOopts) of
+            { ( _tlIerrs,_tlIisFreeOfLam,_tlIundefNmMp) ->
+                (case (_lhsIopts) of
+                 { _hdOopts ->
+                 (case (_lhsIlev) of
+                  { _hdOlev ->
+                  (case (hd_ _hdOlev _hdOopts) of
+                   { ( _hdIerrs,_hdIisFreeOfLam,_hdIundefNmMp) ->
+                       (case (_hdIerrs `Seq.union` _tlIerrs) of
+                        { _lhsOerrs ->
+                        (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
+                         { _lhsOisFreeOfLam ->
+                         (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                          { _lhsOundefNmMp ->
+                          ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }))
+sem_CBindAnnL_Nil :: T_CBindAnnL
+sem_CBindAnnL_Nil =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CBindL ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         isGlobal             : Bool
+         letBindingsCateg     : CBindCateg
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         hasMain              : Bool
+         isFreeOfLam          : Bool
+         modDefsRel           : ModEntRel
+         notYetTransformed    : NotYetTransformedS
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CBind 
+         child tl             : CBindL 
+      alternative Nil:
+-}
+-- cata
+sem_CBindL :: CBindL ->
+              T_CBindL
+sem_CBindL list =
+    (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
+-- semantic domain
+type T_CBindL = EvalCtx ->
+                Bool ->
+                CBindCateg ->
+                Int ->
+                EHCOpts ->
+                ( ErrSq,Bool,Bool,ModEntRel,NotYetTransformedS,UndefNmMp)
+sem_CBindL_Cons :: T_CBind ->
+                   T_CBindL ->
+                   T_CBindL
+sem_CBindL_Cons hd_ tl_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _tlOopts ->
+          (case (_lhsIlev) of
+           { _tlOlev ->
+           (case (_lhsIletBindingsCateg) of
+            { _tlOletBindingsCateg ->
+            (case (_lhsIisGlobal) of
+             { _tlOisGlobal ->
+             (case (_lhsIevalCtx) of
+              { _tlOevalCtx ->
+              (case (tl_ _tlOevalCtx _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOopts) of
+               { ( _tlIerrs,_tlIhasMain,_tlIisFreeOfLam,_tlImodDefsRel,_tlInotYetTransformed,_tlIundefNmMp) ->
+                   (case (_lhsIopts) of
+                    { _hdOopts ->
+                    (case (_lhsIlev) of
+                     { _hdOlev ->
+                     (case (_lhsIletBindingsCateg) of
+                      { _hdOletBindingsCateg ->
+                      (case (_lhsIisGlobal) of
+                       { _hdOisGlobal ->
+                       (case (_lhsIevalCtx) of
+                        { _hdOevalCtx ->
+                        (case (hd_ _hdOevalCtx _hdOisGlobal _hdOletBindingsCateg _hdOlev _hdOopts) of
+                         { ( _hdIerrs,_hdIhasMain,_hdIisFreeOfLam,_hdImodDefsRel,_hdInm,_hdInotYetTransformed,_hdIundefNmMp) ->
+                             (case (_hdIerrs `Seq.union` _tlIerrs) of
+                              { _lhsOerrs ->
+                              (case (_hdIhasMain || _tlIhasMain) of
+                               { _lhsOhasMain ->
+                               (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
+                                { _lhsOisFreeOfLam ->
+                                (case (_hdImodDefsRel `Rel.union` _tlImodDefsRel) of
+                                 { _lhsOmodDefsRel ->
+                                 (case (_hdInotYetTransformed `Set.union` _tlInotYetTransformed) of
+                                  { _lhsOnotYetTransformed ->
+                                  (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                                   { _lhsOundefNmMp ->
+                                   ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBindL_Nil :: T_CBindL
+sem_CBindL_Nil =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (Rel.empty) of
+             { _lhsOmodDefsRel ->
+             (case (Set.empty) of
+              { _lhsOnotYetTransformed ->
+              (case (Map.empty) of
+               { _lhsOundefNmMp ->
+               ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }))
+-- CBound ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         isGlobal             : Bool
+         isTopApp             : Bool
+         isTopTup             : Bool
+         letBindingsCateg     : CBindCateg
+         lev                  : Int
+         nm                   : HsName
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         isSimple             : Bool
+         notYetTransformed    : NotYetTransformedS
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Bind:
+         child bindMeta       : CMetas 
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isSimple    : _
+            local bindNotYetTransformed : _
+      alternative Meta:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child cmetas         : CMetas 
+      alternative RelevTy:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child relevTy        : {RelevTy}
+      alternative Val:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child mlev           : {MetaLev}
+         child lbl            : {CLbl}
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isSimple    : _
+            local bindNotYetTransformed : _
+      alternative Ty:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child ty             : {Ty}
+      alternative FFE:
+         child callconv       : {FFIWay}
+         child expEnt         : {ForeignEnt}
+         child expr           : CExpr 
+         child ty             : {Ty}
+         visit 0:
+            local whatAbove   : {WhatExpr}
+-}
+-- cata
+sem_CBound :: CBound ->
+              T_CBound
+sem_CBound (CBound_Bind _bindMeta _expr) =
+    (sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
+sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
+    (sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
+sem_CBound (CBound_RelevTy _aspectKeyS _relevTy) =
+    (sem_CBound_RelevTy _aspectKeyS _relevTy)
+sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
+    (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
+sem_CBound (CBound_Ty _aspectKeyS _ty) =
+    (sem_CBound_Ty _aspectKeyS _ty)
+sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
+    (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
+-- semantic domain
+type T_CBound = EvalCtx ->
+                Bool ->
+                Bool ->
+                Bool ->
+                CBindCateg ->
+                Int ->
+                HsName ->
+                EHCOpts ->
+                ( ErrSq,Bool,Bool,NotYetTransformedS,UndefNmMp)
+sem_CBound_Bind :: T_CMetas ->
+                   T_CExpr ->
+                   T_CBound
+sem_CBound_Bind bindMeta_ expr_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (ExprIsBind _lhsInm) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _exprOopts ->
+            (case (_lhsIlev) of
+             { _exprOlev ->
+             (case (_lhsIevalCtx) of
+              { _exprOevalCtx ->
+              (case (True) of
+               { _exprOisTopTup ->
+               (case (True) of
+                { _exprOisTopApp ->
+                (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                 { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                     (case (_lhsIopts) of
+                      { _bindMetaOopts ->
+                      (case (_lhsIlev) of
+                       { _bindMetaOlev ->
+                       (case (bindMeta_ _bindMetaOlev _bindMetaOopts) of
+                        { ( _bindMetaIerrs,_bindMetaIisFreeOfLam,_bindMetaIundefNmMp) ->
+                            (case (_bindMetaIerrs `Seq.union` _exprIerrs) of
+                             { _lhsOerrs ->
+                             (case (_bindMetaIisFreeOfLam && _exprIisFreeOfLam) of
+                              { _lhsOisFreeOfLam ->
+                              (case (case _exprIwhatBelow of
+                                         ExprIsVar _     -> True
+                                         ExprIsInt _     -> True
+                                         ExprIsOtherWHNF -> True
+                                         _               -> False) of
+                               { _isSimple ->
+                               (case (_isSimple) of
+                                { _lhsOisSimple ->
+                                (case (if whatExprIsLam _exprIwhatBelow
+                                       then if _lhsIisGlobal && _exprIlamBodyIsFreeOfLam
+                                            then Set.empty
+                                            else Set.singleton NotYetTransformed_LambdaLifted
+                                       else if _exprIisFreeOfLam
+                                            then Set.empty
+                                            else Set.singleton NotYetTransformed_LambdaLifted) of
+                                 { _bindNotYetTransformed ->
+                                 (case (Set.unions [_bindNotYetTransformed, _exprInotYetTransformed]) of
+                                  { _lhsOnotYetTransformed ->
+                                  (case (_bindMetaIundefNmMp `undefmpUnion` _exprIundefNmMp) of
+                                   { _lhsOundefNmMp ->
+                                   ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBound_Meta :: ACoreBindAspectKeyS ->
+                   T_CMetas ->
+                   T_CBound
+sem_CBound_Meta aspectKeyS_ cmetas_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _cmetasOopts ->
+          (case (_lhsIlev) of
+           { _cmetasOlev ->
+           (case (cmetas_ _cmetasOlev _cmetasOopts) of
+            { ( _cmetasIerrs,_cmetasIisFreeOfLam,_cmetasIundefNmMp) ->
+                (case (_cmetasIerrs) of
+                 { _lhsOerrs ->
+                 (case (_cmetasIisFreeOfLam) of
+                  { _lhsOisFreeOfLam ->
+                  (case (False) of
+                   { _lhsOisSimple ->
+                   (case (Set.empty) of
+                    { _lhsOnotYetTransformed ->
+                    (case (_cmetasIundefNmMp) of
+                     { _lhsOundefNmMp ->
+                     ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }))
+sem_CBound_RelevTy :: ACoreBindAspectKeyS ->
+                      RelevTy ->
+                      T_CBound
+sem_CBound_RelevTy aspectKeyS_ relevTy_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (False) of
+            { _lhsOisSimple ->
+            (case (Set.empty) of
+             { _lhsOnotYetTransformed ->
+             (case (Map.empty) of
+              { _lhsOundefNmMp ->
+              ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }))
+sem_CBound_Val :: ACoreBindAspectKeyS ->
+                  MetaLev ->
+                  CLbl ->
+                  T_CExpr ->
+                  T_CBound
+sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (ExprIsBind _lhsInm) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _exprOopts ->
+            (case (_lhsIlev) of
+             { _exprOlev ->
+             (case (_lhsIisTopTup) of
+              { _exprOisTopTup ->
+              (case (_lhsIisTopApp) of
+               { _exprOisTopApp ->
+               (case (_lhsIevalCtx) of
+                { _exprOevalCtx ->
+                (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                 { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                     (case (_exprIerrs) of
+                      { _lhsOerrs ->
+                      (case (_exprIisFreeOfLam) of
+                       { _lhsOisFreeOfLam ->
+                       (case (case _exprIwhatBelow of
+                                  ExprIsVar _     -> True
+                                  ExprIsInt _     -> True
+                                  ExprIsOtherWHNF -> True
+                                  _               -> False) of
+                        { _isSimple ->
+                        (case (_isSimple) of
+                         { _lhsOisSimple ->
+                         (case (if whatExprIsLam _exprIwhatBelow
+                                then if _lhsIisGlobal && _exprIlamBodyIsFreeOfLam
+                                     then Set.empty
+                                     else Set.singleton NotYetTransformed_LambdaLifted
+                                else if _exprIisFreeOfLam
+                                     then Set.empty
+                                     else Set.singleton NotYetTransformed_LambdaLifted) of
+                          { _bindNotYetTransformed ->
+                          (case (Set.unions [_bindNotYetTransformed, _exprInotYetTransformed]) of
+                           { _lhsOnotYetTransformed ->
+                           (case (_exprIundefNmMp) of
+                            { _lhsOundefNmMp ->
+                            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBound_Ty :: ACoreBindAspectKeyS ->
+                 Ty ->
+                 T_CBound
+sem_CBound_Ty aspectKeyS_ ty_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (False) of
+            { _lhsOisSimple ->
+            (case (Set.empty) of
+             { _lhsOnotYetTransformed ->
+             (case (Map.empty) of
+              { _lhsOundefNmMp ->
+              ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }))
+sem_CBound_FFE :: FFIWay ->
+                  ForeignEnt ->
+                  T_CExpr ->
+                  Ty ->
+                  T_CBound
+sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (ExprIsLam 0 Nothing) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _exprOopts ->
+            (case (_lhsIlev) of
+             { _exprOlev ->
+             (case (_lhsIevalCtx) of
+              { _exprOevalCtx ->
+              (case (True) of
+               { _exprOisTopTup ->
+               (case (True) of
+                { _exprOisTopApp ->
+                (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                 { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                     (case (_exprIerrs) of
+                      { _lhsOerrs ->
+                      (case (_exprIisFreeOfLam) of
+                       { _lhsOisFreeOfLam ->
+                       (case (False) of
+                        { _lhsOisSimple ->
+                        (case (_exprInotYetTransformed) of
+                         { _lhsOnotYetTransformed ->
+                         (case (_exprIundefNmMp) of
+                          { _lhsOundefNmMp ->
+                          ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CBoundL -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         isGlobal             : Bool
+         letBindingsCateg     : CBindCateg
+         lev                  : Int
+         nm                   : HsName
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         notYetTransformed    : NotYetTransformedS
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CBound 
+         child tl             : CBoundL 
+      alternative Nil:
+-}
+-- cata
+sem_CBoundL :: CBoundL ->
+               T_CBoundL
+sem_CBoundL list =
+    (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
+-- semantic domain
+type T_CBoundL = EvalCtx ->
+                 Bool ->
+                 CBindCateg ->
+                 Int ->
+                 HsName ->
+                 EHCOpts ->
+                 ( ErrSq,Bool,NotYetTransformedS,UndefNmMp)
+sem_CBoundL_Cons :: T_CBound ->
+                    T_CBoundL ->
+                    T_CBoundL
+sem_CBoundL_Cons hd_ tl_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _tlOopts ->
+          (case (_lhsInm) of
+           { _tlOnm ->
+           (case (_lhsIlev) of
+            { _tlOlev ->
+            (case (_lhsIletBindingsCateg) of
+             { _tlOletBindingsCateg ->
+             (case (_lhsIisGlobal) of
+              { _tlOisGlobal ->
+              (case (_lhsIevalCtx) of
+               { _tlOevalCtx ->
+               (case (tl_ _tlOevalCtx _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOnm _tlOopts) of
+                { ( _tlIerrs,_tlIisFreeOfLam,_tlInotYetTransformed,_tlIundefNmMp) ->
+                    (case (_lhsIopts) of
+                     { _hdOopts ->
+                     (case (_lhsInm) of
+                      { _hdOnm ->
+                      (case (_lhsIlev) of
+                       { _hdOlev ->
+                       (case (_lhsIletBindingsCateg) of
+                        { _hdOletBindingsCateg ->
+                        (case (_lhsIisGlobal) of
+                         { _hdOisGlobal ->
+                         (case (_lhsIevalCtx) of
+                          { _hdOevalCtx ->
+                          (case (True) of
+                           { _hdOisTopTup ->
+                           (case (True) of
+                            { _hdOisTopApp ->
+                            (case (hd_ _hdOevalCtx _hdOisGlobal _hdOisTopApp _hdOisTopTup _hdOletBindingsCateg _hdOlev _hdOnm _hdOopts) of
+                             { ( _hdIerrs,_hdIisFreeOfLam,_hdIisSimple,_hdInotYetTransformed,_hdIundefNmMp) ->
+                                 (case (_hdIerrs `Seq.union` _tlIerrs) of
+                                  { _lhsOerrs ->
+                                  (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
+                                   { _lhsOisFreeOfLam ->
+                                   (case (_hdInotYetTransformed `Set.union` _tlInotYetTransformed) of
+                                    { _lhsOnotYetTransformed ->
+                                    (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                                     { _lhsOundefNmMp ->
+                                     ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBoundL_Nil :: T_CBoundL
+sem_CBoundL_Nil =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsInm
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Set.empty) of
+            { _lhsOnotYetTransformed ->
+            (case (Map.empty) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }))
+-- CDataCon ----------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         dataConNmL           : [HsName]
+         dataConstrTagMp      : DataConstrTagMp
+         errs                 : ErrSq
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Con:
+         child conNm          : {HsName}
+         child tagNr          : {Int}
+         child arity          : {Int}
+         visit 0:
+            local dti         : _
+-}
+-- cata
+sem_CDataCon :: CDataCon ->
+                T_CDataCon
+sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
+    (sem_CDataCon_Con _conNm _tagNr _arity)
+-- semantic domain
+type T_CDataCon = ( ([HsName]),DataConstrTagMp,ErrSq,UndefNmMp)
+sem_CDataCon_Con :: HsName ->
+                    Int ->
+                    Int ->
+                    T_CDataCon
+sem_CDataCon_Con conNm_ tagNr_ arity_ =
+    (case ([conNm_]) of
+     { _lhsOdataConNmL ->
+     (case (emptyDataTagInfo
+                { dtiConNm          = conNm_
+                , dtiCTag           = mkOnlyConInfoCTag conNm_ tagNr_ arity_
+                }) of
+      { _dti ->
+      (case (Map.singleton conNm_ _dti) of
+       { _lhsOdataConstrTagMp ->
+       (case (Seq.empty) of
+        { _lhsOerrs ->
+        (case (Map.empty) of
+         { _lhsOundefNmMp ->
+         ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) })
+-- CDataConL ---------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         dataConNmL           : [HsName]
+         dataConstrTagMp      : DataConstrTagMp
+         errs                 : ErrSq
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CDataCon 
+         child tl             : CDataConL 
+      alternative Nil:
+-}
+-- cata
+sem_CDataConL :: CDataConL ->
+                 T_CDataConL
+sem_CDataConL list =
+    (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
+-- semantic domain
+type T_CDataConL = ( ([HsName]),DataConstrTagMp,ErrSq,UndefNmMp)
+sem_CDataConL_Cons :: T_CDataCon ->
+                      T_CDataConL ->
+                      T_CDataConL
+sem_CDataConL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIdataConNmL,_tlIdataConstrTagMp,_tlIerrs,_tlIundefNmMp) ->
+         (case (hd_) of
+          { ( _hdIdataConNmL,_hdIdataConstrTagMp,_hdIerrs,_hdIundefNmMp) ->
+              (case (_hdIdataConNmL ++ _tlIdataConNmL) of
+               { _lhsOdataConNmL ->
+               (case (_hdIdataConstrTagMp `Map.union` _tlIdataConstrTagMp) of
+                { _lhsOdataConstrTagMp ->
+                (case (_hdIerrs `Seq.union` _tlIerrs) of
+                 { _lhsOerrs ->
+                 (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                  { _lhsOundefNmMp ->
+                  ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) }) })
+sem_CDataConL_Nil :: T_CDataConL
+sem_CDataConL_Nil =
+    (case ([]) of
+     { _lhsOdataConNmL ->
+     (case (Map.empty) of
+      { _lhsOdataConstrTagMp ->
+      (case (Seq.empty) of
+       { _lhsOerrs ->
+       (case (Map.empty) of
+        { _lhsOundefNmMp ->
+        ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) })
+-- CDeclMeta ---------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         errs                 : ErrSq
+         gathDataGam          : DataGam
+         modDefsRel           : ModEntRel
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Data:
+         child tyNm           : {HsName}
+         child dataCons       : CDataConL 
+-}
+-- cata
+sem_CDeclMeta :: CDeclMeta ->
+                 T_CDeclMeta
+sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
+    (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
+-- semantic domain
+type T_CDeclMeta = ( ErrSq,DataGam,ModEntRel,UndefNmMp)
+sem_CDeclMeta_Data :: HsName ->
+                      T_CDataConL ->
+                      T_CDeclMeta
+sem_CDeclMeta_Data tyNm_ dataCons_ =
+    (case (dataCons_) of
+     { ( _dataConsIdataConNmL,_dataConsIdataConstrTagMp,_dataConsIerrs,_dataConsIundefNmMp) ->
+         (case (_dataConsIerrs) of
+          { _lhsOerrs ->
+          (case (gamSingleton tyNm_ $ mkDGIForCodegenOnly tyNm_ _dataConsIdataConstrTagMp) of
+           { _lhsOgathDataGam ->
+           (case (let to = IdOcc ( tyNm_) IdOcc_Data
+                      subs = [ ModEnt (ioccKind o) o Set.empty emptyRange | cn <- _dataConsIdataConNmL, let o = IdOcc ( cn) IdOcc_Val ]
+                  in  Rel.singleton (hsnQualified (ioccNm to)) (ModEnt (ioccKind to) to (Set.fromList subs) emptyRange)) of
+            { _lhsOmodDefsRel ->
+            (case (_dataConsIundefNmMp) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) })
+-- CDeclMetaL --------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         errs                 : ErrSq
+         gathDataGam          : DataGam
+         modDefsRel           : ModEntRel
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CDeclMeta 
+         child tl             : CDeclMetaL 
+      alternative Nil:
+-}
+-- cata
+sem_CDeclMetaL :: CDeclMetaL ->
+                  T_CDeclMetaL
+sem_CDeclMetaL list =
+    (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
+-- semantic domain
+type T_CDeclMetaL = ( ErrSq,DataGam,ModEntRel,UndefNmMp)
+sem_CDeclMetaL_Cons :: T_CDeclMeta ->
+                       T_CDeclMetaL ->
+                       T_CDeclMetaL
+sem_CDeclMetaL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIerrs,_tlIgathDataGam,_tlImodDefsRel,_tlIundefNmMp) ->
+         (case (hd_) of
+          { ( _hdIerrs,_hdIgathDataGam,_hdImodDefsRel,_hdIundefNmMp) ->
+              (case (_hdIerrs `Seq.union` _tlIerrs) of
+               { _lhsOerrs ->
+               (case (_hdIgathDataGam `gamUnion` _tlIgathDataGam) of
+                { _lhsOgathDataGam ->
+                (case (_hdImodDefsRel `Rel.union` _tlImodDefsRel) of
+                 { _lhsOmodDefsRel ->
+                 (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                  { _lhsOundefNmMp ->
+                  ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) }) })
+sem_CDeclMetaL_Nil :: T_CDeclMetaL
+sem_CDeclMetaL_Nil =
+    (case (Seq.empty) of
+     { _lhsOerrs ->
+     (case (emptyGam) of
+      { _lhsOgathDataGam ->
+      (case (Rel.empty) of
+       { _lhsOmodDefsRel ->
+       (case (Map.empty) of
+        { _lhsOundefNmMp ->
+        ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) })
+-- CExport -----------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         errs                 : ErrSq
+         modExpL              : [ModExp]
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Export:
+         child nm             : {HsName}
+      alternative ExportData:
+         child nm             : {HsName}
+         child mbConNmL       : {Maybe [HsName]}
+-}
+-- cata
+sem_CExport :: CExport ->
+               T_CExport
+sem_CExport (CExport_Export _nm) =
+    (sem_CExport_Export _nm)
+sem_CExport (CExport_ExportData _nm _mbConNmL) =
+    (sem_CExport_ExportData _nm _mbConNmL)
+-- semantic domain
+type T_CExport = ( ErrSq,([ModExp]),UndefNmMp)
+sem_CExport_Export :: HsName ->
+                      T_CExport
+sem_CExport_Export nm_ =
+    (case (Seq.empty) of
+     { _lhsOerrs ->
+     (case ([ModExpEnt (ModEntSpec (hsnQualified nm_) emptyRange Nothing)]) of
+      { _lhsOmodExpL ->
+      (case (Map.empty) of
+       { _lhsOundefNmMp ->
+       ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) })
+sem_CExport_ExportData :: HsName ->
+                          (Maybe [HsName]) ->
+                          T_CExport
+sem_CExport_ExportData nm_ mbConNmL_ =
+    (case (Seq.empty) of
+     { _lhsOerrs ->
+     (case ([ModExpEnt (ModEntSpec (hsnQualified nm_) emptyRange (fmap (ModEntSubs . map hsnQualified) mbConNmL_))]) of
+      { _lhsOmodExpL ->
+      (case (Map.empty) of
+       { _lhsOundefNmMp ->
+       ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) })
+-- CExportL ----------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         errs                 : ErrSq
+         modExpL              : [ModExp]
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CExport 
+         child tl             : CExportL 
+      alternative Nil:
+-}
+-- cata
+sem_CExportL :: CExportL ->
+                T_CExportL
+sem_CExportL list =
+    (Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list))
+-- semantic domain
+type T_CExportL = ( ErrSq,([ModExp]),UndefNmMp)
+sem_CExportL_Cons :: T_CExport ->
+                     T_CExportL ->
+                     T_CExportL
+sem_CExportL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIerrs,_tlImodExpL,_tlIundefNmMp) ->
+         (case (hd_) of
+          { ( _hdIerrs,_hdImodExpL,_hdIundefNmMp) ->
+              (case (_hdIerrs `Seq.union` _tlIerrs) of
+               { _lhsOerrs ->
+               (case (_hdImodExpL ++ _tlImodExpL) of
+                { _lhsOmodExpL ->
+                (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                 { _lhsOundefNmMp ->
+                 ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) }) }) })
+sem_CExportL_Nil :: T_CExportL
+sem_CExportL_Nil =
+    (case (Seq.empty) of
+     { _lhsOerrs ->
+     (case ([]) of
+      { _lhsOmodExpL ->
+      (case (Map.empty) of
+       { _lhsOundefNmMp ->
+       ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) })
+-- CExpr -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         isTopApp             : Bool
+         isTopTup             : Bool
+         lev                  : Int
+         opts                 : EHCOpts
+         whatAbove            : WhatExpr
+      synthesized attributes:
+         errs                 : ErrSq
+         hasMain              : Bool
+         isFreeOfLam          : Bool
+         lamBodyIsFreeOfLam   : Bool
+         modDefsRel           : ModEntRel
+         notYetTransformed    : NotYetTransformedS
+         undefNmMp            : UndefNmMp
+         whatBelow            : WhatExpr
+   alternatives:
+      alternative Var:
+         child ref            : {ACoreBindRef}
+         visit 0:
+            local nm          : {HsName}
+            local whatBelow   : _
+      alternative Int:
+         child int            : {Int}
+         visit 0:
+            local whatBelow   : _
+      alternative Char:
+         child char           : {Char}
+         visit 0:
+            local whatBelow   : _
+      alternative String:
+         child str            : {String}
+         visit 0:
+            local whatBelow   : _
+      alternative Integer:
+         child integer        : {Integer}
+         visit 0:
+            local whatBelow   : _
+      alternative Tup:
+         child tag            : {CTag}
+         visit 0:
+            local whatBelow   : _
+      alternative Let:
+         child categ          : {CBindCateg}
+         child binds          : CBindL 
+         child body           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local evalCtx     : _
+            local letBindingsCateg : _
+            local isGlobal    : _
+            local whatBelow   : _
+      alternative App:
+         child func           : CExpr 
+         child arg            : CBound 
+         visit 0:
+            local letBindingsCateg : _
+            local isTopTup    : _
+            local isGlobal    : _
+            local whatAbove   : {WhatExpr}
+            local appNotYetTransformed : _
+            local whatBelow   : _
+      alternative Lam:
+         child bind           : CBind 
+         child body           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local lev         : _
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local letBindingsCateg : _
+            local isGlobal    : _
+            local whatBelow   : _
+      alternative Case:
+         child expr           : CExpr 
+         child alts           : CAltL 
+         child dflt           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative CaseAltFail:
+         child failReason     : {CaseAltFailReason}
+         child errorExpr      : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+      alternative TupDel:
+         child expr           : CExpr 
+         child tag            : {CTag}
+         child nm             : {HsName}
+         child offset         : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative TupIns:
+         child expr           : CExpr 
+         child tag            : {CTag}
+         child nm             : {HsName}
+         child offset         : CExpr 
+         child fldExpr        : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative TupUpd:
+         child expr           : CExpr 
+         child tag            : {CTag}
+         child nm             : {HsName}
+         child offset         : CExpr 
+         child fldExpr        : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative FFI:
+         child callconv       : {FFIWay}
+         child safety         : {String}
+         child impEnt         : {ForeignEnt}
+         child ty             : {Ty}
+         visit 0:
+            local whatBelow   : _
+      alternative Dbg:
+         child info           : {String}
+         visit 0:
+            local whatBelow   : _
+      alternative Hole:
+         child uid            : {UID}
+         visit 0:
+            local whatBelow   : _
+      alternative HoleLet:
+         child bindsUid       : {UID}
+         child body           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative CoeArg:
+         visit 0:
+            local whatBelow   : _
+      alternative ImplsApp:
+         child func           : CExpr 
+         child uid            : {ImplsVarId}
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative ImplsLam:
+         child uid            : {ImplsVarId}
+         child body           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local whatBelow   : _
+      alternative Ann:
+         child ann            : CExprAnn 
+         child expr           : CExpr 
+-}
+-- cata
+sem_CExpr :: CExpr ->
+             T_CExpr
+sem_CExpr (CExpr_Var _ref) =
+    (sem_CExpr_Var _ref)
+sem_CExpr (CExpr_Int _int) =
+    (sem_CExpr_Int _int)
+sem_CExpr (CExpr_Char _char) =
+    (sem_CExpr_Char _char)
+sem_CExpr (CExpr_String _str) =
+    (sem_CExpr_String _str)
+sem_CExpr (CExpr_Integer _integer) =
+    (sem_CExpr_Integer _integer)
+sem_CExpr (CExpr_Tup _tag) =
+    (sem_CExpr_Tup _tag)
+sem_CExpr (CExpr_Let _categ _binds _body) =
+    (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
+sem_CExpr (CExpr_App _func _arg) =
+    (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
+sem_CExpr (CExpr_Lam _bind _body) =
+    (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
+sem_CExpr (CExpr_Case _expr _alts _dflt) =
+    (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
+sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
+    (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
+sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
+    (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
+sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
+    (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
+sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
+    (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
+sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
+    (sem_CExpr_FFI _callconv _safety _impEnt _ty)
+sem_CExpr (CExpr_Dbg _info) =
+    (sem_CExpr_Dbg _info)
+sem_CExpr (CExpr_Hole _uid) =
+    (sem_CExpr_Hole _uid)
+sem_CExpr (CExpr_HoleLet _bindsUid _body) =
+    (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
+sem_CExpr (CExpr_CoeArg) =
+    (sem_CExpr_CoeArg)
+sem_CExpr (CExpr_ImplsApp _func _uid) =
+    (sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
+sem_CExpr (CExpr_ImplsLam _uid _body) =
+    (sem_CExpr_ImplsLam _uid (sem_CExpr _body))
+sem_CExpr (CExpr_Ann _ann _expr) =
+    (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
+-- semantic domain
+type T_CExpr = EvalCtx ->
+               Bool ->
+               Bool ->
+               Int ->
+               EHCOpts ->
+               WhatExpr ->
+               ( ErrSq,Bool,Bool,Bool,ModEntRel,NotYetTransformedS,UndefNmMp,WhatExpr)
+sem_CExpr_Var :: ACoreBindRef ->
+                 T_CExpr
+sem_CExpr_Var ref_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (acbrefNm ref_) of
+                 { _nm ->
+                 (case (ExprIsVar _nm) of
+                  { _whatBelow ->
+                  (case (_whatBelow) of
+                   { _lhsOwhatBelow ->
+                   ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Int :: Int ->
+                 T_CExpr
+sem_CExpr_Int int_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsInt int_) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Char :: Char ->
+                  T_CExpr
+sem_CExpr_Char char_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsOtherWHNF) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_String :: String ->
+                    T_CExpr
+sem_CExpr_String str_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsOtherWHNF) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Integer :: Integer ->
+                     T_CExpr
+sem_CExpr_Integer integer_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsOtherWHNF) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Tup :: CTag ->
+                 T_CExpr
+sem_CExpr_Tup tag_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsTup tag_) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Let :: CBindCateg ->
+                 T_CBindL ->
+                 T_CExpr ->
+                 T_CExpr
+sem_CExpr_Let categ_ binds_ body_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _bodyOwhatAbove ->
+           (case (_lhsIopts) of
+            { _bodyOopts ->
+            (case (_lhsIlev) of
+             { _bodyOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _bodyOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _bodyOisTopApp ->
+                 (case (if categ_ == CBindCateg_Strict
+                        then EvalCtx_Eval
+                        else EvalCtx_Thunk) of
+                  { _evalCtx ->
+                  (case (_evalCtx) of
+                   { _bodyOevalCtx ->
+                   (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
+                    { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
+                        (case (_lhsIopts) of
+                         { _bindsOopts ->
+                         (case (categ_) of
+                          { _letBindingsCateg ->
+                          (case (_letBindingsCateg) of
+                           { _bindsOletBindingsCateg ->
+                           (case (_lhsIlev == cLevModule) of
+                            { _isGlobal ->
+                            (case (_isGlobal) of
+                             { _bindsOisGlobal ->
+                             (case (_evalCtx) of
+                              { _bindsOevalCtx ->
+                              (case (_lhsIlev + 1) of
+                               { _bindsOlev ->
+                               (case (binds_ _bindsOevalCtx _bindsOisGlobal _bindsOletBindingsCateg _bindsOlev _bindsOopts) of
+                                { ( _bindsIerrs,_bindsIhasMain,_bindsIisFreeOfLam,_bindsImodDefsRel,_bindsInotYetTransformed,_bindsIundefNmMp) ->
+                                    (case (_bindsIerrs `Seq.union` _bodyIerrs) of
+                                     { _lhsOerrs ->
+                                     (case (_bindsIhasMain || _bodyIhasMain) of
+                                      { _lhsOhasMain ->
+                                      (case (_bindsIisFreeOfLam && _bodyIisFreeOfLam) of
+                                       { _lhsOisFreeOfLam ->
+                                       (case (False) of
+                                        { _lhsOlamBodyIsFreeOfLam ->
+                                        (case (_bindsImodDefsRel `Rel.union` _bodyImodDefsRel) of
+                                         { _lhsOmodDefsRel ->
+                                         (case (_bindsInotYetTransformed `Set.union` _bodyInotYetTransformed) of
+                                          { _lhsOnotYetTransformed ->
+                                          (case (_bindsIundefNmMp `undefmpUnion` _bodyIundefNmMp) of
+                                           { _lhsOundefNmMp ->
+                                           (case (ExprIsOther) of
+                                            { _whatBelow ->
+                                            (case (_whatBelow) of
+                                             { _lhsOwhatBelow ->
+                                             ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_App :: T_CExpr ->
+                 T_CBound ->
+                 T_CExpr
+sem_CExpr_App func_ arg_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (_lhsIopts) of
+          { _argOopts ->
+          (case (_lhsIlev) of
+           { _argOlev ->
+           (case (acoreBindcategPlain) of
+            { _letBindingsCateg ->
+            (case (_letBindingsCateg) of
+             { _argOletBindingsCateg ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _argOisTopTup ->
+               (case (False) of
+                { _isGlobal ->
+                (case (_isGlobal) of
+                 { _argOisGlobal ->
+                 (case (hsnUnknown) of
+                  { _argOnm ->
+                  (case (EvalCtx_Thunk) of
+                   { _argOevalCtx ->
+                   (case (True) of
+                    { _argOisTopApp ->
+                    (case (arg_ _argOevalCtx _argOisGlobal _argOisTopApp _argOisTopTup _argOletBindingsCateg _argOlev _argOnm _argOopts) of
+                     { ( _argIerrs,_argIisFreeOfLam,_argIisSimple,_argInotYetTransformed,_argIundefNmMp) ->
+                         (case (maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove) of
+                          { _whatAbove ->
+                          (case (_whatAbove) of
+                           { _funcOwhatAbove ->
+                           (case (_lhsIopts) of
+                            { _funcOopts ->
+                            (case (_lhsIlev) of
+                             { _funcOlev ->
+                             (case (_isTopTup) of
+                              { _funcOisTopTup ->
+                              (case (_lhsIevalCtx) of
+                               { _funcOevalCtx ->
+                               (case (False) of
+                                { _funcOisTopApp ->
+                                (case (func_ _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlev _funcOopts _funcOwhatAbove) of
+                                 { ( _funcIerrs,_funcIhasMain,_funcIisFreeOfLam,_funcIlamBodyIsFreeOfLam,_funcImodDefsRel,_funcInotYetTransformed,_funcIundefNmMp,_funcIwhatBelow) ->
+                                     (case (_funcIerrs `Seq.union` _argIerrs) of
+                                      { _lhsOerrs ->
+                                      (case (_funcIhasMain) of
+                                       { _lhsOhasMain ->
+                                       (case (_funcIisFreeOfLam && _argIisFreeOfLam) of
+                                        { _lhsOisFreeOfLam ->
+                                        (case (False) of
+                                         { _lhsOlamBodyIsFreeOfLam ->
+                                         (case (_funcImodDefsRel) of
+                                          { _lhsOmodDefsRel ->
+                                          (case (if _argIisSimple then Set.empty else Set.singleton NotYetTransformed_ANormal) of
+                                           { _appNotYetTransformed ->
+                                           (case (Set.unions [_appNotYetTransformed, _funcInotYetTransformed, _argInotYetTransformed]) of
+                                            { _lhsOnotYetTransformed ->
+                                            (case (_funcIundefNmMp `undefmpUnion` _argIundefNmMp) of
+                                             { _lhsOundefNmMp ->
+                                             (case (maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow) of
+                                              { _whatBelow ->
+                                              (case (_whatBelow) of
+                                               { _lhsOwhatBelow ->
+                                               ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Lam :: T_CBind ->
+                 T_CExpr ->
+                 T_CExpr
+sem_CExpr_Lam bind_ body_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (case _lhsIwhatAbove of
+                    ExprIsLam a mbnm    -> ExprIsLam (a + 1) mbnm
+                    ExprIsBind nm       -> ExprIsLam 1       (Just nm)
+                    _                   -> ExprIsLam 1       Nothing) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _bodyOwhatAbove ->
+           (case (_lhsIopts) of
+            { _bodyOopts ->
+            (case (_lhsIlev + 1) of
+             { _lev ->
+             (case (_lev) of
+              { _bodyOlev ->
+              (case (True) of
+               { _isTopTup ->
+               (case (_isTopTup) of
+                { _bodyOisTopTup ->
+                (case (True) of
+                 { _isTopApp ->
+                 (case (_isTopApp) of
+                  { _bodyOisTopApp ->
+                  (case (_lhsIevalCtx) of
+                   { _bodyOevalCtx ->
+                   (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
+                    { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
+                        (case (_lhsIopts) of
+                         { _bindOopts ->
+                         (case (_lev) of
+                          { _bindOlev ->
+                          (case (acoreBindcategPlain) of
+                           { _letBindingsCateg ->
+                           (case (_letBindingsCateg) of
+                            { _bindOletBindingsCateg ->
+                            (case (False) of
+                             { _isGlobal ->
+                             (case (_isGlobal) of
+                              { _bindOisGlobal ->
+                              (case (_lhsIevalCtx) of
+                               { _bindOevalCtx ->
+                               (case (bind_ _bindOevalCtx _bindOisGlobal _bindOletBindingsCateg _bindOlev _bindOopts) of
+                                { ( _bindIerrs,_bindIhasMain,_bindIisFreeOfLam,_bindImodDefsRel,_bindInm,_bindInotYetTransformed,_bindIundefNmMp) ->
+                                    (case (_bindIerrs `Seq.union` _bodyIerrs) of
+                                     { _lhsOerrs ->
+                                     (case (_bindIhasMain || _bodyIhasMain) of
+                                      { _lhsOhasMain ->
+                                      (case (False) of
+                                       { _lhsOisFreeOfLam ->
+                                       (case (if whatExprIsLam _bodyIwhatBelow
+                                              then _bodyIlamBodyIsFreeOfLam
+                                              else _bodyIisFreeOfLam) of
+                                        { _lhsOlamBodyIsFreeOfLam ->
+                                        (case (_bindImodDefsRel `Rel.union` _bodyImodDefsRel) of
+                                         { _lhsOmodDefsRel ->
+                                         (case (_bindInotYetTransformed `Set.union` _bodyInotYetTransformed) of
+                                          { _lhsOnotYetTransformed ->
+                                          (case (_bindIundefNmMp `undefmpUnion` _bodyIundefNmMp) of
+                                           { _lhsOundefNmMp ->
+                                           (case (maybe (ExprIsLam 1 Nothing) (\a -> ExprIsLam (a + 1) Nothing) $ whatExprMbLam _bodyIwhatBelow) of
+                                            { _whatBelow ->
+                                            (case (_whatBelow) of
+                                             { _lhsOwhatBelow ->
+                                             ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Case :: T_CExpr ->
+                  T_CAltL ->
+                  T_CExpr ->
+                  T_CExpr
+sem_CExpr_Case expr_ alts_ dflt_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _dfltOwhatAbove ->
+           (case (_lhsIopts) of
+            { _dfltOopts ->
+            (case (_lhsIlev) of
+             { _dfltOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _dfltOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _dfltOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _dfltOevalCtx ->
+                  (case (dflt_ _dfltOevalCtx _dfltOisTopApp _dfltOisTopTup _dfltOlev _dfltOopts _dfltOwhatAbove) of
+                   { ( _dfltIerrs,_dfltIhasMain,_dfltIisFreeOfLam,_dfltIlamBodyIsFreeOfLam,_dfltImodDefsRel,_dfltInotYetTransformed,_dfltIundefNmMp,_dfltIwhatBelow) ->
+                       (case (_lhsIopts) of
+                        { _altsOopts ->
+                        (case (_lhsIlev) of
+                         { _altsOlev ->
+                         (case (_lhsIevalCtx) of
+                          { _altsOevalCtx ->
+                          (case (alts_ _altsOevalCtx _altsOlev _altsOopts) of
+                           { ( _altsIerrs,_altsIisFreeOfLam,_altsIundefNmMp) ->
+                               (case (_whatAbove) of
+                                { _exprOwhatAbove ->
+                                (case (_lhsIopts) of
+                                 { _exprOopts ->
+                                 (case (_lhsIlev) of
+                                  { _exprOlev ->
+                                  (case (_isTopTup) of
+                                   { _exprOisTopTup ->
+                                   (case (_isTopApp) of
+                                    { _exprOisTopApp ->
+                                    (case (_lhsIevalCtx) of
+                                     { _exprOevalCtx ->
+                                     (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                                      { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                                          (case (_exprIerrs `Seq.union` _altsIerrs `Seq.union` _dfltIerrs) of
+                                           { _lhsOerrs ->
+                                           (case (_exprIhasMain || _dfltIhasMain) of
+                                            { _lhsOhasMain ->
+                                            (case (_exprIisFreeOfLam && _altsIisFreeOfLam && _dfltIisFreeOfLam) of
+                                             { _lhsOisFreeOfLam ->
+                                             (case (False) of
+                                              { _lhsOlamBodyIsFreeOfLam ->
+                                              (case (_exprImodDefsRel `Rel.union` _dfltImodDefsRel) of
+                                               { _lhsOmodDefsRel ->
+                                               (case (_exprInotYetTransformed `Set.union` _dfltInotYetTransformed) of
+                                                { _lhsOnotYetTransformed ->
+                                                (case (_exprIundefNmMp `undefmpUnion` _altsIundefNmMp `undefmpUnion` _dfltIundefNmMp) of
+                                                 { _lhsOundefNmMp ->
+                                                 (case (ExprIsOther) of
+                                                  { _whatBelow ->
+                                                  (case (_whatBelow) of
+                                                   { _lhsOwhatBelow ->
+                                                   ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_CaseAltFail :: CaseAltFailReason ->
+                         T_CExpr ->
+                         T_CExpr
+sem_CExpr_CaseAltFail failReason_ errorExpr_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _errorExprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _errorExprOopts ->
+            (case (_lhsIlev) of
+             { _errorExprOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _errorExprOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _errorExprOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _errorExprOevalCtx ->
+                  (case (errorExpr_ _errorExprOevalCtx _errorExprOisTopApp _errorExprOisTopTup _errorExprOlev _errorExprOopts _errorExprOwhatAbove) of
+                   { ( _errorExprIerrs,_errorExprIhasMain,_errorExprIisFreeOfLam,_errorExprIlamBodyIsFreeOfLam,_errorExprImodDefsRel,_errorExprInotYetTransformed,_errorExprIundefNmMp,_errorExprIwhatBelow) ->
+                       (case (_errorExprIerrs) of
+                        { _lhsOerrs ->
+                        (case (_errorExprIhasMain) of
+                         { _lhsOhasMain ->
+                         (case (_errorExprIisFreeOfLam) of
+                          { _lhsOisFreeOfLam ->
+                          (case (False) of
+                           { _lhsOlamBodyIsFreeOfLam ->
+                           (case (_errorExprImodDefsRel) of
+                            { _lhsOmodDefsRel ->
+                            (case (_errorExprInotYetTransformed) of
+                             { _lhsOnotYetTransformed ->
+                             (case (_errorExprIundefNmMp) of
+                              { _lhsOundefNmMp ->
+                              (case (_errorExprIwhatBelow) of
+                               { _lhsOwhatBelow ->
+                               ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_TupDel :: T_CExpr ->
+                    CTag ->
+                    HsName ->
+                    T_CExpr ->
+                    T_CExpr
+sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _offsetOwhatAbove ->
+           (case (_lhsIopts) of
+            { _offsetOopts ->
+            (case (_lhsIlev) of
+             { _offsetOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _offsetOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _offsetOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _offsetOevalCtx ->
+                  (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
+                   { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
+                       (case (_whatAbove) of
+                        { _exprOwhatAbove ->
+                        (case (_lhsIopts) of
+                         { _exprOopts ->
+                         (case (_lhsIlev) of
+                          { _exprOlev ->
+                          (case (_isTopApp) of
+                           { _exprOisTopApp ->
+                           (case (_lhsIevalCtx) of
+                            { _exprOevalCtx ->
+                            (case (False) of
+                             { _exprOisTopTup ->
+                             (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                              { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                                  (case (_exprIerrs `Seq.union` _offsetIerrs) of
+                                   { _lhsOerrs ->
+                                   (case (_exprIhasMain || _offsetIhasMain) of
+                                    { _lhsOhasMain ->
+                                    (case (_exprIisFreeOfLam && _offsetIisFreeOfLam) of
+                                     { _lhsOisFreeOfLam ->
+                                     (case (False) of
+                                      { _lhsOlamBodyIsFreeOfLam ->
+                                      (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel) of
+                                       { _lhsOmodDefsRel ->
+                                       (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed) of
+                                        { _lhsOnotYetTransformed ->
+                                        (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp) of
+                                         { _lhsOundefNmMp ->
+                                         (case (ExprIsOther) of
+                                          { _whatBelow ->
+                                          (case (_whatBelow) of
+                                           { _lhsOwhatBelow ->
+                                           ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_TupIns :: T_CExpr ->
+                    CTag ->
+                    HsName ->
+                    T_CExpr ->
+                    T_CExpr ->
+                    T_CExpr
+sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _fldExprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _fldExprOopts ->
+            (case (_lhsIlev) of
+             { _fldExprOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _fldExprOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _fldExprOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _fldExprOevalCtx ->
+                  (case (fldExpr_ _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlev _fldExprOopts _fldExprOwhatAbove) of
+                   { ( _fldExprIerrs,_fldExprIhasMain,_fldExprIisFreeOfLam,_fldExprIlamBodyIsFreeOfLam,_fldExprImodDefsRel,_fldExprInotYetTransformed,_fldExprIundefNmMp,_fldExprIwhatBelow) ->
+                       (case (_whatAbove) of
+                        { _offsetOwhatAbove ->
+                        (case (_lhsIopts) of
+                         { _offsetOopts ->
+                         (case (_lhsIlev) of
+                          { _offsetOlev ->
+                          (case (_isTopTup) of
+                           { _offsetOisTopTup ->
+                           (case (_isTopApp) of
+                            { _offsetOisTopApp ->
+                            (case (_lhsIevalCtx) of
+                             { _offsetOevalCtx ->
+                             (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
+                              { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
+                                  (case (_whatAbove) of
+                                   { _exprOwhatAbove ->
+                                   (case (_lhsIopts) of
+                                    { _exprOopts ->
+                                    (case (_lhsIlev) of
+                                     { _exprOlev ->
+                                     (case (_isTopApp) of
+                                      { _exprOisTopApp ->
+                                      (case (_lhsIevalCtx) of
+                                       { _exprOevalCtx ->
+                                       (case (False) of
+                                        { _exprOisTopTup ->
+                                        (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                                         { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                                             (case (_exprIerrs `Seq.union` _offsetIerrs `Seq.union` _fldExprIerrs) of
+                                              { _lhsOerrs ->
+                                              (case (_exprIhasMain || _offsetIhasMain || _fldExprIhasMain) of
+                                               { _lhsOhasMain ->
+                                               (case (_exprIisFreeOfLam && _offsetIisFreeOfLam && _fldExprIisFreeOfLam) of
+                                                { _lhsOisFreeOfLam ->
+                                                (case (False) of
+                                                 { _lhsOlamBodyIsFreeOfLam ->
+                                                 (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel `Rel.union` _fldExprImodDefsRel) of
+                                                  { _lhsOmodDefsRel ->
+                                                  (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed `Set.union` _fldExprInotYetTransformed) of
+                                                   { _lhsOnotYetTransformed ->
+                                                   (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp `undefmpUnion` _fldExprIundefNmMp) of
+                                                    { _lhsOundefNmMp ->
+                                                    (case (ExprIsOther) of
+                                                     { _whatBelow ->
+                                                     (case (_whatBelow) of
+                                                      { _lhsOwhatBelow ->
+                                                      ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_TupUpd :: T_CExpr ->
+                    CTag ->
+                    HsName ->
+                    T_CExpr ->
+                    T_CExpr ->
+                    T_CExpr
+sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _fldExprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _fldExprOopts ->
+            (case (_lhsIlev) of
+             { _fldExprOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _fldExprOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _fldExprOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _fldExprOevalCtx ->
+                  (case (fldExpr_ _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlev _fldExprOopts _fldExprOwhatAbove) of
+                   { ( _fldExprIerrs,_fldExprIhasMain,_fldExprIisFreeOfLam,_fldExprIlamBodyIsFreeOfLam,_fldExprImodDefsRel,_fldExprInotYetTransformed,_fldExprIundefNmMp,_fldExprIwhatBelow) ->
+                       (case (_whatAbove) of
+                        { _offsetOwhatAbove ->
+                        (case (_lhsIopts) of
+                         { _offsetOopts ->
+                         (case (_lhsIlev) of
+                          { _offsetOlev ->
+                          (case (_isTopTup) of
+                           { _offsetOisTopTup ->
+                           (case (_isTopApp) of
+                            { _offsetOisTopApp ->
+                            (case (_lhsIevalCtx) of
+                             { _offsetOevalCtx ->
+                             (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
+                              { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
+                                  (case (_whatAbove) of
+                                   { _exprOwhatAbove ->
+                                   (case (_lhsIopts) of
+                                    { _exprOopts ->
+                                    (case (_lhsIlev) of
+                                     { _exprOlev ->
+                                     (case (_isTopApp) of
+                                      { _exprOisTopApp ->
+                                      (case (_lhsIevalCtx) of
+                                       { _exprOevalCtx ->
+                                       (case (False) of
+                                        { _exprOisTopTup ->
+                                        (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                                         { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                                             (case (_exprIerrs `Seq.union` _offsetIerrs `Seq.union` _fldExprIerrs) of
+                                              { _lhsOerrs ->
+                                              (case (_exprIhasMain || _offsetIhasMain || _fldExprIhasMain) of
+                                               { _lhsOhasMain ->
+                                               (case (_exprIisFreeOfLam && _offsetIisFreeOfLam && _fldExprIisFreeOfLam) of
+                                                { _lhsOisFreeOfLam ->
+                                                (case (False) of
+                                                 { _lhsOlamBodyIsFreeOfLam ->
+                                                 (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel `Rel.union` _fldExprImodDefsRel) of
+                                                  { _lhsOmodDefsRel ->
+                                                  (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed `Set.union` _fldExprInotYetTransformed) of
+                                                   { _lhsOnotYetTransformed ->
+                                                   (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp `undefmpUnion` _fldExprIundefNmMp) of
+                                                    { _lhsOundefNmMp ->
+                                                    (case (ExprIsOther) of
+                                                     { _whatBelow ->
+                                                     (case (_whatBelow) of
+                                                      { _lhsOwhatBelow ->
+                                                      ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_FFI :: FFIWay ->
+                 String ->
+                 ForeignEnt ->
+                 Ty ->
+                 T_CExpr
+sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsFFI) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Dbg :: String ->
+                 T_CExpr
+sem_CExpr_Dbg info_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsOther) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Hole :: UID ->
+                  T_CExpr
+sem_CExpr_Hole uid_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsOther) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_HoleLet :: UID ->
+                     T_CExpr ->
+                     T_CExpr
+sem_CExpr_HoleLet bindsUid_ body_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _bodyOwhatAbove ->
+           (case (_lhsIopts) of
+            { _bodyOopts ->
+            (case (_lhsIlev) of
+             { _bodyOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _bodyOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _bodyOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _bodyOevalCtx ->
+                  (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
+                   { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
+                       (case (_bodyIerrs) of
+                        { _lhsOerrs ->
+                        (case (_bodyIhasMain) of
+                         { _lhsOhasMain ->
+                         (case (_bodyIisFreeOfLam) of
+                          { _lhsOisFreeOfLam ->
+                          (case (False) of
+                           { _lhsOlamBodyIsFreeOfLam ->
+                           (case (_bodyImodDefsRel) of
+                            { _lhsOmodDefsRel ->
+                            (case (_bodyInotYetTransformed) of
+                             { _lhsOnotYetTransformed ->
+                             (case (_bodyIundefNmMp) of
+                              { _lhsOundefNmMp ->
+                              (case (ExprIsOther) of
+                               { _whatBelow ->
+                               (case (_whatBelow) of
+                                { _lhsOwhatBelow ->
+                                ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_CoeArg :: T_CExpr
+sem_CExpr_CoeArg =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (False) of
+           { _lhsOhasMain ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (False) of
+             { _lhsOlamBodyIsFreeOfLam ->
+             (case (Rel.empty) of
+              { _lhsOmodDefsRel ->
+              (case (Set.empty) of
+               { _lhsOnotYetTransformed ->
+               (case (Map.empty) of
+                { _lhsOundefNmMp ->
+                (case (ExprIsOther) of
+                 { _whatBelow ->
+                 (case (_whatBelow) of
+                  { _lhsOwhatBelow ->
+                  ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
+sem_CExpr_ImplsApp :: T_CExpr ->
+                      ImplsVarId ->
+                      T_CExpr
+sem_CExpr_ImplsApp func_ uid_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _funcOwhatAbove ->
+           (case (_lhsIopts) of
+            { _funcOopts ->
+            (case (_lhsIlev) of
+             { _funcOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _funcOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _funcOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _funcOevalCtx ->
+                  (case (func_ _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlev _funcOopts _funcOwhatAbove) of
+                   { ( _funcIerrs,_funcIhasMain,_funcIisFreeOfLam,_funcIlamBodyIsFreeOfLam,_funcImodDefsRel,_funcInotYetTransformed,_funcIundefNmMp,_funcIwhatBelow) ->
+                       (case (_funcIerrs) of
+                        { _lhsOerrs ->
+                        (case (_funcIhasMain) of
+                         { _lhsOhasMain ->
+                         (case (_funcIisFreeOfLam) of
+                          { _lhsOisFreeOfLam ->
+                          (case (False) of
+                           { _lhsOlamBodyIsFreeOfLam ->
+                           (case (_funcImodDefsRel) of
+                            { _lhsOmodDefsRel ->
+                            (case (_funcInotYetTransformed) of
+                             { _lhsOnotYetTransformed ->
+                             (case (_funcIundefNmMp) of
+                              { _lhsOundefNmMp ->
+                              (case (ExprIsOther) of
+                               { _whatBelow ->
+                               (case (_whatBelow) of
+                                { _lhsOwhatBelow ->
+                                ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_ImplsLam :: ImplsVarId ->
+                      T_CExpr ->
+                      T_CExpr
+sem_CExpr_ImplsLam uid_ body_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _bodyOwhatAbove ->
+           (case (_lhsIopts) of
+            { _bodyOopts ->
+            (case (_lhsIlev) of
+             { _bodyOlev ->
+             (case (True) of
+              { _isTopTup ->
+              (case (_isTopTup) of
+               { _bodyOisTopTup ->
+               (case (True) of
+                { _isTopApp ->
+                (case (_isTopApp) of
+                 { _bodyOisTopApp ->
+                 (case (_lhsIevalCtx) of
+                  { _bodyOevalCtx ->
+                  (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of
+                   { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) ->
+                       (case (_bodyIerrs) of
+                        { _lhsOerrs ->
+                        (case (_bodyIhasMain) of
+                         { _lhsOhasMain ->
+                         (case (_bodyIisFreeOfLam) of
+                          { _lhsOisFreeOfLam ->
+                          (case (False) of
+                           { _lhsOlamBodyIsFreeOfLam ->
+                           (case (_bodyImodDefsRel) of
+                            { _lhsOmodDefsRel ->
+                            (case (_bodyInotYetTransformed) of
+                             { _lhsOnotYetTransformed ->
+                             (case (_bodyIundefNmMp) of
+                              { _lhsOundefNmMp ->
+                              (case (ExprIsOther) of
+                               { _whatBelow ->
+                               (case (_whatBelow) of
+                                { _lhsOwhatBelow ->
+                                ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CExpr_Ann :: T_CExprAnn ->
+                 T_CExpr ->
+                 T_CExpr
+sem_CExpr_Ann ann_ expr_ =
+    (\ _lhsIevalCtx
+       _lhsIisTopApp
+       _lhsIisTopTup
+       _lhsIlev
+       _lhsIopts
+       _lhsIwhatAbove ->
+         (case (_lhsIwhatAbove) of
+          { _exprOwhatAbove ->
+          (case (_lhsIopts) of
+           { _exprOopts ->
+           (case (_lhsIlev) of
+            { _exprOlev ->
+            (case (_lhsIisTopTup) of
+             { _exprOisTopTup ->
+             (case (_lhsIisTopApp) of
+              { _exprOisTopApp ->
+              (case (_lhsIevalCtx) of
+               { _exprOevalCtx ->
+               (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                    (case (_lhsIopts) of
+                     { _annOopts ->
+                     (case (_lhsIlev) of
+                      { _annOlev ->
+                      (case (ann_ _annOlev _annOopts) of
+                       { ( _annIerrs,_annIisFreeOfLam,_annIundefNmMp) ->
+                           (case (_annIerrs `Seq.union` _exprIerrs) of
+                            { _lhsOerrs ->
+                            (case (_exprIhasMain) of
+                             { _lhsOhasMain ->
+                             (case (_annIisFreeOfLam && _exprIisFreeOfLam) of
+                              { _lhsOisFreeOfLam ->
+                              (case (False) of
+                               { _lhsOlamBodyIsFreeOfLam ->
+                               (case (_exprImodDefsRel) of
+                                { _lhsOmodDefsRel ->
+                                (case (_exprInotYetTransformed) of
+                                 { _lhsOnotYetTransformed ->
+                                 (case (_annIundefNmMp `undefmpUnion` _exprIundefNmMp) of
+                                  { _lhsOundefNmMp ->
+                                  (case (_exprIwhatBelow) of
+                                   { _lhsOwhatBelow ->
+                                   ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CExprAnn ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Ty:
+         child ty             : {Ty}
+      alternative Coe:
+         child coe            : {RelevCoe}
+      alternative Debug:
+         child info           : {String}
+-}
+-- cata
+sem_CExprAnn :: CExprAnn ->
+                T_CExprAnn
+sem_CExprAnn (CExprAnn_Ty _ty) =
+    (sem_CExprAnn_Ty _ty)
+sem_CExprAnn (CExprAnn_Coe _coe) =
+    (sem_CExprAnn_Coe _coe)
+sem_CExprAnn (CExprAnn_Debug _info) =
+    (sem_CExprAnn_Debug _info)
+-- semantic domain
+type T_CExprAnn = Int ->
+                  EHCOpts ->
+                  ( ErrSq,Bool,UndefNmMp)
+sem_CExprAnn_Ty :: Ty ->
+                   T_CExprAnn
+sem_CExprAnn_Ty ty_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CExprAnn_Coe :: RelevCoe ->
+                    T_CExprAnn
+sem_CExprAnn_Coe coe_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CExprAnn_Debug :: String ->
+                      T_CExprAnn
+sem_CExprAnn_Debug info_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CImport -----------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         errs                 : ErrSq
+         impModNmL            : [HsName]
+         modImpL              : [ModImp]
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Import:
+         child nm             : {HsName}
+-}
+-- cata
+sem_CImport :: CImport ->
+               T_CImport
+sem_CImport (CImport_Import _nm) =
+    (sem_CImport_Import _nm)
+-- semantic domain
+type T_CImport = ( ErrSq,([HsName]),([ModImp]),UndefNmMp)
+sem_CImport_Import :: HsName ->
+                      T_CImport
+sem_CImport_Import nm_ =
+    (case (Seq.empty) of
+     { _lhsOerrs ->
+     (case ([nm_]) of
+      { _lhsOimpModNmL ->
+      (case ([ModImp True nm_ nm_ False [] emptyRange]) of
+       { _lhsOmodImpL ->
+       (case (Map.empty) of
+        { _lhsOundefNmMp ->
+        ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) })
+-- CImportL ----------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         errs                 : ErrSq
+         impModNmL            : [HsName]
+         modImpL              : [ModImp]
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CImport 
+         child tl             : CImportL 
+      alternative Nil:
+-}
+-- cata
+sem_CImportL :: CImportL ->
+                T_CImportL
+sem_CImportL list =
+    (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
+-- semantic domain
+type T_CImportL = ( ErrSq,([HsName]),([ModImp]),UndefNmMp)
+sem_CImportL_Cons :: T_CImport ->
+                     T_CImportL ->
+                     T_CImportL
+sem_CImportL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIerrs,_tlIimpModNmL,_tlImodImpL,_tlIundefNmMp) ->
+         (case (hd_) of
+          { ( _hdIerrs,_hdIimpModNmL,_hdImodImpL,_hdIundefNmMp) ->
+              (case (_hdIerrs `Seq.union` _tlIerrs) of
+               { _lhsOerrs ->
+               (case (_hdIimpModNmL ++ _tlIimpModNmL) of
+                { _lhsOimpModNmL ->
+                (case (_hdImodImpL ++ _tlImodImpL) of
+                 { _lhsOmodImpL ->
+                 (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                  { _lhsOundefNmMp ->
+                  ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) }) }) })
+sem_CImportL_Nil :: T_CImportL
+sem_CImportL_Nil =
+    (case (Seq.empty) of
+     { _lhsOerrs ->
+     (case ([]) of
+      { _lhsOimpModNmL ->
+      (case ([]) of
+       { _lhsOmodImpL ->
+       (case (Map.empty) of
+        { _lhsOundefNmMp ->
+        ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) })
+-- CMetaBind ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Plain:
+      alternative Function0:
+      alternative Function1:
+      alternative Apply0:
+-}
+-- cata
+sem_CMetaBind :: CMetaBind ->
+                 T_CMetaBind
+sem_CMetaBind (CMetaBind_Plain) =
+    (sem_CMetaBind_Plain)
+sem_CMetaBind (CMetaBind_Function0) =
+    (sem_CMetaBind_Function0)
+sem_CMetaBind (CMetaBind_Function1) =
+    (sem_CMetaBind_Function1)
+sem_CMetaBind (CMetaBind_Apply0) =
+    (sem_CMetaBind_Apply0)
+-- semantic domain
+type T_CMetaBind = Int ->
+                   EHCOpts ->
+                   ( ErrSq,Bool,UndefNmMp)
+sem_CMetaBind_Plain :: T_CMetaBind
+sem_CMetaBind_Plain =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaBind_Function0 :: T_CMetaBind
+sem_CMetaBind_Function0 =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaBind_Function1 :: T_CMetaBind
+sem_CMetaBind_Function1 =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaBind_Apply0 :: T_CMetaBind
+sem_CMetaBind_Apply0 =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CMetaVal ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Val:
+      alternative Dict:
+      alternative DictClass:
+         child tracks         : {[Track]}
+      alternative DictInstance:
+         child tracks         : {[Track]}
+      alternative Track:
+         child track          : {Track}
+-}
+-- cata
+sem_CMetaVal :: CMetaVal ->
+                T_CMetaVal
+sem_CMetaVal (CMetaVal_Val) =
+    (sem_CMetaVal_Val)
+sem_CMetaVal (CMetaVal_Dict) =
+    (sem_CMetaVal_Dict)
+sem_CMetaVal (CMetaVal_DictClass _tracks) =
+    (sem_CMetaVal_DictClass _tracks)
+sem_CMetaVal (CMetaVal_DictInstance _tracks) =
+    (sem_CMetaVal_DictInstance _tracks)
+sem_CMetaVal (CMetaVal_Track _track) =
+    (sem_CMetaVal_Track _track)
+-- semantic domain
+type T_CMetaVal = Int ->
+                  EHCOpts ->
+                  ( ErrSq,Bool,UndefNmMp)
+sem_CMetaVal_Val :: T_CMetaVal
+sem_CMetaVal_Val =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaVal_Dict :: T_CMetaVal
+sem_CMetaVal_Dict =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaVal_DictClass :: ([Track]) ->
+                          T_CMetaVal
+sem_CMetaVal_DictClass tracks_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaVal_DictInstance :: ([Track]) ->
+                             T_CMetaVal
+sem_CMetaVal_DictInstance tracks_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CMetaVal_Track :: Track ->
+                      T_CMetaVal
+sem_CMetaVal_Track track_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CMetas ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Tuple:
+         child x1             : CMetaBind 
+         child x2             : CMetaVal 
+-}
+-- cata
+sem_CMetas :: CMetas ->
+              T_CMetas
+sem_CMetas ( x1,x2) =
+    (sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
+-- semantic domain
+type T_CMetas = Int ->
+                EHCOpts ->
+                ( ErrSq,Bool,UndefNmMp)
+sem_CMetas_Tuple :: T_CMetaBind ->
+                    T_CMetaVal ->
+                    T_CMetas
+sem_CMetas_Tuple x1_ x2_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _x2Oopts ->
+          (case (_lhsIlev) of
+           { _x2Olev ->
+           (case (x2_ _x2Olev _x2Oopts) of
+            { ( _x2Ierrs,_x2IisFreeOfLam,_x2IundefNmMp) ->
+                (case (_lhsIopts) of
+                 { _x1Oopts ->
+                 (case (_lhsIlev) of
+                  { _x1Olev ->
+                  (case (x1_ _x1Olev _x1Oopts) of
+                   { ( _x1Ierrs,_x1IisFreeOfLam,_x1IundefNmMp) ->
+                       (case (_x1Ierrs `Seq.union` _x2Ierrs) of
+                        { _lhsOerrs ->
+                        (case (_x1IisFreeOfLam && _x2IisFreeOfLam) of
+                         { _lhsOisFreeOfLam ->
+                         (case (_x1IundefNmMp `undefmpUnion` _x2IundefNmMp) of
+                          { _lhsOundefNmMp ->
+                          ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }))
+-- CModule -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         moduleNm             : HsName
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         gathDataGam          : DataGam
+         hasMain              : Bool
+         impModNmL            : [HsName]
+         isFreeOfLam          : Bool
+         mod                  : Mod
+         notYetTransformed    : NotYetTransformedS
+         realModuleNm         : HsName
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Mod:
+         child moduleNm       : {HsName}
+         child exports        : CExportL 
+         child imports        : CImportL 
+         child declMetas      : CDeclMetaL 
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local realModuleNm : _
+-}
+-- cata
+sem_CModule :: CModule ->
+               T_CModule
+sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) =
+    (sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
+-- semantic domain
+type T_CModule = Int ->
+                 HsName ->
+                 EHCOpts ->
+                 ( ErrSq,DataGam,Bool,([HsName]),Bool,Mod,NotYetTransformedS,HsName,UndefNmMp)
+sem_CModule_Mod :: HsName ->
+                   T_CExportL ->
+                   T_CImportL ->
+                   T_CDeclMetaL ->
+                   T_CExpr ->
+                   T_CModule
+sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
+    (\ _lhsIlev
+       _lhsImoduleNm
+       _lhsIopts ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIopts) of
+            { _exprOopts ->
+            (case (_lhsIlev) of
+             { _exprOlev ->
+             (case (EvalCtx_Eval) of
+              { _exprOevalCtx ->
+              (case (True) of
+               { _exprOisTopTup ->
+               (case (True) of
+                { _exprOisTopApp ->
+                (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of
+                 { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) ->
+                     (case (declMetas_) of
+                      { ( _declMetasIerrs,_declMetasIgathDataGam,_declMetasImodDefsRel,_declMetasIundefNmMp) ->
+                          (case (imports_) of
+                           { ( _importsIerrs,_importsIimpModNmL,_importsImodImpL,_importsIundefNmMp) ->
+                               (case (exports_) of
+                                { ( _exportsIerrs,_exportsImodExpL,_exportsIundefNmMp) ->
+                                    (case (_exportsIerrs `Seq.union` _importsIerrs `Seq.union` _declMetasIerrs `Seq.union` _exprIerrs) of
+                                     { _lhsOerrs ->
+                                     (case (_declMetasIgathDataGam) of
+                                      { _lhsOgathDataGam ->
+                                      (case (_exprIhasMain) of
+                                       { _lhsOhasMain ->
+                                       (case (_importsIimpModNmL) of
+                                        { _lhsOimpModNmL ->
+                                        (case (_exprIisFreeOfLam) of
+                                         { _lhsOisFreeOfLam ->
+                                         (case (moduleNm_) of
+                                          { _realModuleNm ->
+                                          (case (Mod _realModuleNm (Just _realModuleNm) (Just _exportsImodExpL) _importsImodImpL
+                                                     (_declMetasImodDefsRel `Rel.union` _exprImodDefsRel)
+                                                     Rel.empty []) of
+                                           { _lhsOmod ->
+                                           (case (_exprInotYetTransformed) of
+                                            { _lhsOnotYetTransformed ->
+                                            (case (_realModuleNm) of
+                                             { _lhsOrealModuleNm ->
+                                             (case (_exportsIundefNmMp `undefmpUnion` _importsIundefNmMp `undefmpUnion` _declMetasIundefNmMp `undefmpUnion` _exprIundefNmMp) of
+                                              { _lhsOundefNmMp ->
+                                              ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOisFreeOfLam,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CPat --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         fldNmL               : [HsName]
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Var:
+         child pnm            : {HsName}
+      alternative Con:
+         child tag            : {CTag}
+         child rest           : CPatRest 
+         child binds          : CPatFldL 
+      alternative Int:
+         child int            : {Int}
+      alternative Char:
+         child char           : {Char}
+      alternative BoolExpr:
+         child cexpr          : {CExpr}
+-}
+-- cata
+sem_CPat :: CPat ->
+            T_CPat
+sem_CPat (CPat_Var _pnm) =
+    (sem_CPat_Var _pnm)
+sem_CPat (CPat_Con _tag _rest _binds) =
+    (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
+sem_CPat (CPat_Int _int) =
+    (sem_CPat_Int _int)
+sem_CPat (CPat_Char _char) =
+    (sem_CPat_Char _char)
+sem_CPat (CPat_BoolExpr _cexpr) =
+    (sem_CPat_BoolExpr _cexpr)
+-- semantic domain
+type T_CPat = Int ->
+              EHCOpts ->
+              ( ErrSq,([HsName]),Bool,UndefNmMp)
+sem_CPat_Var :: HsName ->
+                T_CPat
+sem_CPat_Var pnm_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case ([]) of
+           { _lhsOfldNmL ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (Map.empty) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
+sem_CPat_Con :: CTag ->
+                T_CPatRest ->
+                T_CPatFldL ->
+                T_CPat
+sem_CPat_Con tag_ rest_ binds_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _bindsOopts ->
+          (case (_lhsIlev) of
+           { _bindsOlev ->
+           (case (binds_ _bindsOlev _bindsOopts) of
+            { ( _bindsIerrs,_bindsIfldNmL,_bindsIisFreeOfLam,_bindsIundefNmMp) ->
+                (case (_lhsIopts) of
+                 { _restOopts ->
+                 (case (_lhsIlev) of
+                  { _restOlev ->
+                  (case (rest_ _restOlev _restOopts) of
+                   { ( _restIerrs,_restIisFreeOfLam,_restIundefNmMp) ->
+                       (case (_restIerrs `Seq.union` _bindsIerrs) of
+                        { _lhsOerrs ->
+                        (case (_bindsIfldNmL) of
+                         { _lhsOfldNmL ->
+                         (case (_restIisFreeOfLam && _bindsIisFreeOfLam) of
+                          { _lhsOisFreeOfLam ->
+                          (case (_restIundefNmMp `undefmpUnion` _bindsIundefNmMp) of
+                           { _lhsOundefNmMp ->
+                           ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }))
+sem_CPat_Int :: Int ->
+                T_CPat
+sem_CPat_Int int_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case ([]) of
+           { _lhsOfldNmL ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (Map.empty) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
+sem_CPat_Char :: Char ->
+                 T_CPat
+sem_CPat_Char char_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case ([]) of
+           { _lhsOfldNmL ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (Map.empty) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
+sem_CPat_BoolExpr :: CExpr ->
+                     T_CPat
+sem_CPat_BoolExpr cexpr_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case ([]) of
+           { _lhsOfldNmL ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (Map.empty) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
+-- CPatFld -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         fldNmL               : [HsName]
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Fld:
+         child lbl            : {HsName}
+         child offset         : CExpr 
+         child bind           : CBind 
+         child fldAnns        : CBindAnnL 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local fldNm       : _
+-}
+-- cata
+sem_CPatFld :: CPatFld ->
+               T_CPatFld
+sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
+    (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
+-- semantic domain
+type T_CPatFld = Int ->
+                 EHCOpts ->
+                 ( ErrSq,([HsName]),Bool,UndefNmMp)
+sem_CPatFld_Fld :: HsName ->
+                   T_CExpr ->
+                   T_CBind ->
+                   T_CBindAnnL ->
+                   T_CPatFld
+sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _fldAnnsOopts ->
+          (case (_lhsIlev) of
+           { _fldAnnsOlev ->
+           (case (fldAnns_ _fldAnnsOlev _fldAnnsOopts) of
+            { ( _fldAnnsIerrs,_fldAnnsIisFreeOfLam,_fldAnnsIundefNmMp) ->
+                (case (_lhsIopts) of
+                 { _bindOopts ->
+                 (case (_lhsIlev) of
+                  { _bindOlev ->
+                  (case (False) of
+                   { _bindOisGlobal ->
+                   (case (EvalCtx_None) of
+                    { _bindOevalCtx ->
+                    (case (acoreBindcategPlain) of
+                     { _bindOletBindingsCateg ->
+                     (case (bind_ _bindOevalCtx _bindOisGlobal _bindOletBindingsCateg _bindOlev _bindOopts) of
+                      { ( _bindIerrs,_bindIhasMain,_bindIisFreeOfLam,_bindImodDefsRel,_bindInm,_bindInotYetTransformed,_bindIundefNmMp) ->
+                          (case (ExprIsOther) of
+                           { _whatAbove ->
+                           (case (_whatAbove) of
+                            { _offsetOwhatAbove ->
+                            (case (_lhsIopts) of
+                             { _offsetOopts ->
+                             (case (_lhsIlev) of
+                              { _offsetOlev ->
+                              (case (EvalCtx_Eval) of
+                               { _offsetOevalCtx ->
+                               (case (True) of
+                                { _offsetOisTopTup ->
+                                (case (True) of
+                                 { _offsetOisTopApp ->
+                                 (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of
+                                  { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) ->
+                                      (case (_offsetIerrs `Seq.union` _bindIerrs `Seq.union` _fldAnnsIerrs) of
+                                       { _lhsOerrs ->
+                                       (case (_bindInm) of
+                                        { _fldNm ->
+                                        (case ([_fldNm]) of
+                                         { _lhsOfldNmL ->
+                                         (case (_offsetIisFreeOfLam && _bindIisFreeOfLam && _fldAnnsIisFreeOfLam) of
+                                          { _lhsOisFreeOfLam ->
+                                          (case (_offsetIundefNmMp `undefmpUnion` _bindIundefNmMp `undefmpUnion` _fldAnnsIundefNmMp) of
+                                           { _lhsOundefNmMp ->
+                                           ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CPatFldL ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         fldNmL               : [HsName]
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Cons:
+         child hd             : CPatFld 
+         child tl             : CPatFldL 
+      alternative Nil:
+-}
+-- cata
+sem_CPatFldL :: CPatFldL ->
+                T_CPatFldL
+sem_CPatFldL list =
+    (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
+-- semantic domain
+type T_CPatFldL = Int ->
+                  EHCOpts ->
+                  ( ErrSq,([HsName]),Bool,UndefNmMp)
+sem_CPatFldL_Cons :: T_CPatFld ->
+                     T_CPatFldL ->
+                     T_CPatFldL
+sem_CPatFldL_Cons hd_ tl_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _tlOopts ->
+          (case (_lhsIlev) of
+           { _tlOlev ->
+           (case (tl_ _tlOlev _tlOopts) of
+            { ( _tlIerrs,_tlIfldNmL,_tlIisFreeOfLam,_tlIundefNmMp) ->
+                (case (_lhsIopts) of
+                 { _hdOopts ->
+                 (case (_lhsIlev) of
+                  { _hdOlev ->
+                  (case (hd_ _hdOlev _hdOopts) of
+                   { ( _hdIerrs,_hdIfldNmL,_hdIisFreeOfLam,_hdIundefNmMp) ->
+                       (case (_hdIerrs `Seq.union` _tlIerrs) of
+                        { _lhsOerrs ->
+                        (case (_hdIfldNmL ++ _tlIfldNmL) of
+                         { _lhsOfldNmL ->
+                         (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of
+                          { _lhsOisFreeOfLam ->
+                          (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of
+                           { _lhsOundefNmMp ->
+                           ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }))
+sem_CPatFldL_Nil :: T_CPatFldL
+sem_CPatFldL_Nil =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case ([]) of
+           { _lhsOfldNmL ->
+           (case (True) of
+            { _lhsOisFreeOfLam ->
+            (case (Map.empty) of
+             { _lhsOundefNmMp ->
+             ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }))
+-- CPatRest ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         isFreeOfLam          : Bool
+         undefNmMp            : UndefNmMp
+   alternatives:
+      alternative Var:
+         child nm             : {HsName}
+      alternative Empty:
+-}
+-- cata
+sem_CPatRest :: CPatRest ->
+                T_CPatRest
+sem_CPatRest (CPatRest_Var _nm) =
+    (sem_CPatRest_Var _nm)
+sem_CPatRest (CPatRest_Empty) =
+    (sem_CPatRest_Empty)
+-- semantic domain
+type T_CPatRest = Int ->
+                  EHCOpts ->
+                  ( ErrSq,Bool,UndefNmMp)
+sem_CPatRest_Var :: HsName ->
+                    T_CPatRest
+sem_CPatRest_Var nm_ =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+sem_CPatRest_Empty :: T_CPatRest
+sem_CPatRest_Empty =
+    (\ _lhsIlev
+       _lhsIopts ->
+         (case (Seq.empty) of
+          { _lhsOerrs ->
+          (case (True) of
+           { _lhsOisFreeOfLam ->
+           (case (Map.empty) of
+            { _lhsOundefNmMp ->
+            ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }))
+-- CodeAGItf ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         moduleNm             : HsName
+         opts                 : EHCOpts
+      synthesized attributes:
+         errs                 : ErrSq
+         gathDataGam          : DataGam
+         hasMain              : Bool
+         impModNmL            : [HsName]
+         mod                  : Mod
+         notYetTransformed    : NotYetTransformedS
+         realModuleNm         : HsName
+   alternatives:
+      alternative AGItf:
+         child module         : CModule 
+-}
+-- cata
+sem_CodeAGItf :: CodeAGItf ->
+                 T_CodeAGItf
+sem_CodeAGItf (CodeAGItf_AGItf _module) =
+    (sem_CodeAGItf_AGItf (sem_CModule _module))
+-- semantic domain
+type T_CodeAGItf = HsName ->
+                   EHCOpts ->
+                   ( ErrSq,DataGam,Bool,([HsName]),Mod,NotYetTransformedS,HsName)
+data Inh_CodeAGItf = Inh_CodeAGItf {moduleNm_Inh_CodeAGItf :: HsName,opts_Inh_CodeAGItf :: EHCOpts}
+data Syn_CodeAGItf = Syn_CodeAGItf {errs_Syn_CodeAGItf :: ErrSq,gathDataGam_Syn_CodeAGItf :: DataGam,hasMain_Syn_CodeAGItf :: Bool,impModNmL_Syn_CodeAGItf :: ([HsName]),mod_Syn_CodeAGItf :: Mod,notYetTransformed_Syn_CodeAGItf :: NotYetTransformedS,realModuleNm_Syn_CodeAGItf :: HsName}
+wrap_CodeAGItf :: T_CodeAGItf ->
+                  Inh_CodeAGItf ->
+                  Syn_CodeAGItf
+wrap_CodeAGItf sem (Inh_CodeAGItf _lhsImoduleNm _lhsIopts) =
+    (let ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm) = sem _lhsImoduleNm _lhsIopts
+     in  (Syn_CodeAGItf _lhsOerrs _lhsOgathDataGam _lhsOhasMain _lhsOimpModNmL _lhsOmod _lhsOnotYetTransformed _lhsOrealModuleNm))
+sem_CodeAGItf_AGItf :: T_CModule ->
+                       T_CodeAGItf
+sem_CodeAGItf_AGItf module_ =
+    (\ _lhsImoduleNm
+       _lhsIopts ->
+         (case (_lhsIopts) of
+          { _moduleOopts ->
+          (case (_lhsImoduleNm) of
+           { _moduleOmoduleNm ->
+           (case (cLevModule) of
+            { _moduleOlev ->
+            (case (module_ _moduleOlev _moduleOmoduleNm _moduleOopts) of
+             { ( _moduleIerrs,_moduleIgathDataGam,_moduleIhasMain,_moduleIimpModNmL,_moduleIisFreeOfLam,_moduleImod,_moduleInotYetTransformed,_moduleIrealModuleNm,_moduleIundefNmMp) ->
+                 (case (_moduleIerrs) of
+                  { _lhsOerrs ->
+                  (case (_moduleIgathDataGam) of
+                   { _lhsOgathDataGam ->
+                   (case (_moduleIhasMain) of
+                    { _lhsOhasMain ->
+                    (case (_moduleIimpModNmL) of
+                     { _lhsOimpModNmL ->
+                     (case (_moduleImod) of
+                      { _lhsOmod ->
+                      (case (_moduleInotYetTransformed) of
+                       { _lhsOnotYetTransformed ->
+                       (case (_moduleIrealModuleNm) of
+                        { _lhsOrealModuleNm ->
+                        ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm) }) }) }) }) }) }) }) }) }) }) }))
diff --git a/src/UHC/Light/Compiler/Core/ExtractFFE.hs b/src/UHC/Light/Compiler/Core/ExtractFFE.hs
--- a/src/UHC/Light/Compiler/Core/ExtractFFE.hs
+++ b/src/UHC/Light/Compiler/Core/ExtractFFE.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/ExtractFF)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/ExtractFF)
 module UHC.Light.Compiler.Core.ExtractFFE(cmodExtractFFE
 , ExtractFFE (..)) where
 
diff --git a/src/UHC/Light/Compiler/Core/FvS.hs b/src/UHC/Light/Compiler/Core/FvS.hs
--- a/src/UHC/Light/Compiler/Core/FvS.hs
+++ b/src/UHC/Light/Compiler/Core/FvS.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/FvS.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/FvS.ag)
 module UHC.Light.Compiler.Core.FvS(cexprFvS) where
 
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/Core/ModAsMap.hs b/src/UHC/Light/Compiler/Core/ModAsMap.hs
--- a/src/UHC/Light/Compiler/Core/ModAsMap.hs
+++ b/src/UHC/Light/Compiler/Core/ModAsMap.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/ModAsMap.)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/ModAsMap.)
 module UHC.Light.Compiler.Core.ModAsMap(cexprModAsDatabase) where
 
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/Core/Pretty.hs b/src/UHC/Light/Compiler/Core/Pretty.hs
--- a/src/UHC/Light/Compiler/Core/Pretty.hs
+++ b/src/UHC/Light/Compiler/Core/Pretty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Pretty.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Pretty.ag)
 module UHC.Light.Compiler.Core.Pretty(ppCModule
 , ppCBindL) where
 
@@ -72,8 +72,13 @@
 
 
 
+ppCNm' :: EHCOpts -> HsName -> PP_Doc
+ppCNm' opts
+  | CoreOpt_Readable `elem` ehcOptCoreOpts opts = pp
+  | otherwise                                   = ppCoreNm
+
 ppCNm :: HsName -> PP_Doc
-ppCNm = ppCoreNm
+ppCNm = ppCNm' emptyEHCOpts
 
 
 
@@ -392,7 +397,7 @@
                                                                | otherwise                                      = id
                                                            isSingleNoNm = hsnIsWild nm_ && length _bindAspectsIppBindInfoL == 1
                                                            def | isSingleNoNm = par                                           val
-                                                               | otherwise    = par $ howDef _lhsIppHow (ppCNm nm_) val
+                                                               | otherwise    = par $ howDef _lhsIppHow (ppCNm' _lhsIopts nm_) val
                                                                where val = p $ [ ppBound _lhsIopts isSingleNoNm Nothing s pv | (s,_,pv) <- _bindAspectsIppBindInfoL ]
                                                        in  def) of
                                                  { _lhsOpp ->
@@ -1127,7 +1132,7 @@
 sem_CDataCon_Con conNm_ tagNr_ arity_ =
     (\ _lhsIopts
        _lhsIppHow ->
-         (case (ppCNm conNm_ >#< "=" >#< ppCurlysCommas [pp tagNr_, pp arity_]) of
+         (case (ppCNm' _lhsIopts conNm_ >#< "=" >#< ppCurlysCommas [pp tagNr_, pp arity_]) of
           { _lhsOpp ->
           ( _lhsOpp) }))
 -- CDataConL ---------------------------------------------------
@@ -1160,16 +1165,16 @@
 sem_CDataConL_Cons hd_ tl_ =
     (\ _lhsIopts
        _lhsIppHow ->
-         (case (_lhsIppHow) of
-          { _tlOppHow ->
+         (case (_lhsIopts) of
+          { _tlOopts ->
           (case (_lhsIopts) of
-           { _tlOopts ->
-           (case (tl_ _tlOopts _tlOppHow) of
-            { ( _tlIpp,_tlIppL) ->
-                (case (_lhsIppHow) of
-                 { _hdOppHow ->
-                 (case (_lhsIopts) of
-                  { _hdOopts ->
+           { _hdOopts ->
+           (case (_lhsIppHow) of
+            { _tlOppHow ->
+            (case (tl_ _tlOopts _tlOppHow) of
+             { ( _tlIpp,_tlIppL) ->
+                 (case (_lhsIppHow) of
+                  { _hdOppHow ->
                   (case (hd_ _hdOopts _hdOppHow) of
                    { ( _hdIpp) ->
                        (case (_hdIpp >-< _tlIpp) of
@@ -1214,13 +1219,13 @@
 sem_CDeclMeta_Data tyNm_ dataCons_ =
     (\ _lhsIopts
        _lhsIppHow ->
-         (case (_lhsIppHow) of
-          { _dataConsOppHow ->
-          (case (_lhsIopts) of
-           { _dataConsOopts ->
+         (case (_lhsIopts) of
+          { _dataConsOopts ->
+          (case (_lhsIppHow) of
+           { _dataConsOppHow ->
            (case (dataCons_ _dataConsOopts _dataConsOppHow) of
             { ( _dataConsIpp,_dataConsIppL) ->
-                (case (howDef _lhsIppHow ("data" >#< ppCNm tyNm_) ("=" >#< ppBlockWithStrings      "" "" ", " _dataConsIppL)) of
+                (case (howDef _lhsIppHow ("data" >#< ppCNm' _lhsIopts tyNm_) ("=" >#< ppBlockWithStrings      "" "" ", " _dataConsIppL)) of
                  { _lhsOpp ->
                  ( _lhsOpp) }) }) }) }))
 -- CDeclMetaL --------------------------------------------------
@@ -1255,14 +1260,14 @@
        _lhsIppHow ->
          (case (_lhsIppHow) of
           { _tlOppHow ->
-          (case (_lhsIppHow) of
-           { _hdOppHow ->
-           (case (_lhsIopts) of
-            { _tlOopts ->
-            (case (tl_ _tlOopts _tlOppHow) of
-             { ( _tlIpp,_tlIppL) ->
-                 (case (_lhsIopts) of
-                  { _hdOopts ->
+          (case (_lhsIopts) of
+           { _tlOopts ->
+           (case (_lhsIppHow) of
+            { _hdOppHow ->
+            (case (_lhsIopts) of
+             { _hdOopts ->
+             (case (tl_ _tlOopts _tlOppHow) of
+              { ( _tlIpp,_tlIppL) ->
                   (case (hd_ _hdOopts _hdOppHow) of
                    { ( _hdIpp) ->
                        (case (_hdIpp >-< _tlIpp) of
@@ -1307,7 +1312,7 @@
                       T_CExport
 sem_CExport_Export nm_ =
     (\ _lhsIopts ->
-         (case ("export" >#< ppCNm nm_) of
+         (case ("export" >#< ppCNm' _lhsIopts nm_) of
           { _lhsOpp ->
           ( _lhsOpp) }))
 sem_CExport_ExportData :: HsName ->
@@ -1315,7 +1320,7 @@
                           T_CExport
 sem_CExport_ExportData nm_ mbConNmL_ =
     (\ _lhsIopts ->
-         (case ("export data" >#< ppMbPost ppParensCommas mbConNmL_ (ppCNm nm_)) of
+         (case ("export data" >#< ppMbPost ppParensCommas mbConNmL_ (ppCNm' _lhsIopts nm_)) of
           { _lhsOpp ->
           ( _lhsOpp) }))
 -- CExportL ----------------------------------------------------
@@ -1347,10 +1352,10 @@
     (\ _lhsIopts ->
          (case (_lhsIopts) of
           { _tlOopts ->
-          (case (tl_ _tlOopts) of
-           { ( _tlIpp,_tlIppL) ->
-               (case (_lhsIopts) of
-                { _hdOopts ->
+          (case (_lhsIopts) of
+           { _hdOopts ->
+           (case (tl_ _tlOopts) of
+            { ( _tlIpp,_tlIppL) ->
                 (case (hd_ _hdOopts) of
                  { ( _hdIpp) ->
                      (case (_hdIpp >-< _tlIpp) of
@@ -1572,7 +1577,7 @@
        _lhsIvarPPMp ->
          (case ([]) of
           { _lhsOappArgPPL ->
-          (case (ppACoreBindRef ppCNm ref_) of
+          (case (ppACoreBindRef (ppCNm' _lhsIopts) ref_) of
            { _pp ->
            (case (_pp) of
             { _lhsOappFunPP ->
@@ -1954,7 +1959,7 @@
                    { ( _offsetIappArgPPL,_offsetIappFunPP,_offsetIlamArgPPL,_offsetIlamBodyPP,_offsetIpp) ->
                        (case (expr_ _exprOmlev _exprOopts _exprOppHow _exprOvarPPMp) of
                         { ( _exprIappArgPPL,_exprIappFunPP,_exprIlamArgPPL,_exprIlamBodyPP,_exprIpp) ->
-                            (case (howDef _lhsIppHow (ppParens _exprIpp) ("-=" >|< ppCurlysCommas' [ppTag tag_,_offsetIpp,ppCNm nm_])) of
+                            (case (howDef _lhsIppHow (ppParens _exprIpp) ("-=" >|< ppCurlysCommas' [ppTag tag_,_offsetIpp,ppCNm' _lhsIopts nm_])) of
                              { _pp ->
                              (case (_pp) of
                               { _lhsOappFunPP ->
@@ -2008,7 +2013,7 @@
                             { ( _offsetIappArgPPL,_offsetIappFunPP,_offsetIlamArgPPL,_offsetIlamBodyPP,_offsetIpp) ->
                                 (case (expr_ _exprOmlev _exprOopts _exprOppHow _exprOvarPPMp) of
                                  { ( _exprIappArgPPL,_exprIappFunPP,_exprIlamArgPPL,_exprIlamBodyPP,_exprIpp) ->
-                                     (case (howDef _lhsIppHow (ppParens _exprIpp) (howDef _lhsIppHow ("+=" >|< ppCurlysCommas' [ppTag tag_,_offsetIpp,ppCNm nm_]) (ppParens _fldExprIpp))) of
+                                     (case (howDef _lhsIppHow (ppParens _exprIpp) (howDef _lhsIppHow ("+=" >|< ppCurlysCommas' [ppTag tag_,_offsetIpp,ppCNm' _lhsIopts nm_]) (ppParens _fldExprIpp))) of
                                       { _pp ->
                                       (case (_pp) of
                                        { _lhsOappFunPP ->
@@ -2062,7 +2067,7 @@
                             { ( _offsetIappArgPPL,_offsetIappFunPP,_offsetIlamArgPPL,_offsetIlamBodyPP,_offsetIpp) ->
                                 (case (expr_ _exprOmlev _exprOopts _exprOppHow _exprOvarPPMp) of
                                  { ( _exprIappArgPPL,_exprIappFunPP,_exprIlamArgPPL,_exprIlamBodyPP,_exprIpp) ->
-                                     (case (howDef _lhsIppHow (ppParens _exprIpp) (howDef _lhsIppHow (":=" >|< ppCurlysCommas' [ppTag tag_,_offsetIpp,ppCNm nm_]) (ppParens _fldExprIpp))) of
+                                     (case (howDef _lhsIppHow (ppParens _exprIpp) (howDef _lhsIppHow (":=" >|< ppCurlysCommas' [ppTag tag_,_offsetIpp,ppCNm' _lhsIopts nm_]) (ppParens _fldExprIpp))) of
                                       { _pp ->
                                       (case (_pp) of
                                        { _lhsOappFunPP ->
@@ -2389,7 +2394,7 @@
                       T_CImport
 sem_CImport_Import nm_ =
     (\ _lhsIopts ->
-         (case ("import" >#< ppCNm nm_) of
+         (case ("import" >#< ppCNm' _lhsIopts nm_) of
           { _lhsOpp ->
           ( _lhsOpp) }))
 -- CImportL ----------------------------------------------------
@@ -2421,10 +2426,10 @@
     (\ _lhsIopts ->
          (case (_lhsIopts) of
           { _tlOopts ->
-          (case (tl_ _tlOopts) of
-           { ( _tlIpp,_tlIppL) ->
-               (case (_lhsIopts) of
-                { _hdOopts ->
+          (case (_lhsIopts) of
+           { _hdOopts ->
+           (case (tl_ _tlOopts) of
+            { ( _tlIpp,_tlIppL) ->
                 (case (hd_ _hdOopts) of
                  { ( _hdIpp) ->
                      (case (_hdIpp >-< _tlIpp) of
@@ -2732,23 +2737,23 @@
             { _exprOmlev ->
             (case (_lhsIppHow) of
              { _declMetasOppHow ->
-             (case (Map.empty) of
-              { _exprOvarPPMp ->
-              (case (expr_ _exprOmlev _exprOopts _exprOppHow _exprOvarPPMp) of
-               { ( _exprIappArgPPL,_exprIappFunPP,_exprIlamArgPPL,_exprIlamBodyPP,_exprIpp) ->
-                   (case (_lhsIopts) of
-                    { _declMetasOopts ->
-                    (case (declMetas_ _declMetasOopts _declMetasOppHow) of
-                     { ( _declMetasIpp,_declMetasIppL) ->
-                         (case (_lhsIopts) of
-                          { _importsOopts ->
-                          (case (imports_ _importsOopts) of
-                           { ( _importsIpp,_importsIppL) ->
-                               (case (_lhsIopts) of
-                                { _exportsOopts ->
+             (case (_lhsIopts) of
+              { _declMetasOopts ->
+              (case (_lhsIopts) of
+               { _importsOopts ->
+               (case (_lhsIopts) of
+                { _exportsOopts ->
+                (case (Map.empty) of
+                 { _exprOvarPPMp ->
+                 (case (expr_ _exprOmlev _exprOopts _exprOppHow _exprOvarPPMp) of
+                  { ( _exprIappArgPPL,_exprIappFunPP,_exprIlamArgPPL,_exprIlamBodyPP,_exprIpp) ->
+                      (case (declMetas_ _declMetasOopts _declMetasOppHow) of
+                       { ( _declMetasIpp,_declMetasIppL) ->
+                           (case (imports_ _importsOopts) of
+                            { ( _importsIpp,_importsIppL) ->
                                 (case (exports_ _exportsOopts) of
                                  { ( _exportsIpp,_exportsIppL) ->
-                                     (case (ppSemi ("module" >#< ppCNm moduleNm_)
+                                     (case (ppSemi ("module" >#< ppCNm' _lhsIopts moduleNm_)
                                             >-< (ppSemiTerminated _exportsIppL)
                                             >-< (ppSemiTerminated _importsIppL)
                                             >-< (ppSemiTerminated _declMetasIppL)
@@ -2808,7 +2813,7 @@
        _lhsIvarPPMp ->
          (case ([]) of
           { _lhsOfldNmL ->
-          (case (ppCNm pnm_) of
+          (case (ppCNm' _lhsIopts pnm_) of
            { _lhsOpp ->
            ( _lhsOfldNmL,_lhsOpp) }) }))
 sem_CPat_Con :: CTag ->
@@ -2832,12 +2837,12 @@
               { ( _bindsIfldNmL,_bindsIpp,_bindsIppL) ->
                   (case (_bindsIfldNmL) of
                    { _lhsOfldNmL ->
-                   (case (_lhsIvarPPMp) of
-                    { _restOvarPPMp ->
-                    (case (_lhsIppHow) of
-                     { _restOppHow ->
-                     (case (_lhsIopts) of
-                      { _restOopts ->
+                   (case (_lhsIopts) of
+                    { _restOopts ->
+                    (case (_lhsIvarPPMp) of
+                     { _restOvarPPMp ->
+                     (case (_lhsIppHow) of
+                      { _restOppHow ->
                       (case (_lhsImlev) of
                        { _restOmlev ->
                        (case (rest_ _restOmlev _restOopts _restOppHow _restOvarPPMp) of
@@ -2964,7 +2969,7 @@
                                     { ( _fldAnnsIpp,_fldAnnsIppL) ->
                                         (case (offset_ _offsetOmlev _offsetOopts _offsetOppHow _offsetOvarPPMp) of
                                          { ( _offsetIappArgPPL,_offsetIappFunPP,_offsetIlamArgPPL,_offsetIlamBodyPP,_offsetIpp) ->
-                                             (case (whenMore _lhsIopts (ppCurlysCommas' [ppCNm lbl_,_offsetIpp                 ] >|< "=") >|< _bindIpp
+                                             (case (whenMore _lhsIopts (ppCurlysCommas' [ppCNm' _lhsIopts lbl_,_offsetIpp                 ] >|< "=") >|< _bindIpp
                                                     >|< (if null _fldAnnsIppL then empty else ppParensCommas' _fldAnnsIppL)) of
                                               { _lhsOpp ->
                                               ( _lhsOfldNmL,_lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
@@ -3083,7 +3088,7 @@
        _lhsIopts
        _lhsIppHow
        _lhsIvarPPMp ->
-         (case (ppCNm nm_) of
+         (case (ppCNm' _lhsIopts nm_) of
           { _pp ->
           (case (_pp) of
            { _lhsOpp ->
diff --git a/src/UHC/Light/Compiler/Core/Subst.hs b/src/UHC/Light/Compiler/Core/Subst.hs
--- a/src/UHC/Light/Compiler/Core/Subst.hs
+++ b/src/UHC/Light/Compiler/Core/Subst.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Subst.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Subst.ag)
 module UHC.Light.Compiler.Core.Subst(CSubst
 , cSubstAppExpr, cSubstAppBind, cSubstAppBound
 , cSubstAppExprAndBinds
diff --git a/src/UHC/Light/Compiler/Core/ToCoreRun.hs b/src/UHC/Light/Compiler/Core/ToCoreRun.hs
--- a/src/UHC/Light/Compiler/Core/ToCoreRun.hs
+++ b/src/UHC/Light/Compiler/Core/ToCoreRun.hs
@@ -1,5934 +1,6147 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/ToCoreRun)
-module UHC.Light.Compiler.Core.ToCoreRun(Inh_CodeAGItf (..), Syn_CodeAGItf (..), wrap_CodeAGItf, sem_CodeAGItf
-, cmod2CoreRun', cmod2CoreRunWithModNr, cmod2CoreRun) where
-
-import UHC.Light.Compiler.Base.Common
-import UHC.Light.Compiler.Base.TermLike
-import UHC.Light.Compiler.Opts
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Core
-import Data.Maybe
-import qualified Data.Map as Map
-import Data.Char
-import Data.List
-import UHC.Util.Utils
-import qualified UHC.Util.RelMap as Rel
-import qualified UHC.Util.FastSeq as Seq
-import UHC.Light.Compiler.Base.HsName.Builtin
-import UHC.Light.Compiler.CodeGen.BuiltinSizeInfo
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.CodeGen.BasicAnnot
-import qualified UHC.Light.Compiler.CoreRun as CR
-import qualified UHC.Light.Compiler.CoreRun.API as CR
-import qualified UHC.Light.Compiler.CoreRun.Prim as CR
-import UHC.Light.Compiler.Foreign.Extract
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- | Translate to CoreRun
-cmod2CoreRun'
-  :: EHCOpts
-     -> Bool			-- ^ has main?
-     -> Int             -- ^ sequence nr of module (offset), used to create global per module references
-     -> CR.Nm2RefMp     -- ^ outer bindings
-     -> CModule
-     -> ( CR.Mod        -- generated CoreRun
-        , CR.Nm2RefMp   -- name to ref mapping of toplevel bindings
-        , Syn_CodeAGItf -- the 2 above, for now duplicate
-        )
-cmod2CoreRun' opts hasMain modNr nm2ref cmod
-  =  ( crm_Syn_CodeAGItf t
-     , nm2refGath_Syn_CodeAGItf t
-     , t
-     )
-  where t = wrap_CodeAGItf (sem_CodeAGItf (CodeAGItf_AGItf cmod))
-              (Inh_CodeAGItf
-                 { modNr_Inh_CodeAGItf = modNr
-                 , opts_Inh_CodeAGItf = opts
-                 , hasMain_Inh_CodeAGItf = hasMain
-                 , nm2ref_Inh_CodeAGItf = nm2ref
-                 })
-
-cmod2CoreRunWithModNr :: Int -> CModule -> CR.Mod
-cmod2CoreRunWithModNr nr m = m'
-  where (m',_,_) = cmod2CoreRun' defaultEHCOpts True nr CR.emptyNm2RefMp m
-
-cmod2CoreRun :: CModule -> CR.Mod
-cmod2CoreRun = cmod2CoreRunWithModNr 0
-
-
-
--- | What to do with binding in terms of thunking/forcing?
-data ToBe
-  = ToBe_Thunked
-  | ToBe_Forced
-  | ToBe_LeftAsIs
-  deriving Eq
-
-
-
--- | Tail context
-data TailCtx
-  = TailCtx_Plain
-  | TailCtx_TailCall
-  | TailCtx_CaseAlt
-
-tailCtxIsTailRec :: TailCtx -> Bool
-tailCtxIsTailRec TailCtx_TailCall = True
-tailCtxIsTailRec _                = False
-
--- | Wrap according to tail context
-cseCtxWrap :: TailCtx -> CR.Exp -> CR.Exp
-cseCtxWrap TailCtx_TailCall = CR.mkTail
-cseCtxWrap _                = id
-
-
-
--- | Construct application
-mkApp :: CR.Exp -> CR.CRArray CR.SExp -> CR.Exp
-mkApp f as = CR.mkApp' (CR.mkEval f) as
-
-
-
--- | Wrap context saving if not at tail recursive position
-tailrec :: TailCtx -> CR.Exp -> CR.Exp
-tailrec tailCtx = if tailCtxIsTailRec tailCtx then id else id -- CR.Exp_Ret -- id
-
--- | Wrap forcing if at tail recursive position
-taileval :: TailCtx -> CR.Exp -> CR.Exp
-taileval tailCtx = if tailCtxIsTailRec tailCtx then CR.mkEval else id
-
--- CAlt --------------------------------------------------------
-{-
-   visit 0:
-      chained attribute:
-         refOffset            : Int
-   visit 1:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-         scrutRef             : CR.RRef
-         tailCtx              : TailCtx
-      chained attribute:
-         stackDepth           : Int
-      synthesized attributes:
-         cra                  : [CR.Alt]
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-   alternatives:
-      alternative Alt:
-         child pat            : CPat 
-         child expr           : CExpr 
-         visit 1:
-            local whatAbove   : {WhatExpr}
-            local nm2refNew   : _
--}
--- cata
-sem_CAlt :: CAlt ->
-            T_CAlt
-sem_CAlt (CAlt_Alt _pat _expr) =
-    (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
--- semantic domain
-type T_CAlt = Int ->
-              ( Int,T_CAlt_1)
-type T_CAlt_1 = EvalCtx ->
-                (HsName -> Maybe Int) ->
-                Int ->
-                Int ->
-                (CR.Nm2RefMp) ->
-                EHCOpts ->
-                (CR.RRef) ->
-                Int ->
-                TailCtx ->
-                ( ([CR.Alt]),Int,Int,Int)
-sem_CAlt_Alt :: T_CPat ->
-                T_CExpr ->
-                T_CAlt
-sem_CAlt_Alt pat_ expr_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CAlt_Alt_1 :: T_CAlt_1
-                      sem_CAlt_Alt_1 =
-                          (\ _lhsIevalCtx
-                             _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIscrutRef
-                             _lhsIstackDepth
-                             _lhsItailCtx ->
-                               (case (ExprIsOther) of
-                                { _whatAbove ->
-                                (case (_whatAbove) of
-                                 { _exprOwhatAbove ->
-                                 (case (_lhsItailCtx) of
-                                  { _exprOtailCtx ->
-                                  (case (_lhsIlev) of
-                                   { _exprOlev ->
-                                   (case (_lhsIimpNmLkup) of
-                                    { _exprOimpNmLkup ->
-                                    (case (_lhsIstackDepth) of
-                                     { _patOstackDepth ->
-                                     (case (_lhsIrefOffset) of
-                                      { _patOrefOffset ->
-                                      (case (_lhsIopts) of
-                                       { _patOopts ->
-                                       (case (_lhsInm2ref) of
-                                        { _patOnm2ref ->
-                                        (case (_lhsImodNr) of
-                                         { _patOmodNr ->
-                                         (case (_lhsIlev) of
-                                          { _patOlev ->
-                                          (case (_lhsIimpNmLkup) of
-                                           { _patOimpNmLkup ->
-                                           (case (pat_ _patOimpNmLkup _patOlev _patOmodNr _patOnm2ref _patOopts _patOrefOffset _patOstackDepth) of
-                                            { ( _patIcrp,_patIfldNmL,_patIrefOffset,_patIstackDepth) ->
-                                                (case (Rel.fromList [ (n, CR.RRef_Fld _lhsIscrutRef i) | (n,i) <- zip _patIfldNmL [0..] ]) of
-                                                 { _nm2refNew ->
-                                                 (case (_nm2refNew `CR.nm2refUnion` _lhsInm2ref) of
-                                                  { _exprOnm2ref ->
-                                                  (case (_lhsIstackDepth) of
-                                                   { _exprOstackDepth ->
-                                                   (case (_lhsIrefOffset) of
-                                                    { _exprOrefOffset ->
-                                                    (case (expr_) of
-                                                     { ( _exprIwhatBelow,expr_1) ->
-                                                         (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                                                          { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                                              (case (_lhsIopts) of
-                                                               { _exprOopts ->
-                                                               (case (_lhsImodNr) of
-                                                                { _exprOmodNr ->
-                                                                (case (_lhsIevalCtx) of
-                                                                 { _exprOevalCtx ->
-                                                                 (case (True) of
-                                                                  { _exprOisTopTup ->
-                                                                  (case (True) of
-                                                                   { _exprOisTopApp ->
-                                                                   (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                                    { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                        (case ([CR.Alt_Alt (CR.nm2RefMpInverse _nm2refNew)                _exprIcre]) of
-                                                                         { _lhsOcra ->
-                                                                         (case (max _exprIrefOffset _exprIrefOffsetMax) of
-                                                                          { _lhsOrefOffsetMax ->
-                                                                          (case (_lhsIstackDepth) of
-                                                                           { _lhsOstackDepth ->
-                                                                           (case (max _exprIstackDepth _exprIstackDepthMax) of
-                                                                            { _lhsOstackDepthMax ->
-                                                                            ( _lhsOcra,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                  in  sem_CAlt_Alt_1)) of
-           { ( sem_CAlt_1) ->
-           ( _lhsOrefOffset,sem_CAlt_1) }) }))
--- CAltL -------------------------------------------------------
-{-
-   visit 0:
-      chained attribute:
-         refOffset            : Int
-   visit 1:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-         scrutRef             : CR.RRef
-         tailCtx              : TailCtx
-      chained attribute:
-         stackDepth           : Int
-      synthesized attributes:
-         cra                  : [CR.Alt]
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-   alternatives:
-      alternative Cons:
-         child hd             : CAlt 
-         child tl             : CAltL 
-      alternative Nil:
--}
--- cata
-sem_CAltL :: CAltL ->
-             T_CAltL
-sem_CAltL list =
-    (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
--- semantic domain
-type T_CAltL = Int ->
-               ( Int,T_CAltL_1)
-type T_CAltL_1 = EvalCtx ->
-                 (HsName -> Maybe Int) ->
-                 Int ->
-                 Int ->
-                 (CR.Nm2RefMp) ->
-                 EHCOpts ->
-                 (CR.RRef) ->
-                 Int ->
-                 TailCtx ->
-                 ( ([CR.Alt]),Int,Int,Int)
-sem_CAltL_Cons :: T_CAlt ->
-                  T_CAltL ->
-                  T_CAltL
-sem_CAltL_Cons hd_ tl_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _hdOrefOffset ->
-          (case (hd_ _hdOrefOffset) of
-           { ( _hdIrefOffset,hd_1) ->
-               (case (_hdIrefOffset) of
-                { _tlOrefOffset ->
-                (case (tl_ _tlOrefOffset) of
-                 { ( _tlIrefOffset,tl_1) ->
-                     (case (_tlIrefOffset) of
-                      { _lhsOrefOffset ->
-                      (case ((let sem_CAltL_Cons_1 :: T_CAltL_1
-                                  sem_CAltL_Cons_1 =
-                                      (\ _lhsIevalCtx
-                                         _lhsIimpNmLkup
-                                         _lhsIlev
-                                         _lhsImodNr
-                                         _lhsInm2ref
-                                         _lhsIopts
-                                         _lhsIscrutRef
-                                         _lhsIstackDepth
-                                         _lhsItailCtx ->
-                                           (case (_lhsItailCtx) of
-                                            { _tlOtailCtx ->
-                                            (case (_lhsIstackDepth) of
-                                             { _hdOstackDepth ->
-                                             (case (_lhsItailCtx) of
-                                              { _hdOtailCtx ->
-                                              (case (_lhsIscrutRef) of
-                                               { _hdOscrutRef ->
-                                               (case (_lhsIopts) of
-                                                { _hdOopts ->
-                                                (case (_lhsInm2ref) of
-                                                 { _hdOnm2ref ->
-                                                 (case (_lhsImodNr) of
-                                                  { _hdOmodNr ->
-                                                  (case (_lhsIlev) of
-                                                   { _hdOlev ->
-                                                   (case (_lhsIimpNmLkup) of
-                                                    { _hdOimpNmLkup ->
-                                                    (case (_lhsIevalCtx) of
-                                                     { _hdOevalCtx ->
-                                                     (case (hd_1 _hdOevalCtx _hdOimpNmLkup _hdOlev _hdOmodNr _hdOnm2ref _hdOopts _hdOscrutRef _hdOstackDepth _hdOtailCtx) of
-                                                      { ( _hdIcra,_hdIrefOffsetMax,_hdIstackDepth,_hdIstackDepthMax) ->
-                                                          (case (_hdIstackDepth) of
-                                                           { _tlOstackDepth ->
-                                                           (case (_lhsIscrutRef) of
-                                                            { _tlOscrutRef ->
-                                                            (case (_lhsInm2ref) of
-                                                             { _tlOnm2ref ->
-                                                             (case (_lhsIlev) of
-                                                              { _tlOlev ->
-                                                              (case (_lhsIimpNmLkup) of
-                                                               { _tlOimpNmLkup ->
-                                                               (case (_lhsIopts) of
-                                                                { _tlOopts ->
-                                                                (case (_lhsImodNr) of
-                                                                 { _tlOmodNr ->
-                                                                 (case (_lhsIevalCtx) of
-                                                                  { _tlOevalCtx ->
-                                                                  (case (tl_1 _tlOevalCtx _tlOimpNmLkup _tlOlev _tlOmodNr _tlOnm2ref _tlOopts _tlOscrutRef _tlOstackDepth _tlOtailCtx) of
-                                                                   { ( _tlIcra,_tlIrefOffsetMax,_tlIstackDepth,_tlIstackDepthMax) ->
-                                                                       (case (_hdIcra ++ _tlIcra) of
-                                                                        { _lhsOcra ->
-                                                                        (case (_hdIrefOffsetMax `max` _tlIrefOffsetMax) of
-                                                                         { _lhsOrefOffsetMax ->
-                                                                         (case (_tlIstackDepth) of
-                                                                          { _lhsOstackDepth ->
-                                                                          (case (_hdIstackDepthMax `max` _tlIstackDepthMax) of
-                                                                           { _lhsOstackDepthMax ->
-                                                                           ( _lhsOcra,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                              in  sem_CAltL_Cons_1)) of
-                       { ( sem_CAltL_1) ->
-                       ( _lhsOrefOffset,sem_CAltL_1) }) }) }) }) }) }))
-sem_CAltL_Nil :: T_CAltL
-sem_CAltL_Nil =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CAltL_Nil_1 :: T_CAltL_1
-                      sem_CAltL_Nil_1 =
-                          (\ _lhsIevalCtx
-                             _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIscrutRef
-                             _lhsIstackDepth
-                             _lhsItailCtx ->
-                               (case ([]) of
-                                { _lhsOcra ->
-                                (case (0) of
-                                 { _lhsOrefOffsetMax ->
-                                 (case (_lhsIstackDepth) of
-                                  { _lhsOstackDepth ->
-                                  (case (0) of
-                                   { _lhsOstackDepthMax ->
-                                   ( _lhsOcra,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
-                  in  sem_CAltL_Nil_1)) of
-           { ( sem_CAltL_1) ->
-           ( _lhsOrefOffset,sem_CAltL_1) }) }))
--- CBind -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         isGlobal             : Bool
-         lev                  : Int
-      chained attribute:
-         refOffset            : Int
-      synthesized attributes:
-         nm                   : HsName
-         nm2refGath           : CR.Nm2RefMp
-   visit 1:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         impNmLkup            : HsName -> Maybe Int
-         letBindingsCateg     : CBindCateg
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-      synthesized attributes:
-         crb                  : [(HsName, CR.Bind)]
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-   alternatives:
-      alternative Bind:
-         child nm             : {HsName}
-         child bindAspects    : CBoundL 
-         visit 0:
-            local ref         : _
-            local nm2refGath  : _
-            local refOffsetHere : _
-         visit 1:
-            local crb         : _
--}
--- cata
-sem_CBind :: CBind ->
-             T_CBind
-sem_CBind (CBind_Bind _nm _bindAspects) =
-    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
--- semantic domain
-type T_CBind = Bool ->
-               Int ->
-               Int ->
-               ( HsName,(CR.Nm2RefMp),Int,T_CBind_1)
-type T_CBind_1 = EvalCtx ->
-                 (HsName -> Maybe Int) ->
-                 CBindCateg ->
-                 Int ->
-                 (CR.Nm2RefMp) ->
-                 EHCOpts ->
-                 Int ->
-                 ( ([(HsName, CR.Bind)]),Int,Int,Int)
-sem_CBind_Bind :: HsName ->
-                  T_CBoundL ->
-                  T_CBind
-sem_CBind_Bind nm_ bindAspects_ =
-    (\ _lhsIisGlobal
-       _lhsIlev
-       _lhsIrefOffset ->
-         (case (nm_) of
-          { _lhsOnm ->
-          (case (if _lhsIisGlobal
-                 then CR.RRef_Mod _lhsIrefOffset
-                 else CR.RRef_Loc _lhsIlev   _lhsIrefOffset) of
-           { _ref ->
-           (case (Rel.singleton nm_ _ref) of
-            { _nm2refGath ->
-            (case (_nm2refGath) of
-             { _lhsOnm2refGath ->
-             (case (_lhsIrefOffset + 1) of
-              { _refOffsetHere ->
-              (case (_refOffsetHere) of
-               { _lhsOrefOffset ->
-               (case ((let sem_CBind_Bind_1 :: T_CBind_1
-                           sem_CBind_Bind_1 =
-                               (\ _lhsIevalCtx
-                                  _lhsIimpNmLkup
-                                  _lhsIletBindingsCateg
-                                  _lhsImodNr
-                                  _lhsInm2ref
-                                  _lhsIopts
-                                  _lhsIstackDepth ->
-                                    (case (_lhsIstackDepth) of
-                                     { _bindAspectsOstackDepth ->
-                                     (case (_lhsIrefOffset) of
-                                      { _bindAspectsOrefOffset ->
-                                      (case (_lhsInm2ref) of
-                                       { _bindAspectsOnm2ref ->
-                                       (case (_lhsIlev) of
-                                        { _bindAspectsOlev ->
-                                        (case (_lhsIisGlobal) of
-                                         { _bindAspectsOisGlobal ->
-                                         (case (_lhsIimpNmLkup) of
-                                          { _bindAspectsOimpNmLkup ->
-                                          (case (_lhsIevalCtx) of
-                                           { _bindAspectsOevalCtx ->
-                                           (case (nm_) of
-                                            { _bindAspectsOnm ->
-                                            (case (_lhsIopts) of
-                                             { _bindAspectsOopts ->
-                                             (case (_lhsImodNr) of
-                                              { _bindAspectsOmodNr ->
-                                              (case (_lhsIletBindingsCateg) of
-                                               { _bindAspectsOletBindingsCateg ->
-                                               (case (bindAspects_ _bindAspectsOevalCtx _bindAspectsOimpNmLkup _bindAspectsOisGlobal _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOmodNr _bindAspectsOnm _bindAspectsOnm2ref _bindAspectsOopts _bindAspectsOrefOffset _bindAspectsOstackDepth) of
-                                                { ( _bindAspectsIcrb,_bindAspectsInm2refGath,_bindAspectsIrefOffset,_bindAspectsIrefOffsetMax,_bindAspectsIstackDepth,_bindAspectsIstackDepthMax) ->
-                                                    (case (take 1 _bindAspectsIcrb) of
-                                                     { _crb ->
-                                                     (case (_crb) of
-                                                      { _lhsOcrb ->
-                                                      (case (_bindAspectsIrefOffsetMax) of
-                                                       { _lhsOrefOffsetMax ->
-                                                       (case (_bindAspectsIstackDepth) of
-                                                        { _lhsOstackDepth ->
-                                                        (case (_bindAspectsIstackDepthMax) of
-                                                         { _lhsOstackDepthMax ->
-                                                         ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                       in  sem_CBind_Bind_1)) of
-                { ( sem_CBind_1) ->
-                ( _lhsOnm,_lhsOnm2refGath,_lhsOrefOffset,sem_CBind_1) }) }) }) }) }) }) }))
--- CBindAnn ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-   alternatives:
-      alternative Coe:
-         child coe            : {RelevCoe}
--}
--- cata
-sem_CBindAnn :: CBindAnn ->
-                T_CBindAnn
-sem_CBindAnn (CBindAnn_Coe _coe) =
-    (sem_CBindAnn_Coe _coe)
--- semantic domain
-type T_CBindAnn = (HsName -> Maybe Int) ->
-                  Int ->
-                  Int ->
-                  (CR.Nm2RefMp) ->
-                  EHCOpts ->
-                  Int ->
-                  Int ->
-                  ( Int,Int)
-sem_CBindAnn_Coe :: RelevCoe ->
-                    T_CBindAnn
-sem_CBindAnn_Coe coe_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case (_lhsIstackDepth) of
-           { _lhsOstackDepth ->
-           ( _lhsOrefOffset,_lhsOstackDepth) }) }))
--- CBindAnnL ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-   alternatives:
-      alternative Cons:
-         child hd             : CBindAnn 
-         child tl             : CBindAnnL 
-      alternative Nil:
--}
--- cata
-sem_CBindAnnL :: CBindAnnL ->
-                 T_CBindAnnL
-sem_CBindAnnL list =
-    (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
--- semantic domain
-type T_CBindAnnL = (HsName -> Maybe Int) ->
-                   Int ->
-                   Int ->
-                   (CR.Nm2RefMp) ->
-                   EHCOpts ->
-                   Int ->
-                   Int ->
-                   ( Int,Int)
-sem_CBindAnnL_Cons :: T_CBindAnn ->
-                      T_CBindAnnL ->
-                      T_CBindAnnL
-sem_CBindAnnL_Cons hd_ tl_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIrefOffset) of
-          { _hdOrefOffset ->
-          (case (_lhsIstackDepth) of
-           { _hdOstackDepth ->
-           (case (_lhsIopts) of
-            { _hdOopts ->
-            (case (_lhsInm2ref) of
-             { _hdOnm2ref ->
-             (case (_lhsImodNr) of
-              { _hdOmodNr ->
-              (case (_lhsIlev) of
-               { _hdOlev ->
-               (case (_lhsIimpNmLkup) of
-                { _hdOimpNmLkup ->
-                (case (hd_ _hdOimpNmLkup _hdOlev _hdOmodNr _hdOnm2ref _hdOopts _hdOrefOffset _hdOstackDepth) of
-                 { ( _hdIrefOffset,_hdIstackDepth) ->
-                     (case (_hdIrefOffset) of
-                      { _tlOrefOffset ->
-                      (case (_hdIstackDepth) of
-                       { _tlOstackDepth ->
-                       (case (_lhsIopts) of
-                        { _tlOopts ->
-                        (case (_lhsInm2ref) of
-                         { _tlOnm2ref ->
-                         (case (_lhsImodNr) of
-                          { _tlOmodNr ->
-                          (case (_lhsIlev) of
-                           { _tlOlev ->
-                           (case (_lhsIimpNmLkup) of
-                            { _tlOimpNmLkup ->
-                            (case (tl_ _tlOimpNmLkup _tlOlev _tlOmodNr _tlOnm2ref _tlOopts _tlOrefOffset _tlOstackDepth) of
-                             { ( _tlIrefOffset,_tlIstackDepth) ->
-                                 (case (_tlIrefOffset) of
-                                  { _lhsOrefOffset ->
-                                  (case (_tlIstackDepth) of
-                                   { _lhsOstackDepth ->
-                                   ( _lhsOrefOffset,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBindAnnL_Nil :: T_CBindAnnL
-sem_CBindAnnL_Nil =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case (_lhsIstackDepth) of
-           { _lhsOstackDepth ->
-           ( _lhsOrefOffset,_lhsOstackDepth) }) }))
--- CBindL ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         isGlobal             : Bool
-         lev                  : Int
-      chained attribute:
-         refOffset            : Int
-      synthesized attribute:
-         nm2refGath           : CR.Nm2RefMp
-   visit 1:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         impNmLkup            : HsName -> Maybe Int
-         letBindingsCateg     : CBindCateg
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-      synthesized attributes:
-         crb                  : [(HsName, CR.Bind)]
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-   alternatives:
-      alternative Cons:
-         child hd             : CBind 
-         child tl             : CBindL 
-      alternative Nil:
--}
--- cata
-sem_CBindL :: CBindL ->
-              T_CBindL
-sem_CBindL list =
-    (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
--- semantic domain
-type T_CBindL = Bool ->
-                Int ->
-                Int ->
-                ( (CR.Nm2RefMp),Int,T_CBindL_1)
-type T_CBindL_1 = EvalCtx ->
-                  (HsName -> Maybe Int) ->
-                  CBindCateg ->
-                  Int ->
-                  (CR.Nm2RefMp) ->
-                  EHCOpts ->
-                  Int ->
-                  ( ([(HsName, CR.Bind)]),Int,Int,Int)
-sem_CBindL_Cons :: T_CBind ->
-                   T_CBindL ->
-                   T_CBindL
-sem_CBindL_Cons hd_ tl_ =
-    (\ _lhsIisGlobal
-       _lhsIlev
-       _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _hdOrefOffset ->
-          (case (_lhsIlev) of
-           { _hdOlev ->
-           (case (_lhsIisGlobal) of
-            { _hdOisGlobal ->
-            (case (hd_ _hdOisGlobal _hdOlev _hdOrefOffset) of
-             { ( _hdInm,_hdInm2refGath,_hdIrefOffset,hd_1) ->
-                 (case (_hdIrefOffset) of
-                  { _tlOrefOffset ->
-                  (case (_lhsIlev) of
-                   { _tlOlev ->
-                   (case (_lhsIisGlobal) of
-                    { _tlOisGlobal ->
-                    (case (tl_ _tlOisGlobal _tlOlev _tlOrefOffset) of
-                     { ( _tlInm2refGath,_tlIrefOffset,tl_1) ->
-                         (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
-                          { _lhsOnm2refGath ->
-                          (case (_tlIrefOffset) of
-                           { _lhsOrefOffset ->
-                           (case ((let sem_CBindL_Cons_1 :: T_CBindL_1
-                                       sem_CBindL_Cons_1 =
-                                           (\ _lhsIevalCtx
-                                              _lhsIimpNmLkup
-                                              _lhsIletBindingsCateg
-                                              _lhsImodNr
-                                              _lhsInm2ref
-                                              _lhsIopts
-                                              _lhsIstackDepth ->
-                                                (case (_lhsIstackDepth) of
-                                                 { _hdOstackDepth ->
-                                                 (case (_lhsIevalCtx) of
-                                                  { _hdOevalCtx ->
-                                                  (case (_lhsIopts) of
-                                                   { _hdOopts ->
-                                                   (case (_lhsInm2ref) of
-                                                    { _hdOnm2ref ->
-                                                    (case (_lhsImodNr) of
-                                                     { _hdOmodNr ->
-                                                     (case (_lhsIletBindingsCateg) of
-                                                      { _hdOletBindingsCateg ->
-                                                      (case (_lhsIimpNmLkup) of
-                                                       { _hdOimpNmLkup ->
-                                                       (case (hd_1 _hdOevalCtx _hdOimpNmLkup _hdOletBindingsCateg _hdOmodNr _hdOnm2ref _hdOopts _hdOstackDepth) of
-                                                        { ( _hdIcrb,_hdIrefOffsetMax,_hdIstackDepth,_hdIstackDepthMax) ->
-                                                            (case (_hdIstackDepth) of
-                                                             { _tlOstackDepth ->
-                                                             (case (_lhsInm2ref) of
-                                                              { _tlOnm2ref ->
-                                                              (case (_lhsIimpNmLkup) of
-                                                               { _tlOimpNmLkup ->
-                                                               (case (_lhsIevalCtx) of
-                                                                { _tlOevalCtx ->
-                                                                (case (_lhsIopts) of
-                                                                 { _tlOopts ->
-                                                                 (case (_lhsImodNr) of
-                                                                  { _tlOmodNr ->
-                                                                  (case (_lhsIletBindingsCateg) of
-                                                                   { _tlOletBindingsCateg ->
-                                                                   (case (tl_1 _tlOevalCtx _tlOimpNmLkup _tlOletBindingsCateg _tlOmodNr _tlOnm2ref _tlOopts _tlOstackDepth) of
-                                                                    { ( _tlIcrb,_tlIrefOffsetMax,_tlIstackDepth,_tlIstackDepthMax) ->
-                                                                        (case (_hdIcrb ++ _tlIcrb) of
-                                                                         { _lhsOcrb ->
-                                                                         (case (_hdIrefOffsetMax `max` _tlIrefOffsetMax) of
-                                                                          { _lhsOrefOffsetMax ->
-                                                                          (case (_tlIstackDepth) of
-                                                                           { _lhsOstackDepth ->
-                                                                           (case (_hdIstackDepthMax `max` _tlIstackDepthMax) of
-                                                                            { _lhsOstackDepthMax ->
-                                                                            ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                   in  sem_CBindL_Cons_1)) of
-                            { ( sem_CBindL_1) ->
-                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindL_1) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBindL_Nil :: T_CBindL
-sem_CBindL_Nil =
-    (\ _lhsIisGlobal
-       _lhsIlev
-       _lhsIrefOffset ->
-         (case (CR.emptyNm2RefMp) of
-          { _lhsOnm2refGath ->
-          (case (_lhsIrefOffset) of
-           { _lhsOrefOffset ->
-           (case ((let sem_CBindL_Nil_1 :: T_CBindL_1
-                       sem_CBindL_Nil_1 =
-                           (\ _lhsIevalCtx
-                              _lhsIimpNmLkup
-                              _lhsIletBindingsCateg
-                              _lhsImodNr
-                              _lhsInm2ref
-                              _lhsIopts
-                              _lhsIstackDepth ->
-                                (case ([]) of
-                                 { _lhsOcrb ->
-                                 (case (0) of
-                                  { _lhsOrefOffsetMax ->
-                                  (case (_lhsIstackDepth) of
-                                   { _lhsOstackDepth ->
-                                   (case (0) of
-                                    { _lhsOstackDepthMax ->
-                                    ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
-                   in  sem_CBindL_Nil_1)) of
-            { ( sem_CBindL_1) ->
-            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindL_1) }) }) }))
--- CBound ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         isGlobal             : Bool
-         lev                  : Int
-         nm                   : HsName
-      chained attribute:
-         refOffset            : Int
-      synthesized attribute:
-         nm2refGath           : CR.Nm2RefMp
-   visit 1:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         isTopApp             : Bool
-         isTopTup             : Bool
-         letBindingsCateg     : CBindCateg
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-      synthesized attributes:
-         crb                  : [(HsName, CR.Bind)]
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-   alternatives:
-      alternative Bind:
-         child bindMeta       : CMetas 
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local toBe        : _
-            local isToBeThunked : _
-            local lev         : _
-            local refOffsetExpr : _
-         visit 1:
-            local tailCtx     : _
-            local nm2refNew   : _
-            local isToBeALam  : _
-            local stackDepthMaxThunked : _
-            local creMkForce  : _
-            local creBind     : _
-            local crb         : _
-            local stackDepthExpr : _
-            intra isToBeThunked : _
-            intra toBe        : _
-      alternative Meta:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child cmetas         : CMetas 
-      alternative RelevTy:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child relevTy        : {RelevTy}
-      alternative Val:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child mlev           : {MetaLev}
-         child lbl            : {CLbl}
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local toBe        : _
-            local isToBeThunked : _
-            local lev         : _
-            local refOffsetExpr : _
-         visit 1:
-            local tailCtx     : _
-            local nm2refNew   : _
-            local isToBeALam  : _
-            local stackDepthMaxThunked : _
-            local creMkForce  : _
-            local creBind     : _
-            local crb         : _
-            local stackDepthExpr : _
-            intra isToBeThunked : _
-            intra toBe        : _
-      alternative Ty:
-         child aspectKeyS     : {ACoreBindAspectKeyS}
-         child ty             : {Ty}
-      alternative FFE:
-         child callconv       : {FFIWay}
-         child expEnt         : {ForeignEnt}
-         child expr           : CExpr 
-         child ty             : {Ty}
-         visit 0:
-            local whatAbove   : {WhatExpr}
-         visit 1:
-            local tailCtx     : _
--}
--- cata
-sem_CBound :: CBound ->
-              T_CBound
-sem_CBound (CBound_Bind _bindMeta _expr) =
-    (sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
-sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
-    (sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
-sem_CBound (CBound_RelevTy _aspectKeyS _relevTy) =
-    (sem_CBound_RelevTy _aspectKeyS _relevTy)
-sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
-    (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
-sem_CBound (CBound_Ty _aspectKeyS _ty) =
-    (sem_CBound_Ty _aspectKeyS _ty)
-sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
-    (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
--- semantic domain
-type T_CBound = EvalCtx ->
-                Bool ->
-                Int ->
-                HsName ->
-                Int ->
-                ( (CR.Nm2RefMp),Int,T_CBound_1)
-type T_CBound_1 = (HsName -> Maybe Int) ->
-                  Bool ->
-                  Bool ->
-                  CBindCateg ->
-                  Int ->
-                  (CR.Nm2RefMp) ->
-                  EHCOpts ->
-                  Int ->
-                  ( ([(HsName, CR.Bind)]),Int,Int,Int)
-sem_CBound_Bind :: T_CMetas ->
-                   T_CExpr ->
-                   T_CBound
-sem_CBound_Bind bindMeta_ expr_ =
-    (\ _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIlev
-       _lhsInm
-       _lhsIrefOffset ->
-         (case (ExprIsBind _lhsInm) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (expr_) of
-            { ( _exprIwhatBelow,expr_1) ->
-                (case (let mba@(~(Just (_,w))) = whatExprMbApp _exprIwhatBelow
-                           isVar     = isJust $ whatExprMbVar _exprIwhatBelow
-                           isGlbVar  = isVar && _lhsIisGlobal
-                           isApp     = isJust mba
-                           isTup     = isApp && whatExprIsTup w
-                           isWHNF    = whatExprIsWHNF _exprIwhatBelow
-                           isNotWHNF = not isWHNF
-                       in  case _lhsIevalCtx of
-                             EvalCtx_Eval
-                               | isApp      -> ToBe_LeftAsIs
-                               | isVar      -> ToBe_Forced
-                               | isNotWHNF  -> ToBe_Forced
-                             EvalCtx_Thunk
-                               | isTup      -> ToBe_LeftAsIs
-                               | isGlbVar   -> ToBe_Thunked
-                               | isNotWHNF  -> ToBe_Thunked
-                             _              -> ToBe_LeftAsIs) of
-                 { _toBe ->
-                 (case (_toBe == ToBe_Thunked) of
-                  { _isToBeThunked ->
-                  (case (if _isToBeThunked then _lhsIlev + 1 else _lhsIlev) of
-                   { _lev ->
-                   (case (_lev) of
-                    { _exprOlev ->
-                    (case (if _isToBeThunked then 0              else _lhsIrefOffset) of
-                     { _refOffsetExpr ->
-                     (case (_refOffsetExpr) of
-                      { _exprOrefOffset ->
-                      (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                       { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                           (case (_exprInm2refGath) of
-                            { _lhsOnm2refGath ->
-                            (case (if _isToBeThunked then _lhsIrefOffset else _exprIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CBound_Bind_1 :: T_CBound_1
-                                         sem_CBound_Bind_1 =
-                                             (\ _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsIletBindingsCateg
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth ->
-                                                  (case (if _isToBeThunked then TailCtx_TailCall else TailCtx_Plain) of
-                                                   { _tailCtx ->
-                                                   (case (_tailCtx) of
-                                                    { _exprOtailCtx ->
-                                                    (case (_lhsInm2ref) of
-                                                     { _exprOnm2ref ->
-                                                     (case (_lhsIimpNmLkup) of
-                                                      { _exprOimpNmLkup ->
-                                                      (case (if _isToBeThunked then _exprInm2refGath else CR.emptyNm2RefMp) of
-                                                       { _nm2refNew ->
-                                                       (case (_isToBeThunked || whatExprIsLam _exprIwhatBelow) of
-                                                        { _isToBeALam ->
-                                                        (case (if _isToBeALam then 0                 else _lhsIstackDepth) of
-                                                         { _exprOstackDepth ->
-                                                         (case (_lhsIopts) of
-                                                          { _exprOopts ->
-                                                          (case (_lhsImodNr) of
-                                                           { _exprOmodNr ->
-                                                           (case (_lhsIevalCtx) of
-                                                            { _exprOevalCtx ->
-                                                            (case (True) of
-                                                             { _exprOisTopTup ->
-                                                             (case (True) of
-                                                              { _exprOisTopApp ->
-                                                              (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                               { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                   (case (max _exprIstackDepth _exprIstackDepthMax) of
-                                                                    { _stackDepthMaxThunked ->
-                                                                    (case (case _toBe of
-                                                                               ToBe_Forced   -> tailrec _tailCtx . CR.mkEval
-                                                                               ToBe_Thunked  -> CR.Exp_Lam (Just _lhsInm)            0                          (_stackDepthMaxThunked) (CR.nm2RefMpInverse _nm2refNew)
-                                                                               ToBe_LeftAsIs -> id) of
-                                                                     { _creMkForce ->
-                                                                     (case (_creMkForce _exprIcre) of
-                                                                      { _creBind ->
-                                                                      (case ([( _lhsInm, _creBind )]) of
-                                                                       { _crb ->
-                                                                       (case (_crb) of
-                                                                        { _lhsOcrb ->
-                                                                        (case (if _isToBeThunked then _lhsIrefOffset else max _exprIrefOffset _exprIrefOffsetMax) of
-                                                                         { _lhsOrefOffsetMax ->
-                                                                         (case (if _isToBeALam then _lhsIstackDepth+1 else _exprIstackDepth) of
-                                                                          { _stackDepthExpr ->
-                                                                          (case (_stackDepthExpr) of
-                                                                           { _lhsOstackDepth ->
-                                                                           (case (if _isToBeALam then _stackDepthExpr else _stackDepthMaxThunked) of
-                                                                            { _lhsOstackDepthMax ->
-                                                                            ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CBound_Bind_1)) of
-                              { ( sem_CBound_1) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBound_Meta :: ACoreBindAspectKeyS ->
-                   T_CMetas ->
-                   T_CBound
-sem_CBound_Meta aspectKeyS_ cmetas_ =
-    (\ _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIlev
-       _lhsInm
-       _lhsIrefOffset ->
-         (case (CR.emptyNm2RefMp) of
-          { _lhsOnm2refGath ->
-          (case (_lhsIrefOffset) of
-           { _cmetasOrefOffset ->
-           (case (cmetas_ _cmetasOrefOffset) of
-            { ( _cmetasIrefOffset,cmetas_1) ->
-                (case (_cmetasIrefOffset) of
-                 { _lhsOrefOffset ->
-                 (case ((let sem_CBound_Meta_1 :: T_CBound_1
-                             sem_CBound_Meta_1 =
-                                 (\ _lhsIimpNmLkup
-                                    _lhsIisTopApp
-                                    _lhsIisTopTup
-                                    _lhsIletBindingsCateg
-                                    _lhsImodNr
-                                    _lhsInm2ref
-                                    _lhsIopts
-                                    _lhsIstackDepth ->
-                                      (case ([]) of
-                                       { _lhsOcrb ->
-                                       (case (0) of
-                                        { _lhsOrefOffsetMax ->
-                                        (case (_lhsIstackDepth) of
-                                         { _cmetasOstackDepth ->
-                                         (case (_lhsIopts) of
-                                          { _cmetasOopts ->
-                                          (case (_lhsInm2ref) of
-                                           { _cmetasOnm2ref ->
-                                           (case (_lhsImodNr) of
-                                            { _cmetasOmodNr ->
-                                            (case (_lhsIlev) of
-                                             { _cmetasOlev ->
-                                             (case (_lhsIimpNmLkup) of
-                                              { _cmetasOimpNmLkup ->
-                                              (case (cmetas_1 _cmetasOimpNmLkup _cmetasOlev _cmetasOmodNr _cmetasOnm2ref _cmetasOopts _cmetasOstackDepth) of
-                                               { ( _cmetasIstackDepth) ->
-                                                   (case (_cmetasIstackDepth) of
-                                                    { _lhsOstackDepth ->
-                                                    (case (0) of
-                                                     { _lhsOstackDepthMax ->
-                                                     ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }))
-                         in  sem_CBound_Meta_1)) of
-                  { ( sem_CBound_1) ->
-                  ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }))
-sem_CBound_RelevTy :: ACoreBindAspectKeyS ->
-                      RelevTy ->
-                      T_CBound
-sem_CBound_RelevTy aspectKeyS_ relevTy_ =
-    (\ _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIlev
-       _lhsInm
-       _lhsIrefOffset ->
-         (case (CR.emptyNm2RefMp) of
-          { _lhsOnm2refGath ->
-          (case (_lhsIrefOffset) of
-           { _lhsOrefOffset ->
-           (case ((let sem_CBound_RelevTy_1 :: T_CBound_1
-                       sem_CBound_RelevTy_1 =
-                           (\ _lhsIimpNmLkup
-                              _lhsIisTopApp
-                              _lhsIisTopTup
-                              _lhsIletBindingsCateg
-                              _lhsImodNr
-                              _lhsInm2ref
-                              _lhsIopts
-                              _lhsIstackDepth ->
-                                (case ([]) of
-                                 { _lhsOcrb ->
-                                 (case (0) of
-                                  { _lhsOrefOffsetMax ->
-                                  (case (_lhsIstackDepth) of
-                                   { _lhsOstackDepth ->
-                                   (case (0) of
-                                    { _lhsOstackDepthMax ->
-                                    ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
-                   in  sem_CBound_RelevTy_1)) of
-            { ( sem_CBound_1) ->
-            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }))
-sem_CBound_Val :: ACoreBindAspectKeyS ->
-                  MetaLev ->
-                  CLbl ->
-                  T_CExpr ->
-                  T_CBound
-sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
-    (\ _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIlev
-       _lhsInm
-       _lhsIrefOffset ->
-         (case (ExprIsBind _lhsInm) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (expr_) of
-            { ( _exprIwhatBelow,expr_1) ->
-                (case (let mba@(~(Just (_,w))) = whatExprMbApp _exprIwhatBelow
-                           isVar     = isJust $ whatExprMbVar _exprIwhatBelow
-                           isGlbVar  = isVar && _lhsIisGlobal
-                           isApp     = isJust mba
-                           isTup     = isApp && whatExprIsTup w
-                           isWHNF    = whatExprIsWHNF _exprIwhatBelow
-                           isNotWHNF = not isWHNF
-                       in  case _lhsIevalCtx of
-                             EvalCtx_Eval
-                               | isApp      -> ToBe_LeftAsIs
-                               | isVar      -> ToBe_Forced
-                               | isNotWHNF  -> ToBe_Forced
-                             EvalCtx_Thunk
-                               | isTup      -> ToBe_LeftAsIs
-                               | isGlbVar   -> ToBe_Thunked
-                               | isNotWHNF  -> ToBe_Thunked
-                             _              -> ToBe_LeftAsIs) of
-                 { _toBe ->
-                 (case (_toBe == ToBe_Thunked) of
-                  { _isToBeThunked ->
-                  (case (if _isToBeThunked then _lhsIlev + 1 else _lhsIlev) of
-                   { _lev ->
-                   (case (_lev) of
-                    { _exprOlev ->
-                    (case (if _isToBeThunked then 0              else _lhsIrefOffset) of
-                     { _refOffsetExpr ->
-                     (case (_refOffsetExpr) of
-                      { _exprOrefOffset ->
-                      (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                       { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                           (case (_exprInm2refGath) of
-                            { _lhsOnm2refGath ->
-                            (case (if _isToBeThunked then _lhsIrefOffset else _exprIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CBound_Val_1 :: T_CBound_1
-                                         sem_CBound_Val_1 =
-                                             (\ _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsIletBindingsCateg
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth ->
-                                                  (case (if _isToBeThunked then TailCtx_TailCall else TailCtx_Plain) of
-                                                   { _tailCtx ->
-                                                   (case (_tailCtx) of
-                                                    { _exprOtailCtx ->
-                                                    (case (_lhsInm2ref) of
-                                                     { _exprOnm2ref ->
-                                                     (case (_lhsIimpNmLkup) of
-                                                      { _exprOimpNmLkup ->
-                                                      (case (if _isToBeThunked then _exprInm2refGath else CR.emptyNm2RefMp) of
-                                                       { _nm2refNew ->
-                                                       (case (_isToBeThunked || whatExprIsLam _exprIwhatBelow) of
-                                                        { _isToBeALam ->
-                                                        (case (if _isToBeALam then 0                 else _lhsIstackDepth) of
-                                                         { _exprOstackDepth ->
-                                                         (case (_lhsIopts) of
-                                                          { _exprOopts ->
-                                                          (case (_lhsImodNr) of
-                                                           { _exprOmodNr ->
-                                                           (case (_lhsIisTopTup) of
-                                                            { _exprOisTopTup ->
-                                                            (case (_lhsIisTopApp) of
-                                                             { _exprOisTopApp ->
-                                                             (case (_lhsIevalCtx) of
-                                                              { _exprOevalCtx ->
-                                                              (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                               { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                   (case (max _exprIstackDepth _exprIstackDepthMax) of
-                                                                    { _stackDepthMaxThunked ->
-                                                                    (case (case _toBe of
-                                                                               ToBe_Forced   -> tailrec _tailCtx . CR.mkEval
-                                                                               ToBe_Thunked  -> CR.Exp_Lam (Just _lhsInm)            0                          (_stackDepthMaxThunked) (CR.nm2RefMpInverse _nm2refNew)
-                                                                               ToBe_LeftAsIs -> id) of
-                                                                     { _creMkForce ->
-                                                                     (case (_creMkForce _exprIcre) of
-                                                                      { _creBind ->
-                                                                      (case ([( _lhsInm, _creBind )]) of
-                                                                       { _crb ->
-                                                                       (case (_crb) of
-                                                                        { _lhsOcrb ->
-                                                                        (case (if _isToBeThunked then _lhsIrefOffset else max _exprIrefOffset _exprIrefOffsetMax) of
-                                                                         { _lhsOrefOffsetMax ->
-                                                                         (case (if _isToBeALam then _lhsIstackDepth+1 else _exprIstackDepth) of
-                                                                          { _stackDepthExpr ->
-                                                                          (case (_stackDepthExpr) of
-                                                                           { _lhsOstackDepth ->
-                                                                           (case (if _isToBeALam then _stackDepthExpr else _stackDepthMaxThunked) of
-                                                                            { _lhsOstackDepthMax ->
-                                                                            ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CBound_Val_1)) of
-                              { ( sem_CBound_1) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBound_Ty :: ACoreBindAspectKeyS ->
-                 Ty ->
-                 T_CBound
-sem_CBound_Ty aspectKeyS_ ty_ =
-    (\ _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIlev
-       _lhsInm
-       _lhsIrefOffset ->
-         (case (CR.emptyNm2RefMp) of
-          { _lhsOnm2refGath ->
-          (case (_lhsIrefOffset) of
-           { _lhsOrefOffset ->
-           (case ((let sem_CBound_Ty_1 :: T_CBound_1
-                       sem_CBound_Ty_1 =
-                           (\ _lhsIimpNmLkup
-                              _lhsIisTopApp
-                              _lhsIisTopTup
-                              _lhsIletBindingsCateg
-                              _lhsImodNr
-                              _lhsInm2ref
-                              _lhsIopts
-                              _lhsIstackDepth ->
-                                (case ([]) of
-                                 { _lhsOcrb ->
-                                 (case (0) of
-                                  { _lhsOrefOffsetMax ->
-                                  (case (_lhsIstackDepth) of
-                                   { _lhsOstackDepth ->
-                                   (case (0) of
-                                    { _lhsOstackDepthMax ->
-                                    ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
-                   in  sem_CBound_Ty_1)) of
-            { ( sem_CBound_1) ->
-            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }))
-sem_CBound_FFE :: FFIWay ->
-                  ForeignEnt ->
-                  T_CExpr ->
-                  Ty ->
-                  T_CBound
-sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
-    (\ _lhsIevalCtx
-       _lhsIisGlobal
-       _lhsIlev
-       _lhsInm
-       _lhsIrefOffset ->
-         (case (ExprIsLam 0 Nothing) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (_lhsIrefOffset) of
-            { _exprOrefOffset ->
-            (case (_lhsIlev) of
-             { _exprOlev ->
-             (case (expr_) of
-              { ( _exprIwhatBelow,expr_1) ->
-                  (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                   { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                       (case (_exprInm2refGath) of
-                        { _lhsOnm2refGath ->
-                        (case (_exprIrefOffset) of
-                         { _lhsOrefOffset ->
-                         (case ((let sem_CBound_FFE_1 :: T_CBound_1
-                                     sem_CBound_FFE_1 =
-                                         (\ _lhsIimpNmLkup
-                                            _lhsIisTopApp
-                                            _lhsIisTopTup
-                                            _lhsIletBindingsCateg
-                                            _lhsImodNr
-                                            _lhsInm2ref
-                                            _lhsIopts
-                                            _lhsIstackDepth ->
-                                              (case (_lhsIstackDepth) of
-                                               { _exprOstackDepth ->
-                                               (case (_lhsInm2ref) of
-                                                { _exprOnm2ref ->
-                                                (case (_lhsIimpNmLkup) of
-                                                 { _exprOimpNmLkup ->
-                                                 (case (TailCtx_Plain) of
-                                                  { _tailCtx ->
-                                                  (case (_tailCtx) of
-                                                   { _exprOtailCtx ->
-                                                   (case (_lhsIopts) of
-                                                    { _exprOopts ->
-                                                    (case (_lhsImodNr) of
-                                                     { _exprOmodNr ->
-                                                     (case (_lhsIevalCtx) of
-                                                      { _exprOevalCtx ->
-                                                      (case (True) of
-                                                       { _exprOisTopTup ->
-                                                       (case (True) of
-                                                        { _exprOisTopApp ->
-                                                        (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                         { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                             (case (_exprIcrb) of
-                                                              { _lhsOcrb ->
-                                                              (case (_exprIrefOffsetMax) of
-                                                               { _lhsOrefOffsetMax ->
-                                                               (case (_exprIstackDepth) of
-                                                                { _lhsOstackDepth ->
-                                                                (case (_exprIstackDepthMax) of
-                                                                 { _lhsOstackDepthMax ->
-                                                                 ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                 in  sem_CBound_FFE_1)) of
-                          { ( sem_CBound_1) ->
-                          ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }) }) }) }) }))
--- CBoundL -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         impNmLkup            : HsName -> Maybe Int
-         isGlobal             : Bool
-         letBindingsCateg     : CBindCateg
-         lev                  : Int
-         modNr                : Int
-         nm                   : HsName
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-      synthesized attributes:
-         crb                  : [(HsName, CR.Bind)]
-         nm2refGath           : CR.Nm2RefMp
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-   alternatives:
-      alternative Cons:
-         child hd             : CBound 
-         child tl             : CBoundL 
-      alternative Nil:
--}
--- cata
-sem_CBoundL :: CBoundL ->
-               T_CBoundL
-sem_CBoundL list =
-    (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
--- semantic domain
-type T_CBoundL = EvalCtx ->
-                 (HsName -> Maybe Int) ->
-                 Bool ->
-                 CBindCateg ->
-                 Int ->
-                 Int ->
-                 HsName ->
-                 (CR.Nm2RefMp) ->
-                 EHCOpts ->
-                 Int ->
-                 Int ->
-                 ( ([(HsName, CR.Bind)]),(CR.Nm2RefMp),Int,Int,Int,Int)
-sem_CBoundL_Cons :: T_CBound ->
-                    T_CBoundL ->
-                    T_CBoundL
-sem_CBoundL_Cons hd_ tl_ =
-    (\ _lhsIevalCtx
-       _lhsIimpNmLkup
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIstackDepth) of
-          { _hdOstackDepth ->
-          (case (_lhsIrefOffset) of
-           { _hdOrefOffset ->
-           (case (_lhsInm) of
-            { _hdOnm ->
-            (case (_lhsIlev) of
-             { _hdOlev ->
-             (case (_lhsIisGlobal) of
-              { _hdOisGlobal ->
-              (case (_lhsIevalCtx) of
-               { _hdOevalCtx ->
-               (case (hd_ _hdOevalCtx _hdOisGlobal _hdOlev _hdOnm _hdOrefOffset) of
-                { ( _hdInm2refGath,_hdIrefOffset,hd_1) ->
-                    (case (_lhsIopts) of
-                     { _hdOopts ->
-                     (case (_lhsInm2ref) of
-                      { _hdOnm2ref ->
-                      (case (_lhsImodNr) of
-                       { _hdOmodNr ->
-                       (case (_lhsIletBindingsCateg) of
-                        { _hdOletBindingsCateg ->
-                        (case (_lhsIimpNmLkup) of
-                         { _hdOimpNmLkup ->
-                         (case (True) of
-                          { _hdOisTopTup ->
-                          (case (True) of
-                           { _hdOisTopApp ->
-                           (case (hd_1 _hdOimpNmLkup _hdOisTopApp _hdOisTopTup _hdOletBindingsCateg _hdOmodNr _hdOnm2ref _hdOopts _hdOstackDepth) of
-                            { ( _hdIcrb,_hdIrefOffsetMax,_hdIstackDepth,_hdIstackDepthMax) ->
-                                (case (_hdIstackDepth) of
-                                 { _tlOstackDepth ->
-                                 (case (_hdIrefOffset) of
-                                  { _tlOrefOffset ->
-                                  (case (_lhsInm2ref) of
-                                   { _tlOnm2ref ->
-                                   (case (_lhsInm) of
-                                    { _tlOnm ->
-                                    (case (_lhsIlev) of
-                                     { _tlOlev ->
-                                     (case (_lhsIisGlobal) of
-                                      { _tlOisGlobal ->
-                                      (case (_lhsIimpNmLkup) of
-                                       { _tlOimpNmLkup ->
-                                       (case (_lhsIevalCtx) of
-                                        { _tlOevalCtx ->
-                                        (case (_lhsIopts) of
-                                         { _tlOopts ->
-                                         (case (_lhsImodNr) of
-                                          { _tlOmodNr ->
-                                          (case (_lhsIletBindingsCateg) of
-                                           { _tlOletBindingsCateg ->
-                                           (case (tl_ _tlOevalCtx _tlOimpNmLkup _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOmodNr _tlOnm _tlOnm2ref _tlOopts _tlOrefOffset _tlOstackDepth) of
-                                            { ( _tlIcrb,_tlInm2refGath,_tlIrefOffset,_tlIrefOffsetMax,_tlIstackDepth,_tlIstackDepthMax) ->
-                                                (case (_hdIcrb ++ _tlIcrb) of
-                                                 { _lhsOcrb ->
-                                                 (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
-                                                  { _lhsOnm2refGath ->
-                                                  (case (_tlIrefOffset) of
-                                                   { _lhsOrefOffset ->
-                                                   (case (_hdIrefOffsetMax `max` _tlIrefOffsetMax) of
-                                                    { _lhsOrefOffsetMax ->
-                                                    (case (_tlIstackDepth) of
-                                                     { _lhsOstackDepth ->
-                                                     (case (_hdIstackDepthMax `max` _tlIstackDepthMax) of
-                                                      { _lhsOstackDepthMax ->
-                                                      ( _lhsOcrb,_lhsOnm2refGath,_lhsOrefOffset,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CBoundL_Nil :: T_CBoundL
-sem_CBoundL_Nil =
-    (\ _lhsIevalCtx
-       _lhsIimpNmLkup
-       _lhsIisGlobal
-       _lhsIletBindingsCateg
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case ([]) of
-          { _lhsOcrb ->
-          (case (CR.emptyNm2RefMp) of
-           { _lhsOnm2refGath ->
-           (case (_lhsIrefOffset) of
-            { _lhsOrefOffset ->
-            (case (0) of
-             { _lhsOrefOffsetMax ->
-             (case (_lhsIstackDepth) of
-              { _lhsOstackDepth ->
-              (case (0) of
-               { _lhsOstackDepthMax ->
-               ( _lhsOcrb,_lhsOnm2refGath,_lhsOrefOffset,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }))
--- CDataCon ----------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         crdc                 : [CR.DataCon]
-   alternatives:
-      alternative Con:
-         child conNm          : {HsName}
-         child tagNr          : {Int}
-         child arity          : {Int}
--}
--- cata
-sem_CDataCon :: CDataCon ->
-                T_CDataCon
-sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
-    (sem_CDataCon_Con _conNm _tagNr _arity)
--- semantic domain
-type T_CDataCon = ( ([CR.DataCon]))
-sem_CDataCon_Con :: HsName ->
-                    Int ->
-                    Int ->
-                    T_CDataCon
-sem_CDataCon_Con conNm_ tagNr_ arity_ =
-    (case ([CR.DataCon_Con (hsnQualified conNm_) tagNr_]) of
-     { _lhsOcrdc ->
-     ( _lhsOcrdc) })
--- CDataConL ---------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         crdc                 : [CR.DataCon]
-   alternatives:
-      alternative Cons:
-         child hd             : CDataCon 
-         child tl             : CDataConL 
-      alternative Nil:
--}
--- cata
-sem_CDataConL :: CDataConL ->
-                 T_CDataConL
-sem_CDataConL list =
-    (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
--- semantic domain
-type T_CDataConL = ( ([CR.DataCon]))
-sem_CDataConL_Cons :: T_CDataCon ->
-                      T_CDataConL ->
-                      T_CDataConL
-sem_CDataConL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIcrdc) ->
-         (case (hd_) of
-          { ( _hdIcrdc) ->
-              (case (_hdIcrdc ++ _tlIcrdc) of
-               { _lhsOcrdc ->
-               ( _lhsOcrdc) }) }) })
-sem_CDataConL_Nil :: T_CDataConL
-sem_CDataConL_Nil =
-    (case ([]) of
-     { _lhsOcrdc ->
-     ( _lhsOcrdc) })
--- CDeclMeta ---------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         crmt                 : [CR.Meta]
-   alternatives:
-      alternative Data:
-         child tyNm           : {HsName}
-         child dataCons       : CDataConL 
--}
--- cata
-sem_CDeclMeta :: CDeclMeta ->
-                 T_CDeclMeta
-sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
-    (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
--- semantic domain
-type T_CDeclMeta = ( ([CR.Meta]))
-sem_CDeclMeta_Data :: HsName ->
-                      T_CDataConL ->
-                      T_CDeclMeta
-sem_CDeclMeta_Data tyNm_ dataCons_ =
-    (case (dataCons_) of
-     { ( _dataConsIcrdc) ->
-         (case ([CR.Meta_Data tyNm_ _dataConsIcrdc]) of
-          { _lhsOcrmt ->
-          ( _lhsOcrmt) }) })
--- CDeclMetaL --------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         crmt                 : [CR.Meta]
-   alternatives:
-      alternative Cons:
-         child hd             : CDeclMeta 
-         child tl             : CDeclMetaL 
-      alternative Nil:
--}
--- cata
-sem_CDeclMetaL :: CDeclMetaL ->
-                  T_CDeclMetaL
-sem_CDeclMetaL list =
-    (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
--- semantic domain
-type T_CDeclMetaL = ( ([CR.Meta]))
-sem_CDeclMetaL_Cons :: T_CDeclMeta ->
-                       T_CDeclMetaL ->
-                       T_CDeclMetaL
-sem_CDeclMetaL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIcrmt) ->
-         (case (hd_) of
-          { ( _hdIcrmt) ->
-              (case (_hdIcrmt ++ _tlIcrmt) of
-               { _lhsOcrmt ->
-               ( _lhsOcrmt) }) }) })
-sem_CDeclMetaL_Nil :: T_CDeclMetaL
-sem_CDeclMetaL_Nil =
-    (case ([]) of
-     { _lhsOcrmt ->
-     ( _lhsOcrmt) })
--- CExport -----------------------------------------------------
-{-
-   alternatives:
-      alternative Export:
-         child nm             : {HsName}
-      alternative ExportData:
-         child nm             : {HsName}
-         child mbConNmL       : {Maybe [HsName]}
--}
--- cata
-sem_CExport :: CExport ->
-               T_CExport
-sem_CExport (CExport_Export _nm) =
-    (sem_CExport_Export _nm)
-sem_CExport (CExport_ExportData _nm _mbConNmL) =
-    (sem_CExport_ExportData _nm _mbConNmL)
--- semantic domain
-type T_CExport = ( )
-sem_CExport_Export :: HsName ->
-                      T_CExport
-sem_CExport_Export nm_ =
-    ( )
-sem_CExport_ExportData :: HsName ->
-                          (Maybe [HsName]) ->
-                          T_CExport
-sem_CExport_ExportData nm_ mbConNmL_ =
-    ( )
--- CExportL ----------------------------------------------------
-{-
-   alternatives:
-      alternative Cons:
-         child hd             : CExport 
-         child tl             : CExportL 
-      alternative Nil:
--}
--- cata
-sem_CExportL :: CExportL ->
-                T_CExportL
-sem_CExportL list =
-    (Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list))
--- semantic domain
-type T_CExportL = ( )
-sem_CExportL_Cons :: T_CExport ->
-                     T_CExportL ->
-                     T_CExportL
-sem_CExportL_Cons hd_ tl_ =
-    ( )
-sem_CExportL_Nil :: T_CExportL
-sem_CExportL_Nil =
-    ( )
--- CExpr -------------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         whatBelow            : WhatExpr
-   visit 1:
-      inherited attributes:
-         lev                  : Int
-         whatAbove            : WhatExpr
-      chained attribute:
-         refOffset            : Int
-      synthesized attribute:
-         nm2refGath           : CR.Nm2RefMp
-   visit 2:
-      inherited attributes:
-         evalCtx              : EvalCtx
-         impNmLkup            : HsName -> Maybe Int
-         isTopApp             : Bool
-         isTopTup             : Bool
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-         tailCtx              : TailCtx
-      chained attribute:
-         stackDepth           : Int
-      synthesized attributes:
-         appFunKind           : AppFunKind
-         crb                  : [(HsName, CR.Bind)]
-         cre                  : CR.Exp
-         creAppArgL           : [CR.SExp]
-         creAppFun            : TailCtx -> CR.CRArray CR.SExp -> CR.Exp
-         creLamArgL           : [HsName]
-         creLamBody           : CR.Exp
-         crse                 : CR.SExp
-         mbFFIApp             : Maybe ( Ty
-                                  , Bool
-                                  , FFIWay
-                                  , ForeignEnt
-                                  , [Ty]
-                                  )
-         mbLam                : Maybe [HsName]
-         mbVar                : Maybe HsName
-         refOffsetMax         : Int
-         stackDepthMax        : Int
-         vref                 : CR.RRef
-   alternatives:
-      alternative Var:
-         child ref            : {ACoreBindRef}
-         visit 0:
-            local nm          : {HsName}
-            local whatBelow   : _
-         visit 1:
-            intra nm          : {HsName}
-         visit 2:
-            local vref        : _
-            local crse        : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local mbVar       : {Maybe HsName}
-            local stackDepthHere : _
-            intra nm          : {HsName}
-      alternative Int:
-         child int            : {Int}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local crse        : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative Char:
-         child char           : {Char}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local crse        : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative String:
-         child str            : {String}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local crse        : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative Integer:
-         child integer        : {Integer}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local crse        : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative Tup:
-         child tag            : {CTag}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative Let:
-         child categ          : {CBindCateg}
-         child binds          : CBindL 
-         child body           : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-            local isGlobal    : _
-            local _tup1       : _
-         visit 2:
-            local evalCtx     : _
-            local letBindingsCateg : _
-            local _tup2       : _
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local nm2refNew   : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local refOffsetMax : _
-            local stackDepthMax : _
-            local vref        : _
-            intra isGlobal    : _
-            intra _tup1       : _
-      alternative App:
-         child func           : CExpr 
-         child arg            : CBound 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-            local isGlobal    : _
-         visit 2:
-            local tailCtx     : _
-            local isTopTup    : _
-            local creAppFun   : _
-            local stackDepthFunc : _
-            local letBindingsCateg : _
-            local creAppArgL  : _
-            local isTopApp'   : _
-            local creBase     : _
-            local cre         : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthMax : _
-            local vref        : _
-      alternative Lam:
-         child bind           : CBind 
-         child body           : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-            local isTopLam    : _
-            local lev         : _
-            local _tup3       : _
-            local refOffsetBody : _
-            local refOffset   : _
-            local isGlobal    : _
-            local nm2refNew   : _
-         visit 2:
-            local nm2ref      : _
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local creLamArgL  : _
-            local stackDepthMax : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamBody  : _
-            local crse        : _
-            local argNm       : _
-            local refOffsetMax : _
-            local vref        : _
-            intra nm2refNew   : _
-            intra isTopLam    : _
-            intra refOffsetBody : _
-      alternative Case:
-         child expr           : CExpr 
-         child alts           : CAltL 
-         child dflt           : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthHere : _
-            local stackDepthMax : _
-            local vref        : _
-      alternative CaseAltFail:
-         child failReason     : {CaseAltFailReason}
-         child errorExpr      : CExpr 
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative TupDel:
-         child expr           : CExpr 
-         child tag            : {CTag}
-         child nm             : {HsName}
-         child offset         : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local isTopApp    : {Bool}
-            local isTopTup    : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative TupIns:
-         child expr           : CExpr 
-         child tag            : {CTag}
-         child nm             : {HsName}
-         child offset         : CExpr 
-         child fldExpr        : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local isTopApp    : {Bool}
-            local isTopTup    : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative TupUpd:
-         child expr           : CExpr 
-         child tag            : {CTag}
-         child nm             : {HsName}
-         child offset         : CExpr 
-         child fldExpr        : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local isTopApp    : {Bool}
-            local isTopTup    : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative FFI:
-         child callconv       : {FFIWay}
-         child safety         : {String}
-         child impEnt         : {ForeignEnt}
-         child ty             : {Ty}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local foreignEntInfo : _
-            local creEntMb    : _
-            local creMk       : _
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local mbPrimNeedEval : {Maybe PrimitiveNeedsEval}
-            local primResNeedsEval : {Bool}
-            local argTyLresTy : {( TyL, Ty )}
-            local resTy       : _
-            local argTyL      : {TyL}
-            local stackDepthHere : _
-            local vref        : _
-      alternative Dbg:
-         child info           : {String}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative Hole:
-         child uid            : {UID}
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative HoleLet:
-         child bindsUid       : {UID}
-         child body           : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local stackDepthHere : _
-            local vref        : _
-      alternative CoeArg:
-         visit 0:
-            local whatBelow   : _
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local stackDepthHere : _
-            local vref        : _
-      alternative ImplsApp:
-         child func           : CExpr 
-         child uid            : {ImplsVarId}
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local stackDepthHere : _
-            local vref        : _
-      alternative ImplsLam:
-         child uid            : {ImplsVarId}
-         child body           : CExpr 
-         visit 0:
-            local whatBelow   : _
-         visit 1:
-            local whatAbove   : {WhatExpr}
-         visit 2:
-            local creBase     : _
-            local cre         : _
-            local creAppArgL  : _
-            local creAppFun   : _
-            local creLamArgL  : _
-            local creLamBody  : _
-            local crse        : _
-            local isTopTup    : _
-            local isTopApp    : {Bool}
-            local stackDepthHere : _
-            local vref        : _
-      alternative Ann:
-         child ann            : CExprAnn 
-         child expr           : CExpr 
-         visit 2:
-            local crse        : _
-            local vref        : _
--}
--- cata
-sem_CExpr :: CExpr ->
-             T_CExpr
-sem_CExpr (CExpr_Var _ref) =
-    (sem_CExpr_Var _ref)
-sem_CExpr (CExpr_Int _int) =
-    (sem_CExpr_Int _int)
-sem_CExpr (CExpr_Char _char) =
-    (sem_CExpr_Char _char)
-sem_CExpr (CExpr_String _str) =
-    (sem_CExpr_String _str)
-sem_CExpr (CExpr_Integer _integer) =
-    (sem_CExpr_Integer _integer)
-sem_CExpr (CExpr_Tup _tag) =
-    (sem_CExpr_Tup _tag)
-sem_CExpr (CExpr_Let _categ _binds _body) =
-    (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
-sem_CExpr (CExpr_App _func _arg) =
-    (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
-sem_CExpr (CExpr_Lam _bind _body) =
-    (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
-sem_CExpr (CExpr_Case _expr _alts _dflt) =
-    (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
-sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
-    (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
-sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
-    (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
-sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
-    (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
-sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
-    (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
-sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
-    (sem_CExpr_FFI _callconv _safety _impEnt _ty)
-sem_CExpr (CExpr_Dbg _info) =
-    (sem_CExpr_Dbg _info)
-sem_CExpr (CExpr_Hole _uid) =
-    (sem_CExpr_Hole _uid)
-sem_CExpr (CExpr_HoleLet _bindsUid _body) =
-    (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
-sem_CExpr (CExpr_CoeArg) =
-    (sem_CExpr_CoeArg)
-sem_CExpr (CExpr_ImplsApp _func _uid) =
-    (sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
-sem_CExpr (CExpr_ImplsLam _uid _body) =
-    (sem_CExpr_ImplsLam _uid (sem_CExpr _body))
-sem_CExpr (CExpr_Ann _ann _expr) =
-    (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
--- semantic domain
-type T_CExpr = ( WhatExpr,T_CExpr_1)
-type T_CExpr_1 = Int ->
-                 Int ->
-                 WhatExpr ->
-                 ( (CR.Nm2RefMp),Int,T_CExpr_2)
-type T_CExpr_2 = EvalCtx ->
-                 (HsName -> Maybe Int) ->
-                 Bool ->
-                 Bool ->
-                 Int ->
-                 (CR.Nm2RefMp) ->
-                 EHCOpts ->
-                 Int ->
-                 TailCtx ->
-                 ( AppFunKind,([(HsName, CR.Bind)]),(CR.Exp),([CR.SExp]),(TailCtx -> CR.CRArray CR.SExp -> CR.Exp),([HsName]),(CR.Exp),(CR.SExp),(Maybe ( Ty
-                                                                                                                                                                                    , Bool
-                                                                                                                                                                                    , FFIWay
-                                                                                                                                                                                    , ForeignEnt
-                                                                                                                                                                                    , [Ty]
-                                                                                                                                                                                    )),(Maybe [HsName]),(Maybe HsName),Int,Int,Int,(CR.RRef))
-sem_CExpr_Var :: ACoreBindRef ->
-                 T_CExpr
-sem_CExpr_Var ref_ =
-    (case (acbrefNm ref_) of
-     { _nm ->
-     (case (ExprIsVar _nm) of
-      { _whatBelow ->
-      (case (_whatBelow) of
-       { _lhsOwhatBelow ->
-       (case ((let sem_CExpr_Var_1 :: T_CExpr_1
-                   sem_CExpr_Var_1 =
-                       (\ _lhsIlev
-                          _lhsIrefOffset
-                          _lhsIwhatAbove ->
-                            (case (CR.emptyNm2RefMp) of
-                             { _lhsOnm2refGath ->
-                             (case (_lhsIrefOffset) of
-                              { _lhsOrefOffset ->
-                              (case ((let sem_CExpr_Var_2 :: T_CExpr_2
-                                          sem_CExpr_Var_2 =
-                                              (\ _lhsIevalCtx
-                                                 _lhsIimpNmLkup
-                                                 _lhsIisTopApp
-                                                 _lhsIisTopTup
-                                                 _lhsImodNr
-                                                 _lhsInm2ref
-                                                 _lhsIopts
-                                                 _lhsIstackDepth
-                                                 _lhsItailCtx ->
-                                                   (case (AppFunKind_Fun ref_) of
-                                                    { _lhsOappFunKind ->
-                                                    (case ([]) of
-                                                     { _lhsOcrb ->
-                                                     (case (maybe (CR.RRef_Dbg _nm) (CR.rrefToImp _lhsIimpNmLkup . CR.rrefToDif _lhsIlev) $ CR.nm2refLookup _nm _lhsInm2ref) of
-                                                      { _vref ->
-                                                      (case (CR.mkVar' _vref) of
-                                                       { _crse ->
-                                                       (case (taileval _lhsItailCtx $ CR.mkExp _crse) of
-                                                        { _creBase ->
-                                                        (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                         { _cre ->
-                                                         (case (_cre) of
-                                                          { _lhsOcre ->
-                                                          (case ([]) of
-                                                           { _creAppArgL ->
-                                                           (case (_creAppArgL) of
-                                                            { _lhsOcreAppArgL ->
-                                                            (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                             { _creAppFun ->
-                                                             (case (_creAppFun) of
-                                                              { _lhsOcreAppFun ->
-                                                              (case ([]) of
-                                                               { _creLamArgL ->
-                                                               (case (_creLamArgL) of
-                                                                { _lhsOcreLamArgL ->
-                                                                (case (_cre) of
-                                                                 { _creLamBody ->
-                                                                 (case (_creLamBody) of
-                                                                  { _lhsOcreLamBody ->
-                                                                  (case (_crse) of
-                                                                   { _lhsOcrse ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbFFIApp ->
-                                                                    (case (Nothing) of
-                                                                     { _lhsOmbLam ->
-                                                                     (case (Just _nm) of
-                                                                      { _mbVar ->
-                                                                      (case (_mbVar) of
-                                                                       { _lhsOmbVar ->
-                                                                       (case (0) of
-                                                                        { _lhsOrefOffsetMax ->
-                                                                        (case (_lhsIstackDepth + 1) of
-                                                                         { _stackDepthHere ->
-                                                                         (case (_stackDepthHere) of
-                                                                          { _lhsOstackDepth ->
-                                                                          (case (_stackDepthHere) of
-                                                                           { _lhsOstackDepthMax ->
-                                                                           (case (_vref) of
-                                                                            { _lhsOvref ->
-                                                                            ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                      in  sem_CExpr_Var_2)) of
-                               { ( sem_CExpr_2) ->
-                               ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-               in  sem_CExpr_Var_1)) of
-        { ( sem_CExpr_1) ->
-        ( _lhsOwhatBelow,sem_CExpr_1) }) }) }) })
-sem_CExpr_Int :: Int ->
-                 T_CExpr
-sem_CExpr_Int int_ =
-    (case (ExprIsInt int_) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Int_1 :: T_CExpr_1
-                  sem_CExpr_Int_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_Int_2 :: T_CExpr_2
-                                         sem_CExpr_Int_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.mkInt' int_) of
-                                                     { _crse ->
-                                                     (case (CR.mkExp _crse) of
-                                                      { _creBase ->
-                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                       { _cre ->
-                                                       (case (_cre) of
-                                                        { _lhsOcre ->
-                                                        (case ([]) of
-                                                         { _creAppArgL ->
-                                                         (case (_creAppArgL) of
-                                                          { _lhsOcreAppArgL ->
-                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                           { _creAppFun ->
-                                                           (case (_creAppFun) of
-                                                            { _lhsOcreAppFun ->
-                                                            (case ([]) of
-                                                             { _creLamArgL ->
-                                                             (case (_creLamArgL) of
-                                                              { _lhsOcreLamArgL ->
-                                                              (case (_cre) of
-                                                               { _creLamBody ->
-                                                               (case (_creLamBody) of
-                                                                { _lhsOcreLamBody ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_Int_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_Int_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Char :: Char ->
-                  T_CExpr
-sem_CExpr_Char char_ =
-    (case (ExprIsOtherWHNF) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Char_1 :: T_CExpr_1
-                  sem_CExpr_Char_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_Char_2 :: T_CExpr_2
-                                         sem_CExpr_Char_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.mkChar' char_) of
-                                                     { _crse ->
-                                                     (case (CR.mkExp _crse) of
-                                                      { _creBase ->
-                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                       { _cre ->
-                                                       (case (_cre) of
-                                                        { _lhsOcre ->
-                                                        (case ([]) of
-                                                         { _creAppArgL ->
-                                                         (case (_creAppArgL) of
-                                                          { _lhsOcreAppArgL ->
-                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                           { _creAppFun ->
-                                                           (case (_creAppFun) of
-                                                            { _lhsOcreAppFun ->
-                                                            (case ([]) of
-                                                             { _creLamArgL ->
-                                                             (case (_creLamArgL) of
-                                                              { _lhsOcreLamArgL ->
-                                                              (case (_cre) of
-                                                               { _creLamBody ->
-                                                               (case (_creLamBody) of
-                                                                { _lhsOcreLamBody ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_Char_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_Char_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_String :: String ->
-                    T_CExpr
-sem_CExpr_String str_ =
-    (case (ExprIsOtherWHNF) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_String_1 :: T_CExpr_1
-                  sem_CExpr_String_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_String_2 :: T_CExpr_2
-                                         sem_CExpr_String_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.mkString' str_) of
-                                                     { _crse ->
-                                                     (case (CR.mkExp _crse) of
-                                                      { _creBase ->
-                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                       { _cre ->
-                                                       (case (_cre) of
-                                                        { _lhsOcre ->
-                                                        (case ([]) of
-                                                         { _creAppArgL ->
-                                                         (case (_creAppArgL) of
-                                                          { _lhsOcreAppArgL ->
-                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                           { _creAppFun ->
-                                                           (case (_creAppFun) of
-                                                            { _lhsOcreAppFun ->
-                                                            (case ([]) of
-                                                             { _creLamArgL ->
-                                                             (case (_creLamArgL) of
-                                                              { _lhsOcreLamArgL ->
-                                                              (case (_cre) of
-                                                               { _creLamBody ->
-                                                               (case (_creLamBody) of
-                                                                { _lhsOcreLamBody ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_String_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_String_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Integer :: Integer ->
-                     T_CExpr
-sem_CExpr_Integer integer_ =
-    (case (ExprIsOtherWHNF) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Integer_1 :: T_CExpr_1
-                  sem_CExpr_Integer_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_Integer_2 :: T_CExpr_2
-                                         sem_CExpr_Integer_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.SExp_Integer integer_) of
-                                                     { _crse ->
-                                                     (case (CR.mkExp _crse) of
-                                                      { _creBase ->
-                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                       { _cre ->
-                                                       (case (_cre) of
-                                                        { _lhsOcre ->
-                                                        (case ([]) of
-                                                         { _creAppArgL ->
-                                                         (case (_creAppArgL) of
-                                                          { _lhsOcreAppArgL ->
-                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                           { _creAppFun ->
-                                                           (case (_creAppFun) of
-                                                            { _lhsOcreAppFun ->
-                                                            (case ([]) of
-                                                             { _creLamArgL ->
-                                                             (case (_creLamArgL) of
-                                                              { _lhsOcreLamArgL ->
-                                                              (case (_cre) of
-                                                               { _creLamBody ->
-                                                               (case (_creLamBody) of
-                                                                { _lhsOcreLamBody ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_Integer_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_Integer_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Tup :: CTag ->
-                 T_CExpr
-sem_CExpr_Tup tag_ =
-    (case (ExprIsTup tag_) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Tup_1 :: T_CExpr_1
-                  sem_CExpr_Tup_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_Tup_2 :: T_CExpr_2
-                                         sem_CExpr_Tup_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_Tag tag_) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.mkTup (ctagTag tag_) []) of
-                                                     { _creBase ->
-                                                     (case (_creBase) of
-                                                      { _cre ->
-                                                      (case (_cre) of
-                                                       { _lhsOcre ->
-                                                       (case ([]) of
-                                                        { _creAppArgL ->
-                                                        (case (_creAppArgL) of
-                                                         { _lhsOcreAppArgL ->
-                                                         (case (\_ -> cseCtxWrap TailCtx_Plain . CR.mkTup' (ctagTag tag_)) of
-                                                          { _creAppFun ->
-                                                          (case (_creAppFun) of
-                                                           { _lhsOcreAppFun ->
-                                                           (case ([]) of
-                                                            { _creLamArgL ->
-                                                            (case (_creLamArgL) of
-                                                             { _lhsOcreLamArgL ->
-                                                             (case (_cre) of
-                                                              { _creLamBody ->
-                                                              (case (_creLamBody) of
-                                                               { _lhsOcreLamBody ->
-                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                { _crse ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_Tup_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_Tup_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Let :: CBindCateg ->
-                 T_CBindL ->
-                 T_CExpr ->
-                 T_CExpr
-sem_CExpr_Let categ_ binds_ body_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Let_1 :: T_CExpr_1
-                  sem_CExpr_Let_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _bodyOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _bindsOrefOffset ->
-                              (case (_lhsIlev) of
-                               { _bindsOlev ->
-                               (case (_lhsIlev == cLevModule) of
-                                { _isGlobal ->
-                                (case (_isGlobal) of
-                                 { _bindsOisGlobal ->
-                                 (case (binds_ _bindsOisGlobal _bindsOlev _bindsOrefOffset) of
-                                  { ( _bindsInm2refGath,_bindsIrefOffset,binds_1) ->
-                                      (case (_bindsIrefOffset) of
-                                       { _bodyOrefOffset ->
-                                       (case (_lhsIlev) of
-                                        { _bodyOlev ->
-                                        (case (body_) of
-                                         { ( _bodyIwhatBelow,body_1) ->
-                                             (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
-                                              { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
-                                                  (case (if _isGlobal
-                                                         then (CR.emptyNm2RefMp, _bindsInm2refGath `CR.nm2refUnion` _bodyInm2refGath)
-                                                         else (_bindsInm2refGath, CR.emptyNm2RefMp)) of
-                                                   { __tup1 ->
-                                                   (case (__tup1) of
-                                                    { (_,_lhsOnm2refGath) ->
-                                                    (case (_bodyIrefOffset) of
-                                                     { _lhsOrefOffset ->
-                                                     (case ((let sem_CExpr_Let_2 :: T_CExpr_2
-                                                                 sem_CExpr_Let_2 =
-                                                                     (\ _lhsIevalCtx
-                                                                        _lhsIimpNmLkup
-                                                                        _lhsIisTopApp
-                                                                        _lhsIisTopTup
-                                                                        _lhsImodNr
-                                                                        _lhsInm2ref
-                                                                        _lhsIopts
-                                                                        _lhsIstackDepth
-                                                                        _lhsItailCtx ->
-                                                                          (case (AppFunKind_NoApp) of
-                                                                           { _lhsOappFunKind ->
-                                                                           (case (_lhsIstackDepth) of
-                                                                            { _bindsOstackDepth ->
-                                                                            (case (if categ_ == CBindCateg_Strict
-                                                                                   then EvalCtx_Eval
-                                                                                   else EvalCtx_Thunk) of
-                                                                             { _evalCtx ->
-                                                                             (case (_evalCtx) of
-                                                                              { _bindsOevalCtx ->
-                                                                              (case (_lhsIopts) of
-                                                                               { _bindsOopts ->
-                                                                               (case (_lhsImodNr) of
-                                                                                { _bindsOmodNr ->
-                                                                                (case (categ_) of
-                                                                                 { _letBindingsCateg ->
-                                                                                 (case (_letBindingsCateg) of
-                                                                                  { _bindsOletBindingsCateg ->
-                                                                                  (case (_lhsIimpNmLkup) of
-                                                                                   { _bindsOimpNmLkup ->
-                                                                                   (case (if _isGlobal
-                                                                                          then (_lhsInm2ref, _lhsInm2ref)
-                                                                                          else ( case categ_ of
-                                                                                                   CBindCateg_Rec -> _bindsInm2refGath `CR.nm2refUnion` _lhsInm2ref
-                                                                                                   _              -> _lhsInm2ref `CR.nm2refUnion` _bindsInm2refGath
-                                                                                               , _bindsInm2refGath `CR.nm2refUnion` _lhsInm2ref
-                                                                                               )) of
-                                                                                    { __tup2 ->
-                                                                                    (case (__tup2) of
-                                                                                     { (_bindsOnm2ref,_) ->
-                                                                                     (case (binds_1 _bindsOevalCtx _bindsOimpNmLkup _bindsOletBindingsCateg _bindsOmodNr _bindsOnm2ref _bindsOopts _bindsOstackDepth) of
-                                                                                      { ( _bindsIcrb,_bindsIrefOffsetMax,_bindsIstackDepth,_bindsIstackDepthMax) ->
-                                                                                          (case (_bindsIstackDepth) of
-                                                                                           { _bodyOstackDepth ->
-                                                                                           (case (_lhsIimpNmLkup) of
-                                                                                            { _bodyOimpNmLkup ->
-                                                                                            (case (__tup2) of
-                                                                                             { (_,_bodyOnm2ref) ->
-                                                                                             (case (_lhsItailCtx) of
-                                                                                              { _bodyOtailCtx ->
-                                                                                              (case (_lhsIopts) of
-                                                                                               { _bodyOopts ->
-                                                                                               (case (_lhsImodNr) of
-                                                                                                { _bodyOmodNr ->
-                                                                                                (case (True) of
-                                                                                                 { _isTopTup ->
-                                                                                                 (case (_isTopTup) of
-                                                                                                  { _bodyOisTopTup ->
-                                                                                                  (case (True) of
-                                                                                                   { _isTopApp ->
-                                                                                                   (case (_isTopApp) of
-                                                                                                    { _bodyOisTopApp ->
-                                                                                                    (case (_evalCtx) of
-                                                                                                     { _bodyOevalCtx ->
-                                                                                                     (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
-                                                                                                      { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
-                                                                                                          (case (if _isGlobal
-                                                                                                                 then _bindsIcrb ++ _bodyIcrb
-                                                                                                                 else []) of
-                                                                                                           { _lhsOcrb ->
-                                                                                                           (case (__tup1) of
-                                                                                                            { (_nm2refNew,_) ->
-                                                                                                            (case (if _isGlobal
-                                                                                                                   then _bodyIcre
-                                                                                                                   else CR.Exp_Let                _lhsIrefOffset (CR.nm2RefMpInverse _nm2refNew) (CR.crarrayFromList $ map snd _bindsIcrb) _bodyIcre) of
-                                                                                                             { _creBase ->
-                                                                                                             (case (_creBase) of
-                                                                                                              { _cre ->
-                                                                                                              (case (_cre) of
-                                                                                                               { _lhsOcre ->
-                                                                                                               (case ([]) of
-                                                                                                                { _creAppArgL ->
-                                                                                                                (case (_creAppArgL) of
-                                                                                                                 { _lhsOcreAppArgL ->
-                                                                                                                 (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                                                  { _creAppFun ->
-                                                                                                                  (case (_creAppFun) of
-                                                                                                                   { _lhsOcreAppFun ->
-                                                                                                                   (case ([]) of
-                                                                                                                    { _creLamArgL ->
-                                                                                                                    (case (_creLamArgL) of
-                                                                                                                     { _lhsOcreLamArgL ->
-                                                                                                                     (case (_cre) of
-                                                                                                                      { _creLamBody ->
-                                                                                                                      (case (_creLamBody) of
-                                                                                                                       { _lhsOcreLamBody ->
-                                                                                                                       (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                                        { _crse ->
-                                                                                                                        (case (_crse) of
-                                                                                                                         { _lhsOcrse ->
-                                                                                                                         (case (Nothing) of
-                                                                                                                          { _lhsOmbFFIApp ->
-                                                                                                                          (case (Nothing) of
-                                                                                                                           { _lhsOmbLam ->
-                                                                                                                           (case (Nothing) of
-                                                                                                                            { _lhsOmbVar ->
-                                                                                                                            (case (max _bindsIrefOffsetMax _bodyIrefOffsetMax) of
-                                                                                                                             { _refOffsetMax ->
-                                                                                                                             (case (_refOffsetMax) of
-                                                                                                                              { _lhsOrefOffsetMax ->
-                                                                                                                              (case (_bodyIstackDepth) of
-                                                                                                                               { _lhsOstackDepth ->
-                                                                                                                               (case (max _bindsIstackDepthMax _bodyIstackDepthMax) of
-                                                                                                                                { _stackDepthMax ->
-                                                                                                                                (case (_stackDepthMax) of
-                                                                                                                                 { _lhsOstackDepthMax ->
-                                                                                                                                 (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                                  { _vref ->
-                                                                                                                                  (case (_vref) of
-                                                                                                                                   { _lhsOvref ->
-                                                                                                                                   ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                             in  sem_CExpr_Let_2)) of
-                                                      { ( sem_CExpr_2) ->
-                                                      ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_Let_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_App :: T_CExpr ->
-                 T_CBound ->
-                 T_CExpr
-sem_CExpr_App func_ arg_ =
-    (case (func_) of
-     { ( _funcIwhatBelow,func_1) ->
-         (case (maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow) of
-          { _whatBelow ->
-          (case (_whatBelow) of
-           { _lhsOwhatBelow ->
-           (case ((let sem_CExpr_App_1 :: T_CExpr_1
-                       sem_CExpr_App_1 =
-                           (\ _lhsIlev
-                              _lhsIrefOffset
-                              _lhsIwhatAbove ->
-                                (case (_lhsIrefOffset) of
-                                 { _funcOrefOffset ->
-                                 (case (maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove) of
-                                  { _whatAbove ->
-                                  (case (_whatAbove) of
-                                   { _funcOwhatAbove ->
-                                   (case (_lhsIlev) of
-                                    { _funcOlev ->
-                                    (case (func_1 _funcOlev _funcOrefOffset _funcOwhatAbove) of
-                                     { ( _funcInm2refGath,_funcIrefOffset,func_2) ->
-                                         (case (_funcIrefOffset) of
-                                          { _argOrefOffset ->
-                                          (case (_lhsIlev) of
-                                           { _argOlev ->
-                                           (case (False) of
-                                            { _isGlobal ->
-                                            (case (_isGlobal) of
-                                             { _argOisGlobal ->
-                                             (case (hsnUnknown) of
-                                              { _argOnm ->
-                                              (case (EvalCtx_Thunk) of
-                                               { _argOevalCtx ->
-                                               (case (arg_ _argOevalCtx _argOisGlobal _argOlev _argOnm _argOrefOffset) of
-                                                { ( _argInm2refGath,_argIrefOffset,arg_1) ->
-                                                    (case (_funcInm2refGath `CR.nm2refUnion` _argInm2refGath) of
-                                                     { _lhsOnm2refGath ->
-                                                     (case (_argIrefOffset) of
-                                                      { _lhsOrefOffset ->
-                                                      (case ((let sem_CExpr_App_2 :: T_CExpr_2
-                                                                  sem_CExpr_App_2 =
-                                                                      (\ _lhsIevalCtx
-                                                                         _lhsIimpNmLkup
-                                                                         _lhsIisTopApp
-                                                                         _lhsIisTopTup
-                                                                         _lhsImodNr
-                                                                         _lhsInm2ref
-                                                                         _lhsIopts
-                                                                         _lhsIstackDepth
-                                                                         _lhsItailCtx ->
-                                                                           (case (TailCtx_Plain) of
-                                                                            { _tailCtx ->
-                                                                            (case (_tailCtx) of
-                                                                             { _funcOtailCtx ->
-                                                                             (case (_lhsIstackDepth) of
-                                                                              { _funcOstackDepth ->
-                                                                              (case (_lhsIopts) of
-                                                                               { _funcOopts ->
-                                                                               (case (_lhsInm2ref) of
-                                                                                { _funcOnm2ref ->
-                                                                                (case (_lhsImodNr) of
-                                                                                 { _funcOmodNr ->
-                                                                                 (case (True) of
-                                                                                  { _isTopTup ->
-                                                                                  (case (_isTopTup) of
-                                                                                   { _funcOisTopTup ->
-                                                                                   (case (_lhsIimpNmLkup) of
-                                                                                    { _funcOimpNmLkup ->
-                                                                                    (case (_lhsIevalCtx) of
-                                                                                     { _funcOevalCtx ->
-                                                                                     (case (False) of
-                                                                                      { _funcOisTopApp ->
-                                                                                      (case (func_2 _funcOevalCtx _funcOimpNmLkup _funcOisTopApp _funcOisTopTup _funcOmodNr _funcOnm2ref _funcOopts _funcOstackDepth _funcOtailCtx) of
-                                                                                       { ( _funcIappFunKind,_funcIcrb,_funcIcre,_funcIcreAppArgL,_funcIcreAppFun,_funcIcreLamArgL,_funcIcreLamBody,_funcIcrse,_funcImbFFIApp,_funcImbLam,_funcImbVar,_funcIrefOffsetMax,_funcIstackDepth,_funcIstackDepthMax,_funcIvref) ->
-                                                                                           (case (_funcIappFunKind) of
-                                                                                            { _lhsOappFunKind ->
-                                                                                            (case ([]) of
-                                                                                             { _lhsOcrb ->
-                                                                                             (case (_lhsInm2ref) of
-                                                                                              { _argOnm2ref ->
-                                                                                              (case (_lhsIimpNmLkup) of
-                                                                                               { _argOimpNmLkup ->
-                                                                                               (case (_funcIcreAppFun) of
-                                                                                                { _creAppFun ->
-                                                                                                (case (if whatExprIsTup _funcIwhatBelow || whatExprIsFFI _funcIwhatBelow then _lhsIstackDepth else _funcIstackDepth) of
-                                                                                                 { _stackDepthFunc ->
-                                                                                                 (case (_stackDepthFunc) of
-                                                                                                  { _argOstackDepth ->
-                                                                                                  (case (_lhsIopts) of
-                                                                                                   { _argOopts ->
-                                                                                                   (case (_lhsImodNr) of
-                                                                                                    { _argOmodNr ->
-                                                                                                    (case (acoreBindcategPlain) of
-                                                                                                     { _letBindingsCateg ->
-                                                                                                     (case (_letBindingsCateg) of
-                                                                                                      { _argOletBindingsCateg ->
-                                                                                                      (case (_isTopTup) of
-                                                                                                       { _argOisTopTup ->
-                                                                                                       (case (True) of
-                                                                                                        { _argOisTopApp ->
-                                                                                                        (case (arg_1 _argOimpNmLkup _argOisTopApp _argOisTopTup _argOletBindingsCateg _argOmodNr _argOnm2ref _argOopts _argOstackDepth) of
-                                                                                                         { ( _argIcrb,_argIrefOffsetMax,_argIstackDepth,_argIstackDepthMax) ->
-                                                                                                             (case ((CR.exp2sexp $ snd $ head _argIcrb) : _funcIcreAppArgL) of
-                                                                                                              { _creAppArgL ->
-                                                                                                              (case (isNothing $ whatExprMbApp _lhsIwhatAbove) of
-                                                                                                               { _isTopApp' ->
-                                                                                                               (case (if _isTopApp'
-                                                                                                                      then _creAppFun _lhsItailCtx $ CR.crarrayFromList $ reverse _creAppArgL
-                                                                                                                      else CR.dbg "Core.ToCoreRun.CExpr.App.cre") of
-                                                                                                                { _creBase ->
-                                                                                                                (case (_creBase) of
-                                                                                                                 { _cre ->
-                                                                                                                 (case (_cre) of
-                                                                                                                  { _lhsOcre ->
-                                                                                                                  (case (_creAppArgL) of
-                                                                                                                   { _lhsOcreAppArgL ->
-                                                                                                                   (case (_creAppFun) of
-                                                                                                                    { _lhsOcreAppFun ->
-                                                                                                                    (case ([]) of
-                                                                                                                     { _creLamArgL ->
-                                                                                                                     (case (_creLamArgL) of
-                                                                                                                      { _lhsOcreLamArgL ->
-                                                                                                                      (case (_cre) of
-                                                                                                                       { _creLamBody ->
-                                                                                                                       (case (_creLamBody) of
-                                                                                                                        { _lhsOcreLamBody ->
-                                                                                                                        (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                                         { _crse ->
-                                                                                                                         (case (_crse) of
-                                                                                                                          { _lhsOcrse ->
-                                                                                                                          (case (_funcImbFFIApp) of
-                                                                                                                           { _lhsOmbFFIApp ->
-                                                                                                                           (case (Nothing) of
-                                                                                                                            { _lhsOmbLam ->
-                                                                                                                            (case (Nothing) of
-                                                                                                                             { _lhsOmbVar ->
-                                                                                                                             (case (_funcIrefOffsetMax `max` _argIrefOffsetMax) of
-                                                                                                                              { _lhsOrefOffsetMax ->
-                                                                                                                              (case (if _isTopApp' then _lhsIstackDepth + 1 else _argIstackDepth) of
-                                                                                                                               { _lhsOstackDepth ->
-                                                                                                                               (case (max _argIstackDepth _argIstackDepthMax) of
-                                                                                                                                { _stackDepthMax ->
-                                                                                                                                (case (_stackDepthMax) of
-                                                                                                                                 { _lhsOstackDepthMax ->
-                                                                                                                                 (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                                  { _vref ->
-                                                                                                                                  (case (_vref) of
-                                                                                                                                   { _lhsOvref ->
-                                                                                                                                   ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                              in  sem_CExpr_App_2)) of
-                                                       { ( sem_CExpr_2) ->
-                                                       ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                   in  sem_CExpr_App_1)) of
-            { ( sem_CExpr_1) ->
-            ( _lhsOwhatBelow,sem_CExpr_1) }) }) }) })
-sem_CExpr_Lam :: T_CBind ->
-                 T_CExpr ->
-                 T_CExpr
-sem_CExpr_Lam bind_ body_ =
-    (case (body_) of
-     { ( _bodyIwhatBelow,body_1) ->
-         (case (maybe (ExprIsLam 1 Nothing) (\a -> ExprIsLam (a + 1) Nothing) $ whatExprMbLam _bodyIwhatBelow) of
-          { _whatBelow ->
-          (case (_whatBelow) of
-           { _lhsOwhatBelow ->
-           (case ((let sem_CExpr_Lam_1 :: T_CExpr_1
-                       sem_CExpr_Lam_1 =
-                           (\ _lhsIlev
-                              _lhsIrefOffset
-                              _lhsIwhatAbove ->
-                                (case (case _lhsIwhatAbove of
-                                           ExprIsLam a mbnm    -> ExprIsLam (a + 1) mbnm
-                                           ExprIsBind nm       -> ExprIsLam 1       (Just nm)
-                                           _                   -> ExprIsLam 1       Nothing) of
-                                 { _whatAbove ->
-                                 (case (_whatAbove) of
-                                  { _bodyOwhatAbove ->
-                                  (case (not $ whatExprIsLam _lhsIwhatAbove) of
-                                   { _isTopLam ->
-                                   (case (if _isTopLam then _lhsIlev + 1 else _lhsIlev) of
-                                    { _lev ->
-                                    (case (_lev) of
-                                     { _bodyOlev ->
-                                     (case (if _isTopLam
-                                            then (0,1)
-                                            else (_lhsIrefOffset, _lhsIrefOffset + 1)) of
-                                      { __tup3 ->
-                                      (case (__tup3) of
-                                       { (_,_refOffsetBody) ->
-                                       (case (_refOffsetBody) of
-                                        { _bodyOrefOffset ->
-                                        (case (__tup3) of
-                                         { (_refOffset,_) ->
-                                         (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
-                                          { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
-                                              (case (_refOffset) of
-                                               { _bindOrefOffset ->
-                                               (case (_lev) of
-                                                { _bindOlev ->
-                                                (case (False) of
-                                                 { _isGlobal ->
-                                                 (case (_isGlobal) of
-                                                  { _bindOisGlobal ->
-                                                  (case (bind_ _bindOisGlobal _bindOlev _bindOrefOffset) of
-                                                   { ( _bindInm,_bindInm2refGath,_bindIrefOffset,bind_1) ->
-                                                       (case (Rel.insert _bindInm (CR.RRef_Loc _lev _refOffset) _bodyInm2refGath) of
-                                                        { _nm2refNew ->
-                                                        (case (if _isTopLam
-                                                               then CR.emptyNm2RefMp
-                                                               else _nm2refNew) of
-                                                         { _lhsOnm2refGath ->
-                                                         (case (_lhsIrefOffset) of
-                                                          { _lhsOrefOffset ->
-                                                          (case ((let sem_CExpr_Lam_2 :: T_CExpr_2
-                                                                      sem_CExpr_Lam_2 =
-                                                                          (\ _lhsIevalCtx
-                                                                             _lhsIimpNmLkup
-                                                                             _lhsIisTopApp
-                                                                             _lhsIisTopTup
-                                                                             _lhsImodNr
-                                                                             _lhsInm2ref
-                                                                             _lhsIopts
-                                                                             _lhsIstackDepth
-                                                                             _lhsItailCtx ->
-                                                                               (case (AppFunKind_NoApp) of
-                                                                                { _lhsOappFunKind ->
-                                                                                (case ([]) of
-                                                                                 { _lhsOcrb ->
-                                                                                 (case (if _isTopLam
-                                                                                        then _nm2refNew `CR.nm2refUnion` _lhsInm2ref
-                                                                                        else _lhsInm2ref) of
-                                                                                  { _nm2ref ->
-                                                                                  (case (_nm2ref) of
-                                                                                   { _bodyOnm2ref ->
-                                                                                   (case (_lhsIimpNmLkup) of
-                                                                                    { _bodyOimpNmLkup ->
-                                                                                    (case (_lhsIopts) of
-                                                                                     { _bodyOopts ->
-                                                                                     (case (_lhsImodNr) of
-                                                                                      { _bodyOmodNr ->
-                                                                                      (case (True) of
-                                                                                       { _isTopTup ->
-                                                                                       (case (_isTopTup) of
-                                                                                        { _bodyOisTopTup ->
-                                                                                        (case (True) of
-                                                                                         { _isTopApp ->
-                                                                                         (case (_isTopApp) of
-                                                                                          { _bodyOisTopApp ->
-                                                                                          (case (_lhsIevalCtx) of
-                                                                                           { _bodyOevalCtx ->
-                                                                                           (case (_refOffsetBody) of
-                                                                                            { _bodyOstackDepth ->
-                                                                                            (case (TailCtx_TailCall) of
-                                                                                             { _bodyOtailCtx ->
-                                                                                             (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
-                                                                                              { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
-                                                                                                  (case (_bindInm : _bodyIcreLamArgL) of
-                                                                                                   { _creLamArgL ->
-                                                                                                   (case (max _bodyIstackDepth _bodyIstackDepthMax) of
-                                                                                                    { _stackDepthMax ->
-                                                                                                    (case (if _isTopLam
-                                                                                                           then CR.Exp_Lam (whatExprMbBind _lhsIwhatAbove)            (length _creLamArgL)                     (_stackDepthMax) (CR.nm2RefMpInverse _nm2refNew) _bodyIcreLamBody
-                                                                                                           else CR.dbg "Core.ToCoreRun.CExpr.Lam.cre") of
-                                                                                                     { _creBase ->
-                                                                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                                                      { _cre ->
-                                                                                                      (case (_cre) of
-                                                                                                       { _lhsOcre ->
-                                                                                                       (case ([]) of
-                                                                                                        { _creAppArgL ->
-                                                                                                        (case (_creAppArgL) of
-                                                                                                         { _lhsOcreAppArgL ->
-                                                                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                                          { _creAppFun ->
-                                                                                                          (case (_creAppFun) of
-                                                                                                           { _lhsOcreAppFun ->
-                                                                                                           (case (_creLamArgL) of
-                                                                                                            { _lhsOcreLamArgL ->
-                                                                                                            (case (_bodyIcreLamBody) of
-                                                                                                             { _creLamBody ->
-                                                                                                             (case (_creLamBody) of
-                                                                                                              { _lhsOcreLamBody ->
-                                                                                                              (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                               { _crse ->
-                                                                                                               (case (_crse) of
-                                                                                                                { _lhsOcrse ->
-                                                                                                                (case (Nothing) of
-                                                                                                                 { _lhsOmbFFIApp ->
-                                                                                                                 (case (_bindInm) of
-                                                                                                                  { _argNm ->
-                                                                                                                  (case (Just $ maybe [_argNm] (_argNm:) _bodyImbLam) of
-                                                                                                                   { _lhsOmbLam ->
-                                                                                                                   (case (Nothing) of
-                                                                                                                    { _lhsOmbVar ->
-                                                                                                                    (case (max _bodyIrefOffset _bodyIrefOffsetMax) of
-                                                                                                                     { _refOffsetMax ->
-                                                                                                                     (case (_refOffsetMax) of
-                                                                                                                      { _lhsOrefOffsetMax ->
-                                                                                                                      (case (_bodyIstackDepth) of
-                                                                                                                       { _lhsOstackDepth ->
-                                                                                                                       (case (_stackDepthMax) of
-                                                                                                                        { _lhsOstackDepthMax ->
-                                                                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                         { _vref ->
-                                                                                                                         (case (_vref) of
-                                                                                                                          { _lhsOvref ->
-                                                                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                                  in  sem_CExpr_Lam_2)) of
-                                                           { ( sem_CExpr_2) ->
-                                                           ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                   in  sem_CExpr_Lam_1)) of
-            { ( sem_CExpr_1) ->
-            ( _lhsOwhatBelow,sem_CExpr_1) }) }) }) })
-sem_CExpr_Case :: T_CExpr ->
-                  T_CAltL ->
-                  T_CExpr ->
-                  T_CExpr
-sem_CExpr_Case expr_ alts_ dflt_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Case_1 :: T_CExpr_1
-                  sem_CExpr_Case_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _dfltOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _exprOrefOffset ->
-                              (case (expr_) of
-                               { ( _exprIwhatBelow,expr_1) ->
-                                   (case (_whatAbove) of
-                                    { _exprOwhatAbove ->
-                                    (case (_lhsIlev) of
-                                     { _exprOlev ->
-                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                          (case (_exprIrefOffset) of
-                                           { _altsOrefOffset ->
-                                           (case (alts_ _altsOrefOffset) of
-                                            { ( _altsIrefOffset,alts_1) ->
-                                                (case (_altsIrefOffset) of
-                                                 { _dfltOrefOffset ->
-                                                 (case (_lhsIlev) of
-                                                  { _dfltOlev ->
-                                                  (case (dflt_) of
-                                                   { ( _dfltIwhatBelow,dflt_1) ->
-                                                       (case (dflt_1 _dfltOlev _dfltOrefOffset _dfltOwhatAbove) of
-                                                        { ( _dfltInm2refGath,_dfltIrefOffset,dflt_2) ->
-                                                            (case (_exprInm2refGath `CR.nm2refUnion` _dfltInm2refGath) of
-                                                             { _lhsOnm2refGath ->
-                                                             (case (_dfltIrefOffset) of
-                                                              { _lhsOrefOffset ->
-                                                              (case ((let sem_CExpr_Case_2 :: T_CExpr_2
-                                                                          sem_CExpr_Case_2 =
-                                                                              (\ _lhsIevalCtx
-                                                                                 _lhsIimpNmLkup
-                                                                                 _lhsIisTopApp
-                                                                                 _lhsIisTopTup
-                                                                                 _lhsImodNr
-                                                                                 _lhsInm2ref
-                                                                                 _lhsIopts
-                                                                                 _lhsIstackDepth
-                                                                                 _lhsItailCtx ->
-                                                                                   (case (AppFunKind_NoApp) of
-                                                                                    { _lhsOappFunKind ->
-                                                                                    (case ([]) of
-                                                                                     { _lhsOcrb ->
-                                                                                     (case (_lhsItailCtx) of
-                                                                                      { _altsOtailCtx ->
-                                                                                      (case (_lhsInm2ref) of
-                                                                                       { _altsOnm2ref ->
-                                                                                       (case (_lhsIlev) of
-                                                                                        { _altsOlev ->
-                                                                                        (case (_lhsIimpNmLkup) of
-                                                                                         { _altsOimpNmLkup ->
-                                                                                         (case (_lhsInm2ref) of
-                                                                                          { _exprOnm2ref ->
-                                                                                          (case (_lhsIimpNmLkup) of
-                                                                                           { _exprOimpNmLkup ->
-                                                                                           (case (maybe CR.noRRef (\n -> maybe (CR.RRef_Dbg n) id $ CR.nm2refLookup n _lhsInm2ref) $ whatExprMbVar _exprIwhatBelow) of
-                                                                                            { _altsOscrutRef ->
-                                                                                            (case (_lhsIstackDepth) of
-                                                                                             { _altsOstackDepth ->
-                                                                                             (case (_lhsIopts) of
-                                                                                              { _altsOopts ->
-                                                                                              (case (_lhsImodNr) of
-                                                                                               { _altsOmodNr ->
-                                                                                               (case (_lhsIevalCtx) of
-                                                                                                { _altsOevalCtx ->
-                                                                                                (case (alts_1 _altsOevalCtx _altsOimpNmLkup _altsOlev _altsOmodNr _altsOnm2ref _altsOopts _altsOscrutRef _altsOstackDepth _altsOtailCtx) of
-                                                                                                 { ( _altsIcra,_altsIrefOffsetMax,_altsIstackDepth,_altsIstackDepthMax) ->
-                                                                                                     (case (_lhsIstackDepth) of
-                                                                                                      { _exprOstackDepth ->
-                                                                                                      (case (_lhsIopts) of
-                                                                                                       { _exprOopts ->
-                                                                                                       (case (_lhsImodNr) of
-                                                                                                        { _exprOmodNr ->
-                                                                                                        (case (True) of
-                                                                                                         { _isTopTup ->
-                                                                                                         (case (_isTopTup) of
-                                                                                                          { _exprOisTopTup ->
-                                                                                                          (case (True) of
-                                                                                                           { _isTopApp ->
-                                                                                                           (case (_isTopApp) of
-                                                                                                            { _exprOisTopApp ->
-                                                                                                            (case (_lhsIevalCtx) of
-                                                                                                             { _exprOevalCtx ->
-                                                                                                             (case (TailCtx_Plain) of
-                                                                                                              { _exprOtailCtx ->
-                                                                                                              (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                                                                               { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                                                                   (case (CR.Exp_Case (CR.mkVar' $ CR.RRef_Tag _exprIvref) $ CR.crarrayFromList _altsIcra) of
-                                                                                                                    { _creBase ->
-                                                                                                                    (case (_creBase) of
-                                                                                                                     { _cre ->
-                                                                                                                     (case (_cre) of
-                                                                                                                      { _lhsOcre ->
-                                                                                                                      (case ([]) of
-                                                                                                                       { _creAppArgL ->
-                                                                                                                       (case (_creAppArgL) of
-                                                                                                                        { _lhsOcreAppArgL ->
-                                                                                                                        (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                                                         { _creAppFun ->
-                                                                                                                         (case (_creAppFun) of
-                                                                                                                          { _lhsOcreAppFun ->
-                                                                                                                          (case ([]) of
-                                                                                                                           { _creLamArgL ->
-                                                                                                                           (case (_creLamArgL) of
-                                                                                                                            { _lhsOcreLamArgL ->
-                                                                                                                            (case (_cre) of
-                                                                                                                             { _creLamBody ->
-                                                                                                                             (case (_creLamBody) of
-                                                                                                                              { _lhsOcreLamBody ->
-                                                                                                                              (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                                               { _crse ->
-                                                                                                                               (case (_crse) of
-                                                                                                                                { _lhsOcrse ->
-                                                                                                                                (case (Nothing) of
-                                                                                                                                 { _lhsOmbFFIApp ->
-                                                                                                                                 (case (Nothing) of
-                                                                                                                                  { _lhsOmbLam ->
-                                                                                                                                  (case (Nothing) of
-                                                                                                                                   { _lhsOmbVar ->
-                                                                                                                                   (case (_lhsItailCtx) of
-                                                                                                                                    { _dfltOtailCtx ->
-                                                                                                                                    (case (_altsIstackDepth) of
-                                                                                                                                     { _dfltOstackDepth ->
-                                                                                                                                     (case (_lhsIopts) of
-                                                                                                                                      { _dfltOopts ->
-                                                                                                                                      (case (_lhsInm2ref) of
-                                                                                                                                       { _dfltOnm2ref ->
-                                                                                                                                       (case (_lhsImodNr) of
-                                                                                                                                        { _dfltOmodNr ->
-                                                                                                                                        (case (_isTopTup) of
-                                                                                                                                         { _dfltOisTopTup ->
-                                                                                                                                         (case (_isTopApp) of
-                                                                                                                                          { _dfltOisTopApp ->
-                                                                                                                                          (case (_lhsIimpNmLkup) of
-                                                                                                                                           { _dfltOimpNmLkup ->
-                                                                                                                                           (case (_lhsIevalCtx) of
-                                                                                                                                            { _dfltOevalCtx ->
-                                                                                                                                            (case (dflt_2 _dfltOevalCtx _dfltOimpNmLkup _dfltOisTopApp _dfltOisTopTup _dfltOmodNr _dfltOnm2ref _dfltOopts _dfltOstackDepth _dfltOtailCtx) of
-                                                                                                                                             { ( _dfltIappFunKind,_dfltIcrb,_dfltIcre,_dfltIcreAppArgL,_dfltIcreAppFun,_dfltIcreLamArgL,_dfltIcreLamBody,_dfltIcrse,_dfltImbFFIApp,_dfltImbLam,_dfltImbVar,_dfltIrefOffsetMax,_dfltIstackDepth,_dfltIstackDepthMax,_dfltIvref) ->
-                                                                                                                                                 (case (_exprIrefOffsetMax `max` _altsIrefOffsetMax `max` _dfltIrefOffsetMax) of
-                                                                                                                                                  { _lhsOrefOffsetMax ->
-                                                                                                                                                  (case (_lhsIstackDepth + 1) of
-                                                                                                                                                   { _stackDepthHere ->
-                                                                                                                                                   (case (_stackDepthHere) of
-                                                                                                                                                    { _lhsOstackDepth ->
-                                                                                                                                                    (case (max _exprIstackDepthMax _altsIstackDepthMax) of
-                                                                                                                                                     { _stackDepthMax ->
-                                                                                                                                                     (case (_stackDepthMax) of
-                                                                                                                                                      { _lhsOstackDepthMax ->
-                                                                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                                                       { _vref ->
-                                                                                                                                                       (case (_vref) of
-                                                                                                                                                        { _lhsOvref ->
-                                                                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                                      in  sem_CExpr_Case_2)) of
-                                                               { ( sem_CExpr_2) ->
-                                                               ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_Case_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_CaseAltFail :: CaseAltFailReason ->
-                         T_CExpr ->
-                         T_CExpr
-sem_CExpr_CaseAltFail failReason_ errorExpr_ =
-    (case (errorExpr_) of
-     { ( _errorExprIwhatBelow,errorExpr_1) ->
-         (case (_errorExprIwhatBelow) of
-          { _lhsOwhatBelow ->
-          (case ((let sem_CExpr_CaseAltFail_1 :: T_CExpr_1
-                      sem_CExpr_CaseAltFail_1 =
-                          (\ _lhsIlev
-                             _lhsIrefOffset
-                             _lhsIwhatAbove ->
-                               (case (ExprIsOther) of
-                                { _whatAbove ->
-                                (case (_whatAbove) of
-                                 { _errorExprOwhatAbove ->
-                                 (case (_lhsIrefOffset) of
-                                  { _errorExprOrefOffset ->
-                                  (case (_lhsIlev) of
-                                   { _errorExprOlev ->
-                                   (case (errorExpr_1 _errorExprOlev _errorExprOrefOffset _errorExprOwhatAbove) of
-                                    { ( _errorExprInm2refGath,_errorExprIrefOffset,errorExpr_2) ->
-                                        (case (_errorExprInm2refGath) of
-                                         { _lhsOnm2refGath ->
-                                         (case (_errorExprIrefOffset) of
-                                          { _lhsOrefOffset ->
-                                          (case ((let sem_CExpr_CaseAltFail_2 :: T_CExpr_2
-                                                      sem_CExpr_CaseAltFail_2 =
-                                                          (\ _lhsIevalCtx
-                                                             _lhsIimpNmLkup
-                                                             _lhsIisTopApp
-                                                             _lhsIisTopTup
-                                                             _lhsImodNr
-                                                             _lhsInm2ref
-                                                             _lhsIopts
-                                                             _lhsIstackDepth
-                                                             _lhsItailCtx ->
-                                                               (case (_lhsItailCtx) of
-                                                                { _errorExprOtailCtx ->
-                                                                (case (_lhsIstackDepth) of
-                                                                 { _errorExprOstackDepth ->
-                                                                 (case (_lhsIopts) of
-                                                                  { _errorExprOopts ->
-                                                                  (case (_lhsInm2ref) of
-                                                                   { _errorExprOnm2ref ->
-                                                                   (case (_lhsImodNr) of
-                                                                    { _errorExprOmodNr ->
-                                                                    (case (True) of
-                                                                     { _isTopTup ->
-                                                                     (case (_isTopTup) of
-                                                                      { _errorExprOisTopTup ->
-                                                                      (case (True) of
-                                                                       { _isTopApp ->
-                                                                       (case (_isTopApp) of
-                                                                        { _errorExprOisTopApp ->
-                                                                        (case (_lhsIimpNmLkup) of
-                                                                         { _errorExprOimpNmLkup ->
-                                                                         (case (_lhsIevalCtx) of
-                                                                          { _errorExprOevalCtx ->
-                                                                          (case (errorExpr_2 _errorExprOevalCtx _errorExprOimpNmLkup _errorExprOisTopApp _errorExprOisTopTup _errorExprOmodNr _errorExprOnm2ref _errorExprOopts _errorExprOstackDepth _errorExprOtailCtx) of
-                                                                           { ( _errorExprIappFunKind,_errorExprIcrb,_errorExprIcre,_errorExprIcreAppArgL,_errorExprIcreAppFun,_errorExprIcreLamArgL,_errorExprIcreLamBody,_errorExprIcrse,_errorExprImbFFIApp,_errorExprImbLam,_errorExprImbVar,_errorExprIrefOffsetMax,_errorExprIstackDepth,_errorExprIstackDepthMax,_errorExprIvref) ->
-                                                                               (case (_errorExprIappFunKind) of
-                                                                                { _lhsOappFunKind ->
-                                                                                (case ([]) of
-                                                                                 { _lhsOcrb ->
-                                                                                 (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                                  { _creBase ->
-                                                                                  (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                                   { _cre ->
-                                                                                   (case (_cre) of
-                                                                                    { _lhsOcre ->
-                                                                                    (case ([]) of
-                                                                                     { _creAppArgL ->
-                                                                                     (case (_creAppArgL) of
-                                                                                      { _lhsOcreAppArgL ->
-                                                                                      (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                       { _creAppFun ->
-                                                                                       (case (_creAppFun) of
-                                                                                        { _lhsOcreAppFun ->
-                                                                                        (case ([]) of
-                                                                                         { _creLamArgL ->
-                                                                                         (case (_creLamArgL) of
-                                                                                          { _lhsOcreLamArgL ->
-                                                                                          (case (_cre) of
-                                                                                           { _creLamBody ->
-                                                                                           (case (_creLamBody) of
-                                                                                            { _lhsOcreLamBody ->
-                                                                                            (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                             { _crse ->
-                                                                                             (case (_crse) of
-                                                                                              { _lhsOcrse ->
-                                                                                              (case (Nothing) of
-                                                                                               { _lhsOmbFFIApp ->
-                                                                                               (case (_errorExprImbLam) of
-                                                                                                { _lhsOmbLam ->
-                                                                                                (case (_errorExprImbVar) of
-                                                                                                 { _lhsOmbVar ->
-                                                                                                 (case (_errorExprIrefOffsetMax) of
-                                                                                                  { _lhsOrefOffsetMax ->
-                                                                                                  (case (_lhsIstackDepth + 1) of
-                                                                                                   { _stackDepthHere ->
-                                                                                                   (case (_stackDepthHere) of
-                                                                                                    { _lhsOstackDepth ->
-                                                                                                    (case (_stackDepthHere) of
-                                                                                                     { _lhsOstackDepthMax ->
-                                                                                                     (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                      { _vref ->
-                                                                                                      (case (_vref) of
-                                                                                                       { _lhsOvref ->
-                                                                                                       ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                  in  sem_CExpr_CaseAltFail_2)) of
-                                           { ( sem_CExpr_2) ->
-                                           ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }))
-                  in  sem_CExpr_CaseAltFail_1)) of
-           { ( sem_CExpr_1) ->
-           ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_TupDel :: T_CExpr ->
-                    CTag ->
-                    HsName ->
-                    T_CExpr ->
-                    T_CExpr
-sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_TupDel_1 :: T_CExpr_1
-                  sem_CExpr_TupDel_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _offsetOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _exprOrefOffset ->
-                              (case (expr_) of
-                               { ( _exprIwhatBelow,expr_1) ->
-                                   (case (_whatAbove) of
-                                    { _exprOwhatAbove ->
-                                    (case (_lhsIlev) of
-                                     { _exprOlev ->
-                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                          (case (_exprIrefOffset) of
-                                           { _offsetOrefOffset ->
-                                           (case (_lhsIlev) of
-                                            { _offsetOlev ->
-                                            (case (offset_) of
-                                             { ( _offsetIwhatBelow,offset_1) ->
-                                                 (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
-                                                  { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
-                                                      (case (_exprInm2refGath `CR.nm2refUnion` _offsetInm2refGath) of
-                                                       { _lhsOnm2refGath ->
-                                                       (case (_offsetIrefOffset) of
-                                                        { _lhsOrefOffset ->
-                                                        (case ((let sem_CExpr_TupDel_2 :: T_CExpr_2
-                                                                    sem_CExpr_TupDel_2 =
-                                                                        (\ _lhsIevalCtx
-                                                                           _lhsIimpNmLkup
-                                                                           _lhsIisTopApp
-                                                                           _lhsIisTopTup
-                                                                           _lhsImodNr
-                                                                           _lhsInm2ref
-                                                                           _lhsIopts
-                                                                           _lhsIstackDepth
-                                                                           _lhsItailCtx ->
-                                                                             (case (AppFunKind_NoApp) of
-                                                                              { _lhsOappFunKind ->
-                                                                              (case ([]) of
-                                                                               { _lhsOcrb ->
-                                                                               (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                                { _creBase ->
-                                                                                (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                                 { _cre ->
-                                                                                 (case (_cre) of
-                                                                                  { _lhsOcre ->
-                                                                                  (case ([]) of
-                                                                                   { _creAppArgL ->
-                                                                                   (case (_creAppArgL) of
-                                                                                    { _lhsOcreAppArgL ->
-                                                                                    (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                     { _creAppFun ->
-                                                                                     (case (_creAppFun) of
-                                                                                      { _lhsOcreAppFun ->
-                                                                                      (case ([]) of
-                                                                                       { _creLamArgL ->
-                                                                                       (case (_creLamArgL) of
-                                                                                        { _lhsOcreLamArgL ->
-                                                                                        (case (_cre) of
-                                                                                         { _creLamBody ->
-                                                                                         (case (_creLamBody) of
-                                                                                          { _lhsOcreLamBody ->
-                                                                                          (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                           { _crse ->
-                                                                                           (case (_crse) of
-                                                                                            { _lhsOcrse ->
-                                                                                            (case (Nothing) of
-                                                                                             { _lhsOmbFFIApp ->
-                                                                                             (case (Nothing) of
-                                                                                              { _lhsOmbLam ->
-                                                                                              (case (Nothing) of
-                                                                                               { _lhsOmbVar ->
-                                                                                               (case (_lhsItailCtx) of
-                                                                                                { _offsetOtailCtx ->
-                                                                                                (case (_lhsIstackDepth) of
-                                                                                                 { _exprOstackDepth ->
-                                                                                                 (case (_lhsItailCtx) of
-                                                                                                  { _exprOtailCtx ->
-                                                                                                  (case (_lhsIopts) of
-                                                                                                   { _exprOopts ->
-                                                                                                   (case (_lhsInm2ref) of
-                                                                                                    { _exprOnm2ref ->
-                                                                                                    (case (_lhsImodNr) of
-                                                                                                     { _exprOmodNr ->
-                                                                                                     (case (True) of
-                                                                                                      { _isTopApp ->
-                                                                                                      (case (_isTopApp) of
-                                                                                                       { _exprOisTopApp ->
-                                                                                                       (case (_lhsIimpNmLkup) of
-                                                                                                        { _exprOimpNmLkup ->
-                                                                                                        (case (_lhsIevalCtx) of
-                                                                                                         { _exprOevalCtx ->
-                                                                                                         (case (False) of
-                                                                                                          { _exprOisTopTup ->
-                                                                                                          (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                                                                           { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                                                               (case (_exprIstackDepth) of
-                                                                                                                { _offsetOstackDepth ->
-                                                                                                                (case (_lhsIopts) of
-                                                                                                                 { _offsetOopts ->
-                                                                                                                 (case (_lhsInm2ref) of
-                                                                                                                  { _offsetOnm2ref ->
-                                                                                                                  (case (_lhsImodNr) of
-                                                                                                                   { _offsetOmodNr ->
-                                                                                                                   (case (True) of
-                                                                                                                    { _isTopTup ->
-                                                                                                                    (case (_isTopTup) of
-                                                                                                                     { _offsetOisTopTup ->
-                                                                                                                     (case (_isTopApp) of
-                                                                                                                      { _offsetOisTopApp ->
-                                                                                                                      (case (_lhsIimpNmLkup) of
-                                                                                                                       { _offsetOimpNmLkup ->
-                                                                                                                       (case (_lhsIevalCtx) of
-                                                                                                                        { _offsetOevalCtx ->
-                                                                                                                        (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
-                                                                                                                         { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
-                                                                                                                             (case (_exprIrefOffsetMax `max` _offsetIrefOffsetMax) of
-                                                                                                                              { _lhsOrefOffsetMax ->
-                                                                                                                              (case (_lhsIstackDepth + 1) of
-                                                                                                                               { _stackDepthHere ->
-                                                                                                                               (case (_stackDepthHere) of
-                                                                                                                                { _lhsOstackDepth ->
-                                                                                                                                (case (_stackDepthHere) of
-                                                                                                                                 { _lhsOstackDepthMax ->
-                                                                                                                                 (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                                  { _vref ->
-                                                                                                                                  (case (_vref) of
-                                                                                                                                   { _lhsOvref ->
-                                                                                                                                   ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                                in  sem_CExpr_TupDel_2)) of
-                                                         { ( sem_CExpr_2) ->
-                                                         ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_TupDel_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_TupIns :: T_CExpr ->
-                    CTag ->
-                    HsName ->
-                    T_CExpr ->
-                    T_CExpr ->
-                    T_CExpr
-sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_TupIns_1 :: T_CExpr_1
-                  sem_CExpr_TupIns_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _fldExprOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _exprOrefOffset ->
-                              (case (expr_) of
-                               { ( _exprIwhatBelow,expr_1) ->
-                                   (case (_whatAbove) of
-                                    { _exprOwhatAbove ->
-                                    (case (_lhsIlev) of
-                                     { _exprOlev ->
-                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                          (case (_exprIrefOffset) of
-                                           { _offsetOrefOffset ->
-                                           (case (offset_) of
-                                            { ( _offsetIwhatBelow,offset_1) ->
-                                                (case (_whatAbove) of
-                                                 { _offsetOwhatAbove ->
-                                                 (case (_lhsIlev) of
-                                                  { _offsetOlev ->
-                                                  (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
-                                                   { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
-                                                       (case (_offsetIrefOffset) of
-                                                        { _fldExprOrefOffset ->
-                                                        (case (_lhsIlev) of
-                                                         { _fldExprOlev ->
-                                                         (case (fldExpr_) of
-                                                          { ( _fldExprIwhatBelow,fldExpr_1) ->
-                                                              (case (fldExpr_1 _fldExprOlev _fldExprOrefOffset _fldExprOwhatAbove) of
-                                                               { ( _fldExprInm2refGath,_fldExprIrefOffset,fldExpr_2) ->
-                                                                   (case (_exprInm2refGath `CR.nm2refUnion` _offsetInm2refGath `CR.nm2refUnion` _fldExprInm2refGath) of
-                                                                    { _lhsOnm2refGath ->
-                                                                    (case (_fldExprIrefOffset) of
-                                                                     { _lhsOrefOffset ->
-                                                                     (case ((let sem_CExpr_TupIns_2 :: T_CExpr_2
-                                                                                 sem_CExpr_TupIns_2 =
-                                                                                     (\ _lhsIevalCtx
-                                                                                        _lhsIimpNmLkup
-                                                                                        _lhsIisTopApp
-                                                                                        _lhsIisTopTup
-                                                                                        _lhsImodNr
-                                                                                        _lhsInm2ref
-                                                                                        _lhsIopts
-                                                                                        _lhsIstackDepth
-                                                                                        _lhsItailCtx ->
-                                                                                          (case (AppFunKind_NoApp) of
-                                                                                           { _lhsOappFunKind ->
-                                                                                           (case ([]) of
-                                                                                            { _lhsOcrb ->
-                                                                                            (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                                             { _creBase ->
-                                                                                             (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                                              { _cre ->
-                                                                                              (case (_cre) of
-                                                                                               { _lhsOcre ->
-                                                                                               (case ([]) of
-                                                                                                { _creAppArgL ->
-                                                                                                (case (_creAppArgL) of
-                                                                                                 { _lhsOcreAppArgL ->
-                                                                                                 (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                                  { _creAppFun ->
-                                                                                                  (case (_creAppFun) of
-                                                                                                   { _lhsOcreAppFun ->
-                                                                                                   (case ([]) of
-                                                                                                    { _creLamArgL ->
-                                                                                                    (case (_creLamArgL) of
-                                                                                                     { _lhsOcreLamArgL ->
-                                                                                                     (case (_cre) of
-                                                                                                      { _creLamBody ->
-                                                                                                      (case (_creLamBody) of
-                                                                                                       { _lhsOcreLamBody ->
-                                                                                                       (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                        { _crse ->
-                                                                                                        (case (_crse) of
-                                                                                                         { _lhsOcrse ->
-                                                                                                         (case (Nothing) of
-                                                                                                          { _lhsOmbFFIApp ->
-                                                                                                          (case (Nothing) of
-                                                                                                           { _lhsOmbLam ->
-                                                                                                           (case (Nothing) of
-                                                                                                            { _lhsOmbVar ->
-                                                                                                            (case (_lhsItailCtx) of
-                                                                                                             { _fldExprOtailCtx ->
-                                                                                                             (case (_lhsIstackDepth) of
-                                                                                                              { _exprOstackDepth ->
-                                                                                                              (case (_lhsItailCtx) of
-                                                                                                               { _exprOtailCtx ->
-                                                                                                               (case (_lhsIopts) of
-                                                                                                                { _exprOopts ->
-                                                                                                                (case (_lhsInm2ref) of
-                                                                                                                 { _exprOnm2ref ->
-                                                                                                                 (case (_lhsImodNr) of
-                                                                                                                  { _exprOmodNr ->
-                                                                                                                  (case (True) of
-                                                                                                                   { _isTopApp ->
-                                                                                                                   (case (_isTopApp) of
-                                                                                                                    { _exprOisTopApp ->
-                                                                                                                    (case (_lhsIimpNmLkup) of
-                                                                                                                     { _exprOimpNmLkup ->
-                                                                                                                     (case (_lhsIevalCtx) of
-                                                                                                                      { _exprOevalCtx ->
-                                                                                                                      (case (False) of
-                                                                                                                       { _exprOisTopTup ->
-                                                                                                                       (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                                                                                        { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                                                                            (case (_exprIstackDepth) of
-                                                                                                                             { _offsetOstackDepth ->
-                                                                                                                             (case (_lhsItailCtx) of
-                                                                                                                              { _offsetOtailCtx ->
-                                                                                                                              (case (_lhsIopts) of
-                                                                                                                               { _offsetOopts ->
-                                                                                                                               (case (_lhsInm2ref) of
-                                                                                                                                { _offsetOnm2ref ->
-                                                                                                                                (case (_lhsImodNr) of
-                                                                                                                                 { _offsetOmodNr ->
-                                                                                                                                 (case (True) of
-                                                                                                                                  { _isTopTup ->
-                                                                                                                                  (case (_isTopTup) of
-                                                                                                                                   { _offsetOisTopTup ->
-                                                                                                                                   (case (_isTopApp) of
-                                                                                                                                    { _offsetOisTopApp ->
-                                                                                                                                    (case (_lhsIimpNmLkup) of
-                                                                                                                                     { _offsetOimpNmLkup ->
-                                                                                                                                     (case (_lhsIevalCtx) of
-                                                                                                                                      { _offsetOevalCtx ->
-                                                                                                                                      (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
-                                                                                                                                       { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
-                                                                                                                                           (case (_offsetIstackDepth) of
-                                                                                                                                            { _fldExprOstackDepth ->
-                                                                                                                                            (case (_lhsIopts) of
-                                                                                                                                             { _fldExprOopts ->
-                                                                                                                                             (case (_lhsInm2ref) of
-                                                                                                                                              { _fldExprOnm2ref ->
-                                                                                                                                              (case (_lhsImodNr) of
-                                                                                                                                               { _fldExprOmodNr ->
-                                                                                                                                               (case (_isTopTup) of
-                                                                                                                                                { _fldExprOisTopTup ->
-                                                                                                                                                (case (_isTopApp) of
-                                                                                                                                                 { _fldExprOisTopApp ->
-                                                                                                                                                 (case (_lhsIimpNmLkup) of
-                                                                                                                                                  { _fldExprOimpNmLkup ->
-                                                                                                                                                  (case (_lhsIevalCtx) of
-                                                                                                                                                   { _fldExprOevalCtx ->
-                                                                                                                                                   (case (fldExpr_2 _fldExprOevalCtx _fldExprOimpNmLkup _fldExprOisTopApp _fldExprOisTopTup _fldExprOmodNr _fldExprOnm2ref _fldExprOopts _fldExprOstackDepth _fldExprOtailCtx) of
-                                                                                                                                                    { ( _fldExprIappFunKind,_fldExprIcrb,_fldExprIcre,_fldExprIcreAppArgL,_fldExprIcreAppFun,_fldExprIcreLamArgL,_fldExprIcreLamBody,_fldExprIcrse,_fldExprImbFFIApp,_fldExprImbLam,_fldExprImbVar,_fldExprIrefOffsetMax,_fldExprIstackDepth,_fldExprIstackDepthMax,_fldExprIvref) ->
-                                                                                                                                                        (case (_exprIrefOffsetMax `max` _offsetIrefOffsetMax `max` _fldExprIrefOffsetMax) of
-                                                                                                                                                         { _lhsOrefOffsetMax ->
-                                                                                                                                                         (case (_lhsIstackDepth + 1) of
-                                                                                                                                                          { _stackDepthHere ->
-                                                                                                                                                          (case (_stackDepthHere) of
-                                                                                                                                                           { _lhsOstackDepth ->
-                                                                                                                                                           (case (_stackDepthHere) of
-                                                                                                                                                            { _lhsOstackDepthMax ->
-                                                                                                                                                            (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                                                             { _vref ->
-                                                                                                                                                             (case (_vref) of
-                                                                                                                                                              { _lhsOvref ->
-                                                                                                                                                              ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                                             in  sem_CExpr_TupIns_2)) of
-                                                                      { ( sem_CExpr_2) ->
-                                                                      ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_TupIns_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_TupUpd :: T_CExpr ->
-                    CTag ->
-                    HsName ->
-                    T_CExpr ->
-                    T_CExpr ->
-                    T_CExpr
-sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_TupUpd_1 :: T_CExpr_1
-                  sem_CExpr_TupUpd_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _fldExprOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _exprOrefOffset ->
-                              (case (expr_) of
-                               { ( _exprIwhatBelow,expr_1) ->
-                                   (case (_whatAbove) of
-                                    { _exprOwhatAbove ->
-                                    (case (_lhsIlev) of
-                                     { _exprOlev ->
-                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                          (case (_exprIrefOffset) of
-                                           { _offsetOrefOffset ->
-                                           (case (offset_) of
-                                            { ( _offsetIwhatBelow,offset_1) ->
-                                                (case (_whatAbove) of
-                                                 { _offsetOwhatAbove ->
-                                                 (case (_lhsIlev) of
-                                                  { _offsetOlev ->
-                                                  (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
-                                                   { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
-                                                       (case (_offsetIrefOffset) of
-                                                        { _fldExprOrefOffset ->
-                                                        (case (_lhsIlev) of
-                                                         { _fldExprOlev ->
-                                                         (case (fldExpr_) of
-                                                          { ( _fldExprIwhatBelow,fldExpr_1) ->
-                                                              (case (fldExpr_1 _fldExprOlev _fldExprOrefOffset _fldExprOwhatAbove) of
-                                                               { ( _fldExprInm2refGath,_fldExprIrefOffset,fldExpr_2) ->
-                                                                   (case (_exprInm2refGath `CR.nm2refUnion` _offsetInm2refGath `CR.nm2refUnion` _fldExprInm2refGath) of
-                                                                    { _lhsOnm2refGath ->
-                                                                    (case (_fldExprIrefOffset) of
-                                                                     { _lhsOrefOffset ->
-                                                                     (case ((let sem_CExpr_TupUpd_2 :: T_CExpr_2
-                                                                                 sem_CExpr_TupUpd_2 =
-                                                                                     (\ _lhsIevalCtx
-                                                                                        _lhsIimpNmLkup
-                                                                                        _lhsIisTopApp
-                                                                                        _lhsIisTopTup
-                                                                                        _lhsImodNr
-                                                                                        _lhsInm2ref
-                                                                                        _lhsIopts
-                                                                                        _lhsIstackDepth
-                                                                                        _lhsItailCtx ->
-                                                                                          (case (AppFunKind_NoApp) of
-                                                                                           { _lhsOappFunKind ->
-                                                                                           (case ([]) of
-                                                                                            { _lhsOcrb ->
-                                                                                            (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                                             { _creBase ->
-                                                                                             (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                                              { _cre ->
-                                                                                              (case (_cre) of
-                                                                                               { _lhsOcre ->
-                                                                                               (case ([]) of
-                                                                                                { _creAppArgL ->
-                                                                                                (case (_creAppArgL) of
-                                                                                                 { _lhsOcreAppArgL ->
-                                                                                                 (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                                                  { _creAppFun ->
-                                                                                                  (case (_creAppFun) of
-                                                                                                   { _lhsOcreAppFun ->
-                                                                                                   (case ([]) of
-                                                                                                    { _creLamArgL ->
-                                                                                                    (case (_creLamArgL) of
-                                                                                                     { _lhsOcreLamArgL ->
-                                                                                                     (case (_cre) of
-                                                                                                      { _creLamBody ->
-                                                                                                      (case (_creLamBody) of
-                                                                                                       { _lhsOcreLamBody ->
-                                                                                                       (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                        { _crse ->
-                                                                                                        (case (_crse) of
-                                                                                                         { _lhsOcrse ->
-                                                                                                         (case (Nothing) of
-                                                                                                          { _lhsOmbFFIApp ->
-                                                                                                          (case (Nothing) of
-                                                                                                           { _lhsOmbLam ->
-                                                                                                           (case (Nothing) of
-                                                                                                            { _lhsOmbVar ->
-                                                                                                            (case (_lhsItailCtx) of
-                                                                                                             { _fldExprOtailCtx ->
-                                                                                                             (case (_lhsIstackDepth) of
-                                                                                                              { _exprOstackDepth ->
-                                                                                                              (case (_lhsItailCtx) of
-                                                                                                               { _exprOtailCtx ->
-                                                                                                               (case (_lhsIopts) of
-                                                                                                                { _exprOopts ->
-                                                                                                                (case (_lhsInm2ref) of
-                                                                                                                 { _exprOnm2ref ->
-                                                                                                                 (case (_lhsImodNr) of
-                                                                                                                  { _exprOmodNr ->
-                                                                                                                  (case (True) of
-                                                                                                                   { _isTopApp ->
-                                                                                                                   (case (_isTopApp) of
-                                                                                                                    { _exprOisTopApp ->
-                                                                                                                    (case (_lhsIimpNmLkup) of
-                                                                                                                     { _exprOimpNmLkup ->
-                                                                                                                     (case (_lhsIevalCtx) of
-                                                                                                                      { _exprOevalCtx ->
-                                                                                                                      (case (False) of
-                                                                                                                       { _exprOisTopTup ->
-                                                                                                                       (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                                                                                        { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                                                                            (case (_exprIstackDepth) of
-                                                                                                                             { _offsetOstackDepth ->
-                                                                                                                             (case (_lhsItailCtx) of
-                                                                                                                              { _offsetOtailCtx ->
-                                                                                                                              (case (_lhsIopts) of
-                                                                                                                               { _offsetOopts ->
-                                                                                                                               (case (_lhsInm2ref) of
-                                                                                                                                { _offsetOnm2ref ->
-                                                                                                                                (case (_lhsImodNr) of
-                                                                                                                                 { _offsetOmodNr ->
-                                                                                                                                 (case (True) of
-                                                                                                                                  { _isTopTup ->
-                                                                                                                                  (case (_isTopTup) of
-                                                                                                                                   { _offsetOisTopTup ->
-                                                                                                                                   (case (_isTopApp) of
-                                                                                                                                    { _offsetOisTopApp ->
-                                                                                                                                    (case (_lhsIimpNmLkup) of
-                                                                                                                                     { _offsetOimpNmLkup ->
-                                                                                                                                     (case (_lhsIevalCtx) of
-                                                                                                                                      { _offsetOevalCtx ->
-                                                                                                                                      (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
-                                                                                                                                       { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
-                                                                                                                                           (case (_offsetIstackDepth) of
-                                                                                                                                            { _fldExprOstackDepth ->
-                                                                                                                                            (case (_lhsIopts) of
-                                                                                                                                             { _fldExprOopts ->
-                                                                                                                                             (case (_lhsInm2ref) of
-                                                                                                                                              { _fldExprOnm2ref ->
-                                                                                                                                              (case (_lhsImodNr) of
-                                                                                                                                               { _fldExprOmodNr ->
-                                                                                                                                               (case (_isTopTup) of
-                                                                                                                                                { _fldExprOisTopTup ->
-                                                                                                                                                (case (_isTopApp) of
-                                                                                                                                                 { _fldExprOisTopApp ->
-                                                                                                                                                 (case (_lhsIimpNmLkup) of
-                                                                                                                                                  { _fldExprOimpNmLkup ->
-                                                                                                                                                  (case (_lhsIevalCtx) of
-                                                                                                                                                   { _fldExprOevalCtx ->
-                                                                                                                                                   (case (fldExpr_2 _fldExprOevalCtx _fldExprOimpNmLkup _fldExprOisTopApp _fldExprOisTopTup _fldExprOmodNr _fldExprOnm2ref _fldExprOopts _fldExprOstackDepth _fldExprOtailCtx) of
-                                                                                                                                                    { ( _fldExprIappFunKind,_fldExprIcrb,_fldExprIcre,_fldExprIcreAppArgL,_fldExprIcreAppFun,_fldExprIcreLamArgL,_fldExprIcreLamBody,_fldExprIcrse,_fldExprImbFFIApp,_fldExprImbLam,_fldExprImbVar,_fldExprIrefOffsetMax,_fldExprIstackDepth,_fldExprIstackDepthMax,_fldExprIvref) ->
-                                                                                                                                                        (case (_exprIrefOffsetMax `max` _offsetIrefOffsetMax `max` _fldExprIrefOffsetMax) of
-                                                                                                                                                         { _lhsOrefOffsetMax ->
-                                                                                                                                                         (case (_lhsIstackDepth + 1) of
-                                                                                                                                                          { _stackDepthHere ->
-                                                                                                                                                          (case (_stackDepthHere) of
-                                                                                                                                                           { _lhsOstackDepth ->
-                                                                                                                                                           (case (_stackDepthHere) of
-                                                                                                                                                            { _lhsOstackDepthMax ->
-                                                                                                                                                            (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                                                                             { _vref ->
-                                                                                                                                                             (case (_vref) of
-                                                                                                                                                              { _lhsOvref ->
-                                                                                                                                                              ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                                             in  sem_CExpr_TupUpd_2)) of
-                                                                      { ( sem_CExpr_2) ->
-                                                                      ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_TupUpd_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_FFI :: FFIWay ->
-                 String ->
-                 ForeignEnt ->
-                 Ty ->
-                 T_CExpr
-sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
-    (case (ExprIsFFI) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_FFI_1 :: T_CExpr_1
-                  sem_CExpr_FFI_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_FFI_2 :: T_CExpr_2
-                                         sem_CExpr_FFI_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_FFI) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (foreignEntExtract impEnt_) of
-                                                     { _foreignEntInfo ->
-                                                     (case (forextractMbEnt _foreignEntInfo) of
-                                                      { _creEntMb ->
-                                                      (case (\as -> maybe (CR.dbg $ "Core.ToCoreRun.CExpr.FFI.cre: " ++ show _foreignEntInfo) (\ent -> CR.mkFFI' ent as) _creEntMb) of
-                                                       { _creMk ->
-                                                       (case (_creMk CR.emptyCRArray) of
-                                                        { _creBase ->
-                                                        (case (_creBase) of
-                                                         { _cre ->
-                                                         (case (_cre) of
-                                                          { _lhsOcre ->
-                                                          (case ([]) of
-                                                           { _creAppArgL ->
-                                                           (case (_creAppArgL) of
-                                                            { _lhsOcreAppArgL ->
-                                                            (case (\_ -> cseCtxWrap TailCtx_Plain . _creMk) of
-                                                             { _creAppFun ->
-                                                             (case (_creAppFun) of
-                                                              { _lhsOcreAppFun ->
-                                                              (case ([]) of
-                                                               { _creLamArgL ->
-                                                               (case (_creLamArgL) of
-                                                                { _lhsOcreLamArgL ->
-                                                                (case (_cre) of
-                                                                 { _creLamBody ->
-                                                                 (case (_creLamBody) of
-                                                                  { _lhsOcreLamBody ->
-                                                                  (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                   { _crse ->
-                                                                   (case (_crse) of
-                                                                    { _lhsOcrse ->
-                                                                    (case (maybe Nothing lookupPrimNeedsEval $ forextractMbEnt _foreignEntInfo) of
-                                                                     { _mbPrimNeedEval ->
-                                                                     (case (maybe False primResNeedEval _mbPrimNeedEval) of
-                                                                      { _primResNeedsEval ->
-                                                                      (case (appUnArr ty_) of
-                                                                       { _argTyLresTy ->
-                                                                       (case (snd _argTyLresTy) of
-                                                                        { _resTy ->
-                                                                        (case (fst _argTyLresTy) of
-                                                                         { _argTyL ->
-                                                                         (case (Just ( _resTy
-                                                                                     , _primResNeedsEval
-                                                                                     , callconv_
-                                                                                     , impEnt_
-                                                                                     , _argTyL
-                                                                                     )) of
-                                                                          { _lhsOmbFFIApp ->
-                                                                          (case (Nothing) of
-                                                                           { _lhsOmbLam ->
-                                                                           (case (Nothing) of
-                                                                            { _lhsOmbVar ->
-                                                                            (case (0) of
-                                                                             { _lhsOrefOffsetMax ->
-                                                                             (case (_lhsIstackDepth + 1) of
-                                                                              { _stackDepthHere ->
-                                                                              (case (_stackDepthHere) of
-                                                                               { _lhsOstackDepth ->
-                                                                               (case (_stackDepthHere) of
-                                                                                { _lhsOstackDepthMax ->
-                                                                                (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                 { _vref ->
-                                                                                 (case (_vref) of
-                                                                                  { _lhsOvref ->
-                                                                                  ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_FFI_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_FFI_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Dbg :: String ->
-                 T_CExpr
-sem_CExpr_Dbg info_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Dbg_1 :: T_CExpr_1
-                  sem_CExpr_Dbg_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_Dbg_2 :: T_CExpr_2
-                                         sem_CExpr_Dbg_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                     { _creBase ->
-                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                      { _cre ->
-                                                      (case (_cre) of
-                                                       { _lhsOcre ->
-                                                       (case ([]) of
-                                                        { _creAppArgL ->
-                                                        (case (_creAppArgL) of
-                                                         { _lhsOcreAppArgL ->
-                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                          { _creAppFun ->
-                                                          (case (_creAppFun) of
-                                                           { _lhsOcreAppFun ->
-                                                           (case ([]) of
-                                                            { _creLamArgL ->
-                                                            (case (_creLamArgL) of
-                                                             { _lhsOcreLamArgL ->
-                                                             (case (_cre) of
-                                                              { _creLamBody ->
-                                                              (case (_creLamBody) of
-                                                               { _lhsOcreLamBody ->
-                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                { _crse ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_Dbg_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_Dbg_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Hole :: UID ->
-                  T_CExpr
-sem_CExpr_Hole uid_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_Hole_1 :: T_CExpr_1
-                  sem_CExpr_Hole_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_Hole_2 :: T_CExpr_2
-                                         sem_CExpr_Hole_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                     { _creBase ->
-                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                      { _cre ->
-                                                      (case (_cre) of
-                                                       { _lhsOcre ->
-                                                       (case ([]) of
-                                                        { _creAppArgL ->
-                                                        (case (_creAppArgL) of
-                                                         { _lhsOcreAppArgL ->
-                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                          { _creAppFun ->
-                                                          (case (_creAppFun) of
-                                                           { _lhsOcreAppFun ->
-                                                           (case ([]) of
-                                                            { _creLamArgL ->
-                                                            (case (_creLamArgL) of
-                                                             { _lhsOcreLamArgL ->
-                                                             (case (_cre) of
-                                                              { _creLamBody ->
-                                                              (case (_creLamBody) of
-                                                               { _lhsOcreLamBody ->
-                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                { _crse ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_Hole_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_Hole_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_HoleLet :: UID ->
-                     T_CExpr ->
-                     T_CExpr
-sem_CExpr_HoleLet bindsUid_ body_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_HoleLet_1 :: T_CExpr_1
-                  sem_CExpr_HoleLet_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _bodyOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _bodyOrefOffset ->
-                              (case (_lhsIlev) of
-                               { _bodyOlev ->
-                               (case (body_) of
-                                { ( _bodyIwhatBelow,body_1) ->
-                                    (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
-                                     { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
-                                         (case (_bodyInm2refGath) of
-                                          { _lhsOnm2refGath ->
-                                          (case (_bodyIrefOffset) of
-                                           { _lhsOrefOffset ->
-                                           (case ((let sem_CExpr_HoleLet_2 :: T_CExpr_2
-                                                       sem_CExpr_HoleLet_2 =
-                                                           (\ _lhsIevalCtx
-                                                              _lhsIimpNmLkup
-                                                              _lhsIisTopApp
-                                                              _lhsIisTopTup
-                                                              _lhsImodNr
-                                                              _lhsInm2ref
-                                                              _lhsIopts
-                                                              _lhsIstackDepth
-                                                              _lhsItailCtx ->
-                                                                (case (AppFunKind_NoApp) of
-                                                                 { _lhsOappFunKind ->
-                                                                 (case ([]) of
-                                                                  { _lhsOcrb ->
-                                                                  (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                   { _creBase ->
-                                                                   (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                    { _cre ->
-                                                                    (case (_cre) of
-                                                                     { _lhsOcre ->
-                                                                     (case ([]) of
-                                                                      { _creAppArgL ->
-                                                                      (case (_creAppArgL) of
-                                                                       { _lhsOcreAppArgL ->
-                                                                       (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                        { _creAppFun ->
-                                                                        (case (_creAppFun) of
-                                                                         { _lhsOcreAppFun ->
-                                                                         (case ([]) of
-                                                                          { _creLamArgL ->
-                                                                          (case (_creLamArgL) of
-                                                                           { _lhsOcreLamArgL ->
-                                                                           (case (_cre) of
-                                                                            { _creLamBody ->
-                                                                            (case (_creLamBody) of
-                                                                             { _lhsOcreLamBody ->
-                                                                             (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                              { _crse ->
-                                                                              (case (_crse) of
-                                                                               { _lhsOcrse ->
-                                                                               (case (Nothing) of
-                                                                                { _lhsOmbFFIApp ->
-                                                                                (case (Nothing) of
-                                                                                 { _lhsOmbLam ->
-                                                                                 (case (Nothing) of
-                                                                                  { _lhsOmbVar ->
-                                                                                  (case (_lhsItailCtx) of
-                                                                                   { _bodyOtailCtx ->
-                                                                                   (case (_lhsIstackDepth) of
-                                                                                    { _bodyOstackDepth ->
-                                                                                    (case (_lhsIopts) of
-                                                                                     { _bodyOopts ->
-                                                                                     (case (_lhsInm2ref) of
-                                                                                      { _bodyOnm2ref ->
-                                                                                      (case (_lhsImodNr) of
-                                                                                       { _bodyOmodNr ->
-                                                                                       (case (True) of
-                                                                                        { _isTopTup ->
-                                                                                        (case (_isTopTup) of
-                                                                                         { _bodyOisTopTup ->
-                                                                                         (case (True) of
-                                                                                          { _isTopApp ->
-                                                                                          (case (_isTopApp) of
-                                                                                           { _bodyOisTopApp ->
-                                                                                           (case (_lhsIimpNmLkup) of
-                                                                                            { _bodyOimpNmLkup ->
-                                                                                            (case (_lhsIevalCtx) of
-                                                                                             { _bodyOevalCtx ->
-                                                                                             (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
-                                                                                              { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
-                                                                                                  (case (_bodyIrefOffsetMax) of
-                                                                                                   { _lhsOrefOffsetMax ->
-                                                                                                   (case (_lhsIstackDepth + 1) of
-                                                                                                    { _stackDepthHere ->
-                                                                                                    (case (_stackDepthHere) of
-                                                                                                     { _lhsOstackDepth ->
-                                                                                                     (case (_stackDepthHere) of
-                                                                                                      { _lhsOstackDepthMax ->
-                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                       { _vref ->
-                                                                                                       (case (_vref) of
-                                                                                                        { _lhsOvref ->
-                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                   in  sem_CExpr_HoleLet_2)) of
-                                            { ( sem_CExpr_2) ->
-                                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_HoleLet_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_CoeArg :: T_CExpr
-sem_CExpr_CoeArg =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_CoeArg_1 :: T_CExpr_1
-                  sem_CExpr_CoeArg_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (CR.emptyNm2RefMp) of
-                            { _lhsOnm2refGath ->
-                            (case (_lhsIrefOffset) of
-                             { _lhsOrefOffset ->
-                             (case ((let sem_CExpr_CoeArg_2 :: T_CExpr_2
-                                         sem_CExpr_CoeArg_2 =
-                                             (\ _lhsIevalCtx
-                                                _lhsIimpNmLkup
-                                                _lhsIisTopApp
-                                                _lhsIisTopTup
-                                                _lhsImodNr
-                                                _lhsInm2ref
-                                                _lhsIopts
-                                                _lhsIstackDepth
-                                                _lhsItailCtx ->
-                                                  (case (AppFunKind_NoApp) of
-                                                   { _lhsOappFunKind ->
-                                                   (case ([]) of
-                                                    { _lhsOcrb ->
-                                                    (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                     { _creBase ->
-                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                      { _cre ->
-                                                      (case (_cre) of
-                                                       { _lhsOcre ->
-                                                       (case ([]) of
-                                                        { _creAppArgL ->
-                                                        (case (_creAppArgL) of
-                                                         { _lhsOcreAppArgL ->
-                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                          { _creAppFun ->
-                                                          (case (_creAppFun) of
-                                                           { _lhsOcreAppFun ->
-                                                           (case ([]) of
-                                                            { _creLamArgL ->
-                                                            (case (_creLamArgL) of
-                                                             { _lhsOcreLamArgL ->
-                                                             (case (_cre) of
-                                                              { _creLamBody ->
-                                                              (case (_creLamBody) of
-                                                               { _lhsOcreLamBody ->
-                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                { _crse ->
-                                                                (case (_crse) of
-                                                                 { _lhsOcrse ->
-                                                                 (case (Nothing) of
-                                                                  { _lhsOmbFFIApp ->
-                                                                  (case (Nothing) of
-                                                                   { _lhsOmbLam ->
-                                                                   (case (Nothing) of
-                                                                    { _lhsOmbVar ->
-                                                                    (case (0) of
-                                                                     { _lhsOrefOffsetMax ->
-                                                                     (case (_lhsIstackDepth + 1) of
-                                                                      { _stackDepthHere ->
-                                                                      (case (_stackDepthHere) of
-                                                                       { _lhsOstackDepth ->
-                                                                       (case (_stackDepthHere) of
-                                                                        { _lhsOstackDepthMax ->
-                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                         { _vref ->
-                                                                         (case (_vref) of
-                                                                          { _lhsOvref ->
-                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                     in  sem_CExpr_CoeArg_2)) of
-                              { ( sem_CExpr_2) ->
-                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
-              in  sem_CExpr_CoeArg_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_ImplsApp :: T_CExpr ->
-                      ImplsVarId ->
-                      T_CExpr
-sem_CExpr_ImplsApp func_ uid_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_ImplsApp_1 :: T_CExpr_1
-                  sem_CExpr_ImplsApp_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _funcOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _funcOrefOffset ->
-                              (case (_lhsIlev) of
-                               { _funcOlev ->
-                               (case (func_) of
-                                { ( _funcIwhatBelow,func_1) ->
-                                    (case (func_1 _funcOlev _funcOrefOffset _funcOwhatAbove) of
-                                     { ( _funcInm2refGath,_funcIrefOffset,func_2) ->
-                                         (case (_funcInm2refGath) of
-                                          { _lhsOnm2refGath ->
-                                          (case (_funcIrefOffset) of
-                                           { _lhsOrefOffset ->
-                                           (case ((let sem_CExpr_ImplsApp_2 :: T_CExpr_2
-                                                       sem_CExpr_ImplsApp_2 =
-                                                           (\ _lhsIevalCtx
-                                                              _lhsIimpNmLkup
-                                                              _lhsIisTopApp
-                                                              _lhsIisTopTup
-                                                              _lhsImodNr
-                                                              _lhsInm2ref
-                                                              _lhsIopts
-                                                              _lhsIstackDepth
-                                                              _lhsItailCtx ->
-                                                                (case (AppFunKind_NoApp) of
-                                                                 { _lhsOappFunKind ->
-                                                                 (case ([]) of
-                                                                  { _lhsOcrb ->
-                                                                  (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                   { _creBase ->
-                                                                   (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                    { _cre ->
-                                                                    (case (_cre) of
-                                                                     { _lhsOcre ->
-                                                                     (case ([]) of
-                                                                      { _creAppArgL ->
-                                                                      (case (_creAppArgL) of
-                                                                       { _lhsOcreAppArgL ->
-                                                                       (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                        { _creAppFun ->
-                                                                        (case (_creAppFun) of
-                                                                         { _lhsOcreAppFun ->
-                                                                         (case ([]) of
-                                                                          { _creLamArgL ->
-                                                                          (case (_creLamArgL) of
-                                                                           { _lhsOcreLamArgL ->
-                                                                           (case (_cre) of
-                                                                            { _creLamBody ->
-                                                                            (case (_creLamBody) of
-                                                                             { _lhsOcreLamBody ->
-                                                                             (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                              { _crse ->
-                                                                              (case (_crse) of
-                                                                               { _lhsOcrse ->
-                                                                               (case (Nothing) of
-                                                                                { _lhsOmbFFIApp ->
-                                                                                (case (Nothing) of
-                                                                                 { _lhsOmbLam ->
-                                                                                 (case (Nothing) of
-                                                                                  { _lhsOmbVar ->
-                                                                                  (case (_lhsItailCtx) of
-                                                                                   { _funcOtailCtx ->
-                                                                                   (case (_lhsIstackDepth) of
-                                                                                    { _funcOstackDepth ->
-                                                                                    (case (_lhsIopts) of
-                                                                                     { _funcOopts ->
-                                                                                     (case (_lhsInm2ref) of
-                                                                                      { _funcOnm2ref ->
-                                                                                      (case (_lhsImodNr) of
-                                                                                       { _funcOmodNr ->
-                                                                                       (case (True) of
-                                                                                        { _isTopTup ->
-                                                                                        (case (_isTopTup) of
-                                                                                         { _funcOisTopTup ->
-                                                                                         (case (True) of
-                                                                                          { _isTopApp ->
-                                                                                          (case (_isTopApp) of
-                                                                                           { _funcOisTopApp ->
-                                                                                           (case (_lhsIimpNmLkup) of
-                                                                                            { _funcOimpNmLkup ->
-                                                                                            (case (_lhsIevalCtx) of
-                                                                                             { _funcOevalCtx ->
-                                                                                             (case (func_2 _funcOevalCtx _funcOimpNmLkup _funcOisTopApp _funcOisTopTup _funcOmodNr _funcOnm2ref _funcOopts _funcOstackDepth _funcOtailCtx) of
-                                                                                              { ( _funcIappFunKind,_funcIcrb,_funcIcre,_funcIcreAppArgL,_funcIcreAppFun,_funcIcreLamArgL,_funcIcreLamBody,_funcIcrse,_funcImbFFIApp,_funcImbLam,_funcImbVar,_funcIrefOffsetMax,_funcIstackDepth,_funcIstackDepthMax,_funcIvref) ->
-                                                                                                  (case (_funcIrefOffsetMax) of
-                                                                                                   { _lhsOrefOffsetMax ->
-                                                                                                   (case (_lhsIstackDepth + 1) of
-                                                                                                    { _stackDepthHere ->
-                                                                                                    (case (_stackDepthHere) of
-                                                                                                     { _lhsOstackDepth ->
-                                                                                                     (case (_stackDepthHere) of
-                                                                                                      { _lhsOstackDepthMax ->
-                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                       { _vref ->
-                                                                                                       (case (_vref) of
-                                                                                                        { _lhsOvref ->
-                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                   in  sem_CExpr_ImplsApp_2)) of
-                                            { ( sem_CExpr_2) ->
-                                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_ImplsApp_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_ImplsLam :: ImplsVarId ->
-                      T_CExpr ->
-                      T_CExpr
-sem_CExpr_ImplsLam uid_ body_ =
-    (case (ExprIsOther) of
-     { _whatBelow ->
-     (case (_whatBelow) of
-      { _lhsOwhatBelow ->
-      (case ((let sem_CExpr_ImplsLam_1 :: T_CExpr_1
-                  sem_CExpr_ImplsLam_1 =
-                      (\ _lhsIlev
-                         _lhsIrefOffset
-                         _lhsIwhatAbove ->
-                           (case (ExprIsOther) of
-                            { _whatAbove ->
-                            (case (_whatAbove) of
-                             { _bodyOwhatAbove ->
-                             (case (_lhsIrefOffset) of
-                              { _bodyOrefOffset ->
-                              (case (_lhsIlev) of
-                               { _bodyOlev ->
-                               (case (body_) of
-                                { ( _bodyIwhatBelow,body_1) ->
-                                    (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
-                                     { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
-                                         (case (_bodyInm2refGath) of
-                                          { _lhsOnm2refGath ->
-                                          (case (_bodyIrefOffset) of
-                                           { _lhsOrefOffset ->
-                                           (case ((let sem_CExpr_ImplsLam_2 :: T_CExpr_2
-                                                       sem_CExpr_ImplsLam_2 =
-                                                           (\ _lhsIevalCtx
-                                                              _lhsIimpNmLkup
-                                                              _lhsIisTopApp
-                                                              _lhsIisTopTup
-                                                              _lhsImodNr
-                                                              _lhsInm2ref
-                                                              _lhsIopts
-                                                              _lhsIstackDepth
-                                                              _lhsItailCtx ->
-                                                                (case (AppFunKind_NoApp) of
-                                                                 { _lhsOappFunKind ->
-                                                                 (case ([]) of
-                                                                  { _lhsOcrb ->
-                                                                  (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
-                                                                   { _creBase ->
-                                                                   (case (cseCtxWrap _lhsItailCtx _creBase) of
-                                                                    { _cre ->
-                                                                    (case (_cre) of
-                                                                     { _lhsOcre ->
-                                                                     (case ([]) of
-                                                                      { _creAppArgL ->
-                                                                      (case (_creAppArgL) of
-                                                                       { _lhsOcreAppArgL ->
-                                                                       (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
-                                                                        { _creAppFun ->
-                                                                        (case (_creAppFun) of
-                                                                         { _lhsOcreAppFun ->
-                                                                         (case ([]) of
-                                                                          { _creLamArgL ->
-                                                                          (case (_creLamArgL) of
-                                                                           { _lhsOcreLamArgL ->
-                                                                           (case (_cre) of
-                                                                            { _creLamBody ->
-                                                                            (case (_creLamBody) of
-                                                                             { _lhsOcreLamBody ->
-                                                                             (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                              { _crse ->
-                                                                              (case (_crse) of
-                                                                               { _lhsOcrse ->
-                                                                               (case (Nothing) of
-                                                                                { _lhsOmbFFIApp ->
-                                                                                (case (Nothing) of
-                                                                                 { _lhsOmbLam ->
-                                                                                 (case (Nothing) of
-                                                                                  { _lhsOmbVar ->
-                                                                                  (case (_lhsItailCtx) of
-                                                                                   { _bodyOtailCtx ->
-                                                                                   (case (_lhsIstackDepth) of
-                                                                                    { _bodyOstackDepth ->
-                                                                                    (case (_lhsIopts) of
-                                                                                     { _bodyOopts ->
-                                                                                     (case (_lhsInm2ref) of
-                                                                                      { _bodyOnm2ref ->
-                                                                                      (case (_lhsImodNr) of
-                                                                                       { _bodyOmodNr ->
-                                                                                       (case (True) of
-                                                                                        { _isTopTup ->
-                                                                                        (case (_isTopTup) of
-                                                                                         { _bodyOisTopTup ->
-                                                                                         (case (True) of
-                                                                                          { _isTopApp ->
-                                                                                          (case (_isTopApp) of
-                                                                                           { _bodyOisTopApp ->
-                                                                                           (case (_lhsIimpNmLkup) of
-                                                                                            { _bodyOimpNmLkup ->
-                                                                                            (case (_lhsIevalCtx) of
-                                                                                             { _bodyOevalCtx ->
-                                                                                             (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
-                                                                                              { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
-                                                                                                  (case (_bodyIrefOffsetMax) of
-                                                                                                   { _lhsOrefOffsetMax ->
-                                                                                                   (case (_lhsIstackDepth + 1) of
-                                                                                                    { _stackDepthHere ->
-                                                                                                    (case (_stackDepthHere) of
-                                                                                                     { _lhsOstackDepth ->
-                                                                                                     (case (_stackDepthHere) of
-                                                                                                      { _lhsOstackDepthMax ->
-                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                       { _vref ->
-                                                                                                       (case (_vref) of
-                                                                                                        { _lhsOvref ->
-                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                   in  sem_CExpr_ImplsLam_2)) of
-                                            { ( sem_CExpr_2) ->
-                                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
-              in  sem_CExpr_ImplsLam_1)) of
-       { ( sem_CExpr_1) ->
-       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
-sem_CExpr_Ann :: T_CExprAnn ->
-                 T_CExpr ->
-                 T_CExpr
-sem_CExpr_Ann ann_ expr_ =
-    (case (expr_) of
-     { ( _exprIwhatBelow,expr_1) ->
-         (case (_exprIwhatBelow) of
-          { _lhsOwhatBelow ->
-          (case ((let sem_CExpr_Ann_1 :: T_CExpr_1
-                      sem_CExpr_Ann_1 =
-                          (\ _lhsIlev
-                             _lhsIrefOffset
-                             _lhsIwhatAbove ->
-                               (case (_lhsIwhatAbove) of
-                                { _exprOwhatAbove ->
-                                (case (_lhsIrefOffset) of
-                                 { _annOrefOffset ->
-                                 (case (ann_ _annOrefOffset) of
-                                  { ( _annIrefOffset,ann_1) ->
-                                      (case (_annIrefOffset) of
-                                       { _exprOrefOffset ->
-                                       (case (_lhsIlev) of
-                                        { _exprOlev ->
-                                        (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                                         { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                             (case (_exprInm2refGath) of
-                                              { _lhsOnm2refGath ->
-                                              (case (_exprIrefOffset) of
-                                               { _lhsOrefOffset ->
-                                               (case ((let sem_CExpr_Ann_2 :: T_CExpr_2
-                                                           sem_CExpr_Ann_2 =
-                                                               (\ _lhsIevalCtx
-                                                                  _lhsIimpNmLkup
-                                                                  _lhsIisTopApp
-                                                                  _lhsIisTopTup
-                                                                  _lhsImodNr
-                                                                  _lhsInm2ref
-                                                                  _lhsIopts
-                                                                  _lhsIstackDepth
-                                                                  _lhsItailCtx ->
-                                                                    (case (_lhsItailCtx) of
-                                                                     { _exprOtailCtx ->
-                                                                     (case (_lhsIstackDepth) of
-                                                                      { _annOstackDepth ->
-                                                                      (case (_lhsIopts) of
-                                                                       { _annOopts ->
-                                                                       (case (_lhsInm2ref) of
-                                                                        { _annOnm2ref ->
-                                                                        (case (_lhsImodNr) of
-                                                                         { _annOmodNr ->
-                                                                         (case (_lhsIlev) of
-                                                                          { _annOlev ->
-                                                                          (case (_lhsIimpNmLkup) of
-                                                                           { _annOimpNmLkup ->
-                                                                           (case (ann_1 _annOimpNmLkup _annOlev _annOmodNr _annOnm2ref _annOopts _annOstackDepth) of
-                                                                            { ( _annIstackDepth) ->
-                                                                                (case (_annIstackDepth) of
-                                                                                 { _exprOstackDepth ->
-                                                                                 (case (_lhsIopts) of
-                                                                                  { _exprOopts ->
-                                                                                  (case (_lhsInm2ref) of
-                                                                                   { _exprOnm2ref ->
-                                                                                   (case (_lhsImodNr) of
-                                                                                    { _exprOmodNr ->
-                                                                                    (case (_lhsIisTopTup) of
-                                                                                     { _exprOisTopTup ->
-                                                                                     (case (_lhsIisTopApp) of
-                                                                                      { _exprOisTopApp ->
-                                                                                      (case (_lhsIimpNmLkup) of
-                                                                                       { _exprOimpNmLkup ->
-                                                                                       (case (_lhsIevalCtx) of
-                                                                                        { _exprOevalCtx ->
-                                                                                        (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                                                                         { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                                                                             (case (_exprIappFunKind) of
-                                                                                              { _lhsOappFunKind ->
-                                                                                              (case (_exprIcrb) of
-                                                                                               { _lhsOcrb ->
-                                                                                               (case (_exprIcre) of
-                                                                                                { _lhsOcre ->
-                                                                                                (case (_exprIcreAppArgL) of
-                                                                                                 { _lhsOcreAppArgL ->
-                                                                                                 (case (_exprIcreAppFun) of
-                                                                                                  { _lhsOcreAppFun ->
-                                                                                                  (case (_exprIcreLamArgL) of
-                                                                                                   { _lhsOcreLamArgL ->
-                                                                                                   (case (_exprIcreLamBody) of
-                                                                                                    { _lhsOcreLamBody ->
-                                                                                                    (case (panic "Core.ToCoreRun.CExpr.crse") of
-                                                                                                     { _crse ->
-                                                                                                     (case (_crse) of
-                                                                                                      { _lhsOcrse ->
-                                                                                                      (case (_exprImbFFIApp) of
-                                                                                                       { _lhsOmbFFIApp ->
-                                                                                                       (case (_exprImbLam) of
-                                                                                                        { _lhsOmbLam ->
-                                                                                                        (case (_exprImbVar) of
-                                                                                                         { _lhsOmbVar ->
-                                                                                                         (case (_exprIrefOffsetMax) of
-                                                                                                          { _lhsOrefOffsetMax ->
-                                                                                                          (case (_exprIstackDepth) of
-                                                                                                           { _lhsOstackDepth ->
-                                                                                                           (case (_exprIstackDepthMax) of
-                                                                                                            { _lhsOstackDepthMax ->
-                                                                                                            (case (panic "Core.ToCoreRun.CExpr.ref") of
-                                                                                                             { _vref ->
-                                                                                                             (case (_vref) of
-                                                                                                              { _lhsOvref ->
-                                                                                                              ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                                                       in  sem_CExpr_Ann_2)) of
-                                                { ( sem_CExpr_2) ->
-                                                ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
-                  in  sem_CExpr_Ann_1)) of
-           { ( sem_CExpr_1) ->
-           ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
--- CExprAnn ----------------------------------------------------
-{-
-   visit 0:
-      chained attribute:
-         refOffset            : Int
-   visit 1:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-   alternatives:
-      alternative Ty:
-         child ty             : {Ty}
-      alternative Coe:
-         child coe            : {RelevCoe}
-      alternative Debug:
-         child info           : {String}
--}
--- cata
-sem_CExprAnn :: CExprAnn ->
-                T_CExprAnn
-sem_CExprAnn (CExprAnn_Ty _ty) =
-    (sem_CExprAnn_Ty _ty)
-sem_CExprAnn (CExprAnn_Coe _coe) =
-    (sem_CExprAnn_Coe _coe)
-sem_CExprAnn (CExprAnn_Debug _info) =
-    (sem_CExprAnn_Debug _info)
--- semantic domain
-type T_CExprAnn = Int ->
-                  ( Int,T_CExprAnn_1)
-type T_CExprAnn_1 = (HsName -> Maybe Int) ->
-                    Int ->
-                    Int ->
-                    (CR.Nm2RefMp) ->
-                    EHCOpts ->
-                    Int ->
-                    ( Int)
-sem_CExprAnn_Ty :: Ty ->
-                   T_CExprAnn
-sem_CExprAnn_Ty ty_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CExprAnn_Ty_1 :: T_CExprAnn_1
-                      sem_CExprAnn_Ty_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CExprAnn_Ty_1)) of
-           { ( sem_CExprAnn_1) ->
-           ( _lhsOrefOffset,sem_CExprAnn_1) }) }))
-sem_CExprAnn_Coe :: RelevCoe ->
-                    T_CExprAnn
-sem_CExprAnn_Coe coe_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CExprAnn_Coe_1 :: T_CExprAnn_1
-                      sem_CExprAnn_Coe_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CExprAnn_Coe_1)) of
-           { ( sem_CExprAnn_1) ->
-           ( _lhsOrefOffset,sem_CExprAnn_1) }) }))
-sem_CExprAnn_Debug :: String ->
-                      T_CExprAnn
-sem_CExprAnn_Debug info_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CExprAnn_Debug_1 :: T_CExprAnn_1
-                      sem_CExprAnn_Debug_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CExprAnn_Debug_1)) of
-           { ( sem_CExprAnn_1) ->
-           ( _lhsOrefOffset,sem_CExprAnn_1) }) }))
--- CImport -----------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         impNmL               : [HsName]
-   alternatives:
-      alternative Import:
-         child nm             : {HsName}
--}
--- cata
-sem_CImport :: CImport ->
-               T_CImport
-sem_CImport (CImport_Import _nm) =
-    (sem_CImport_Import _nm)
--- semantic domain
-type T_CImport = ( ([HsName]))
-sem_CImport_Import :: HsName ->
-                      T_CImport
-sem_CImport_Import nm_ =
-    (case ([nm_]) of
-     { _lhsOimpNmL ->
-     ( _lhsOimpNmL) })
--- CImportL ----------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         impNmL               : [HsName]
-   alternatives:
-      alternative Cons:
-         child hd             : CImport 
-         child tl             : CImportL 
-      alternative Nil:
--}
--- cata
-sem_CImportL :: CImportL ->
-                T_CImportL
-sem_CImportL list =
-    (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
--- semantic domain
-type T_CImportL = ( ([HsName]))
-sem_CImportL_Cons :: T_CImport ->
-                     T_CImportL ->
-                     T_CImportL
-sem_CImportL_Cons hd_ tl_ =
-    (case (tl_) of
-     { ( _tlIimpNmL) ->
-         (case (hd_) of
-          { ( _hdIimpNmL) ->
-              (case (_hdIimpNmL ++ _tlIimpNmL) of
-               { _lhsOimpNmL ->
-               ( _lhsOimpNmL) }) }) })
-sem_CImportL_Nil :: T_CImportL
-sem_CImportL_Nil =
-    (case ([]) of
-     { _lhsOimpNmL ->
-     ( _lhsOimpNmL) })
--- CMetaBind ---------------------------------------------------
-{-
-   visit 0:
-      chained attribute:
-         refOffset            : Int
-   visit 1:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-   alternatives:
-      alternative Plain:
-      alternative Function0:
-      alternative Function1:
-      alternative Apply0:
--}
--- cata
-sem_CMetaBind :: CMetaBind ->
-                 T_CMetaBind
-sem_CMetaBind (CMetaBind_Plain) =
-    (sem_CMetaBind_Plain)
-sem_CMetaBind (CMetaBind_Function0) =
-    (sem_CMetaBind_Function0)
-sem_CMetaBind (CMetaBind_Function1) =
-    (sem_CMetaBind_Function1)
-sem_CMetaBind (CMetaBind_Apply0) =
-    (sem_CMetaBind_Apply0)
--- semantic domain
-type T_CMetaBind = Int ->
-                   ( Int,T_CMetaBind_1)
-type T_CMetaBind_1 = (HsName -> Maybe Int) ->
-                     Int ->
-                     Int ->
-                     (CR.Nm2RefMp) ->
-                     EHCOpts ->
-                     Int ->
-                     ( Int)
-sem_CMetaBind_Plain :: T_CMetaBind
-sem_CMetaBind_Plain =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaBind_Plain_1 :: T_CMetaBind_1
-                      sem_CMetaBind_Plain_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaBind_Plain_1)) of
-           { ( sem_CMetaBind_1) ->
-           ( _lhsOrefOffset,sem_CMetaBind_1) }) }))
-sem_CMetaBind_Function0 :: T_CMetaBind
-sem_CMetaBind_Function0 =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaBind_Function0_1 :: T_CMetaBind_1
-                      sem_CMetaBind_Function0_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaBind_Function0_1)) of
-           { ( sem_CMetaBind_1) ->
-           ( _lhsOrefOffset,sem_CMetaBind_1) }) }))
-sem_CMetaBind_Function1 :: T_CMetaBind
-sem_CMetaBind_Function1 =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaBind_Function1_1 :: T_CMetaBind_1
-                      sem_CMetaBind_Function1_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaBind_Function1_1)) of
-           { ( sem_CMetaBind_1) ->
-           ( _lhsOrefOffset,sem_CMetaBind_1) }) }))
-sem_CMetaBind_Apply0 :: T_CMetaBind
-sem_CMetaBind_Apply0 =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaBind_Apply0_1 :: T_CMetaBind_1
-                      sem_CMetaBind_Apply0_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaBind_Apply0_1)) of
-           { ( sem_CMetaBind_1) ->
-           ( _lhsOrefOffset,sem_CMetaBind_1) }) }))
--- CMetaVal ----------------------------------------------------
-{-
-   visit 0:
-      chained attribute:
-         refOffset            : Int
-   visit 1:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-   alternatives:
-      alternative Val:
-      alternative Dict:
-      alternative DictClass:
-         child tracks         : {[Track]}
-      alternative DictInstance:
-         child tracks         : {[Track]}
-      alternative Track:
-         child track          : {Track}
--}
--- cata
-sem_CMetaVal :: CMetaVal ->
-                T_CMetaVal
-sem_CMetaVal (CMetaVal_Val) =
-    (sem_CMetaVal_Val)
-sem_CMetaVal (CMetaVal_Dict) =
-    (sem_CMetaVal_Dict)
-sem_CMetaVal (CMetaVal_DictClass _tracks) =
-    (sem_CMetaVal_DictClass _tracks)
-sem_CMetaVal (CMetaVal_DictInstance _tracks) =
-    (sem_CMetaVal_DictInstance _tracks)
-sem_CMetaVal (CMetaVal_Track _track) =
-    (sem_CMetaVal_Track _track)
--- semantic domain
-type T_CMetaVal = Int ->
-                  ( Int,T_CMetaVal_1)
-type T_CMetaVal_1 = (HsName -> Maybe Int) ->
-                    Int ->
-                    Int ->
-                    (CR.Nm2RefMp) ->
-                    EHCOpts ->
-                    Int ->
-                    ( Int)
-sem_CMetaVal_Val :: T_CMetaVal
-sem_CMetaVal_Val =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaVal_Val_1 :: T_CMetaVal_1
-                      sem_CMetaVal_Val_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaVal_Val_1)) of
-           { ( sem_CMetaVal_1) ->
-           ( _lhsOrefOffset,sem_CMetaVal_1) }) }))
-sem_CMetaVal_Dict :: T_CMetaVal
-sem_CMetaVal_Dict =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaVal_Dict_1 :: T_CMetaVal_1
-                      sem_CMetaVal_Dict_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaVal_Dict_1)) of
-           { ( sem_CMetaVal_1) ->
-           ( _lhsOrefOffset,sem_CMetaVal_1) }) }))
-sem_CMetaVal_DictClass :: ([Track]) ->
-                          T_CMetaVal
-sem_CMetaVal_DictClass tracks_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaVal_DictClass_1 :: T_CMetaVal_1
-                      sem_CMetaVal_DictClass_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaVal_DictClass_1)) of
-           { ( sem_CMetaVal_1) ->
-           ( _lhsOrefOffset,sem_CMetaVal_1) }) }))
-sem_CMetaVal_DictInstance :: ([Track]) ->
-                             T_CMetaVal
-sem_CMetaVal_DictInstance tracks_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaVal_DictInstance_1 :: T_CMetaVal_1
-                      sem_CMetaVal_DictInstance_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaVal_DictInstance_1)) of
-           { ( sem_CMetaVal_1) ->
-           ( _lhsOrefOffset,sem_CMetaVal_1) }) }))
-sem_CMetaVal_Track :: Track ->
-                      T_CMetaVal
-sem_CMetaVal_Track track_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case ((let sem_CMetaVal_Track_1 :: T_CMetaVal_1
-                      sem_CMetaVal_Track_1 =
-                          (\ _lhsIimpNmLkup
-                             _lhsIlev
-                             _lhsImodNr
-                             _lhsInm2ref
-                             _lhsIopts
-                             _lhsIstackDepth ->
-                               (case (_lhsIstackDepth) of
-                                { _lhsOstackDepth ->
-                                ( _lhsOstackDepth) }))
-                  in  sem_CMetaVal_Track_1)) of
-           { ( sem_CMetaVal_1) ->
-           ( _lhsOrefOffset,sem_CMetaVal_1) }) }))
--- CMetas ------------------------------------------------------
-{-
-   visit 0:
-      chained attribute:
-         refOffset            : Int
-   visit 1:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attribute:
-         stackDepth           : Int
-   alternatives:
-      alternative Tuple:
-         child x1             : CMetaBind 
-         child x2             : CMetaVal 
--}
--- cata
-sem_CMetas :: CMetas ->
-              T_CMetas
-sem_CMetas ( x1,x2) =
-    (sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
--- semantic domain
-type T_CMetas = Int ->
-                ( Int,T_CMetas_1)
-type T_CMetas_1 = (HsName -> Maybe Int) ->
-                  Int ->
-                  Int ->
-                  (CR.Nm2RefMp) ->
-                  EHCOpts ->
-                  Int ->
-                  ( Int)
-sem_CMetas_Tuple :: T_CMetaBind ->
-                    T_CMetaVal ->
-                    T_CMetas
-sem_CMetas_Tuple x1_ x2_ =
-    (\ _lhsIrefOffset ->
-         (case (_lhsIrefOffset) of
-          { _x1OrefOffset ->
-          (case (x1_ _x1OrefOffset) of
-           { ( _x1IrefOffset,x1_1) ->
-               (case (_x1IrefOffset) of
-                { _x2OrefOffset ->
-                (case (x2_ _x2OrefOffset) of
-                 { ( _x2IrefOffset,x2_1) ->
-                     (case (_x2IrefOffset) of
-                      { _lhsOrefOffset ->
-                      (case ((let sem_CMetas_Tuple_1 :: T_CMetas_1
-                                  sem_CMetas_Tuple_1 =
-                                      (\ _lhsIimpNmLkup
-                                         _lhsIlev
-                                         _lhsImodNr
-                                         _lhsInm2ref
-                                         _lhsIopts
-                                         _lhsIstackDepth ->
-                                           (case (_lhsIstackDepth) of
-                                            { _x1OstackDepth ->
-                                            (case (_lhsIopts) of
-                                             { _x1Oopts ->
-                                             (case (_lhsInm2ref) of
-                                              { _x1Onm2ref ->
-                                              (case (_lhsImodNr) of
-                                               { _x1OmodNr ->
-                                               (case (_lhsIlev) of
-                                                { _x1Olev ->
-                                                (case (_lhsIimpNmLkup) of
-                                                 { _x1OimpNmLkup ->
-                                                 (case (x1_1 _x1OimpNmLkup _x1Olev _x1OmodNr _x1Onm2ref _x1Oopts _x1OstackDepth) of
-                                                  { ( _x1IstackDepth) ->
-                                                      (case (_x1IstackDepth) of
-                                                       { _x2OstackDepth ->
-                                                       (case (_lhsIopts) of
-                                                        { _x2Oopts ->
-                                                        (case (_lhsInm2ref) of
-                                                         { _x2Onm2ref ->
-                                                         (case (_lhsImodNr) of
-                                                          { _x2OmodNr ->
-                                                          (case (_lhsIlev) of
-                                                           { _x2Olev ->
-                                                           (case (_lhsIimpNmLkup) of
-                                                            { _x2OimpNmLkup ->
-                                                            (case (x2_1 _x2OimpNmLkup _x2Olev _x2OmodNr _x2Onm2ref _x2Oopts _x2OstackDepth) of
-                                                             { ( _x2IstackDepth) ->
-                                                                 (case (_x2IstackDepth) of
-                                                                  { _lhsOstackDepth ->
-                                                                  ( _lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-                              in  sem_CMetas_Tuple_1)) of
-                       { ( sem_CMetas_1) ->
-                       ( _lhsOrefOffset,sem_CMetas_1) }) }) }) }) }) }))
--- CModule -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         hasMain              : Bool
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      synthesized attributes:
-         crm                  : CR.Mod
-         nm2refGath           : CR.Nm2RefMp
-   alternatives:
-      alternative Mod:
-         child moduleNm       : {HsName}
-         child exports        : CExportL 
-         child imports        : CImportL 
-         child declMetas      : CDeclMetaL 
-         child expr           : CExpr 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local tailCtx     : _
-            local impNmLkup   : _
-            local nm2refNew   : _
-            local crmBinds    : _
-            local creMod      : _
--}
--- cata
-sem_CModule :: CModule ->
-               T_CModule
-sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) =
-    (sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
--- semantic domain
-type T_CModule = Bool ->
-                 Int ->
-                 Int ->
-                 (CR.Nm2RefMp) ->
-                 EHCOpts ->
-                 ( (CR.Mod),(CR.Nm2RefMp))
-sem_CModule_Mod :: HsName ->
-                   T_CExportL ->
-                   T_CImportL ->
-                   T_CDeclMetaL ->
-                   T_CExpr ->
-                   T_CModule
-sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
-    (\ _lhsIhasMain
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts ->
-         (case (ExprIsOther) of
-          { _whatAbove ->
-          (case (_whatAbove) of
-           { _exprOwhatAbove ->
-           (case (TailCtx_Plain) of
-            { _tailCtx ->
-            (case (_tailCtx) of
-             { _exprOtailCtx ->
-             (case (_lhsIlev) of
-              { _exprOlev ->
-              (case (imports_) of
-               { ( _importsIimpNmL) ->
-                   (case (\n -> elemIndex n _importsIimpNmL) of
-                    { _impNmLkup ->
-                    (case (_impNmLkup) of
-                     { _exprOimpNmLkup ->
-                     (case (0) of
-                      { _exprOrefOffset ->
-                      (case (expr_) of
-                       { ( _exprIwhatBelow,expr_1) ->
-                           (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
-                            { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
-                                (case (_exprInm2refGath) of
-                                 { _nm2refNew ->
-                                 (case (_nm2refNew `CR.nm2refUnion` _lhsInm2ref) of
-                                  { _exprOnm2ref ->
-                                  (case (0) of
-                                   { _exprOstackDepth ->
-                                   (case (_lhsIopts) of
-                                    { _exprOopts ->
-                                    (case (_lhsImodNr) of
-                                     { _exprOmodNr ->
-                                     (case (EvalCtx_Eval) of
-                                      { _exprOevalCtx ->
-                                      (case (True) of
-                                       { _exprOisTopTup ->
-                                       (case (True) of
-                                        { _exprOisTopApp ->
-                                        (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
-                                         { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
-                                             (case (CR.crarrayFromList $ map snd _exprIcrb) of
-                                              { _crmBinds ->
-                                              (case (_exprIcre) of
-                                               { _creMod ->
-                                               (case (declMetas_) of
-                                                { ( _declMetasIcrmt) ->
-                                                    (case (CR.Mod_Mod (CR.nm2RefMpInverse _nm2refNew)
-                                                             moduleNm_ _lhsImodNr (_exprIstackDepthMax + 2                               )
-                                                             (map CR.Import_Import _importsIimpNmL)
-                                                             _declMetasIcrmt _crmBinds (if _lhsIhasMain then (Just $ CR.mkEval _creMod) else Nothing)) of
-                                                     { _lhsOcrm ->
-                                                     (case (Rel.mapRng (CR.rrefToExp moduleNm_) _exprInm2refGath) of
-                                                      { _lhsOnm2refGath ->
-                                                      ( _lhsOcrm,_lhsOnm2refGath) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CPat --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-      synthesized attributes:
-         crp                  : CR.Pat
-         fldNmL               : [HsName]
-   alternatives:
-      alternative Var:
-         child pnm            : {HsName}
-      alternative Con:
-         child tag            : {CTag}
-         child rest           : CPatRest 
-         child binds          : CPatFldL 
-      alternative Int:
-         child int            : {Int}
-      alternative Char:
-         child char           : {Char}
-      alternative BoolExpr:
-         child cexpr          : {CExpr}
--}
--- cata
-sem_CPat :: CPat ->
-            T_CPat
-sem_CPat (CPat_Var _pnm) =
-    (sem_CPat_Var _pnm)
-sem_CPat (CPat_Con _tag _rest _binds) =
-    (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
-sem_CPat (CPat_Int _int) =
-    (sem_CPat_Int _int)
-sem_CPat (CPat_Char _char) =
-    (sem_CPat_Char _char)
-sem_CPat (CPat_BoolExpr _cexpr) =
-    (sem_CPat_BoolExpr _cexpr)
--- semantic domain
-type T_CPat = (HsName -> Maybe Int) ->
-              Int ->
-              Int ->
-              (CR.Nm2RefMp) ->
-              EHCOpts ->
-              Int ->
-              Int ->
-              ( (CR.Pat),([HsName]),Int,Int)
-sem_CPat_Var :: HsName ->
-                T_CPat
-sem_CPat_Var pnm_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (CR.Pat_Con 0) of
-          { _lhsOcrp ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (_lhsIrefOffset) of
-            { _lhsOrefOffset ->
-            (case (_lhsIstackDepth) of
-             { _lhsOstackDepth ->
-             ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
-sem_CPat_Con :: CTag ->
-                T_CPatRest ->
-                T_CPatFldL ->
-                T_CPat
-sem_CPat_Con tag_ rest_ binds_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (CR.Pat_Con (ctagTag tag_)) of
-          { _lhsOcrp ->
-          (case (_lhsIstackDepth) of
-           { _restOstackDepth ->
-           (case (_lhsIrefOffset) of
-            { _restOrefOffset ->
-            (case (_lhsIopts) of
-             { _restOopts ->
-             (case (_lhsInm2ref) of
-              { _restOnm2ref ->
-              (case (_lhsImodNr) of
-               { _restOmodNr ->
-               (case (_lhsIlev) of
-                { _restOlev ->
-                (case (_lhsIimpNmLkup) of
-                 { _restOimpNmLkup ->
-                 (case (rest_ _restOimpNmLkup _restOlev _restOmodNr _restOnm2ref _restOopts _restOrefOffset _restOstackDepth) of
-                  { ( _restIrefOffset,_restIstackDepth) ->
-                      (case (_restIstackDepth) of
-                       { _bindsOstackDepth ->
-                       (case (_restIrefOffset) of
-                        { _bindsOrefOffset ->
-                        (case (_lhsIopts) of
-                         { _bindsOopts ->
-                         (case (_lhsInm2ref) of
-                          { _bindsOnm2ref ->
-                          (case (_lhsImodNr) of
-                           { _bindsOmodNr ->
-                           (case (_lhsIlev) of
-                            { _bindsOlev ->
-                            (case (_lhsIimpNmLkup) of
-                             { _bindsOimpNmLkup ->
-                             (case (binds_ _bindsOimpNmLkup _bindsOlev _bindsOmodNr _bindsOnm2ref _bindsOopts _bindsOrefOffset _bindsOstackDepth) of
-                              { ( _bindsIfldNmL,_bindsIrefOffset,_bindsIstackDepth) ->
-                                  (case (_bindsIfldNmL) of
-                                   { _lhsOfldNmL ->
-                                   (case (_bindsIrefOffset) of
-                                    { _lhsOrefOffset ->
-                                    (case (_bindsIstackDepth) of
-                                     { _lhsOstackDepth ->
-                                     ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CPat_Int :: Int ->
-                T_CPat
-sem_CPat_Int int_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (CR.Pat_Con 0) of
-          { _lhsOcrp ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (_lhsIrefOffset) of
-            { _lhsOrefOffset ->
-            (case (_lhsIstackDepth) of
-             { _lhsOstackDepth ->
-             ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
-sem_CPat_Char :: Char ->
-                 T_CPat
-sem_CPat_Char char_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (CR.Pat_Con 0) of
-          { _lhsOcrp ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (_lhsIrefOffset) of
-            { _lhsOrefOffset ->
-            (case (_lhsIstackDepth) of
-             { _lhsOstackDepth ->
-             ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
-sem_CPat_BoolExpr :: CExpr ->
-                     T_CPat
-sem_CPat_BoolExpr cexpr_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (CR.Pat_Con 0) of
-          { _lhsOcrp ->
-          (case ([]) of
-           { _lhsOfldNmL ->
-           (case (_lhsIrefOffset) of
-            { _lhsOrefOffset ->
-            (case (_lhsIstackDepth) of
-             { _lhsOstackDepth ->
-             ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
--- CPatFld -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-      synthesized attribute:
-         fldNmL               : [HsName]
-   alternatives:
-      alternative Fld:
-         child lbl            : {HsName}
-         child offset         : CExpr 
-         child bind           : CBind 
-         child fldAnns        : CBindAnnL 
-         visit 0:
-            local whatAbove   : {WhatExpr}
-            local fldNm       : _
-            local tailCtx     : _
--}
--- cata
-sem_CPatFld :: CPatFld ->
-               T_CPatFld
-sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
-    (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
--- semantic domain
-type T_CPatFld = (HsName -> Maybe Int) ->
-                 Int ->
-                 Int ->
-                 (CR.Nm2RefMp) ->
-                 EHCOpts ->
-                 Int ->
-                 Int ->
-                 ( ([HsName]),Int,Int)
-sem_CPatFld_Fld :: HsName ->
-                   T_CExpr ->
-                   T_CBind ->
-                   T_CBindAnnL ->
-                   T_CPatFld
-sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIrefOffset) of
-          { _offsetOrefOffset ->
-          (case (offset_) of
-           { ( _offsetIwhatBelow,offset_1) ->
-               (case (ExprIsOther) of
-                { _whatAbove ->
-                (case (_whatAbove) of
-                 { _offsetOwhatAbove ->
-                 (case (_lhsIlev) of
-                  { _offsetOlev ->
-                  (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
-                   { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
-                       (case (_offsetIrefOffset) of
-                        { _bindOrefOffset ->
-                        (case (_lhsIlev) of
-                         { _bindOlev ->
-                         (case (False) of
-                          { _bindOisGlobal ->
-                          (case (bind_ _bindOisGlobal _bindOlev _bindOrefOffset) of
-                           { ( _bindInm,_bindInm2refGath,_bindIrefOffset,bind_1) ->
-                               (case (_bindInm) of
-                                { _fldNm ->
-                                (case ([_fldNm]) of
-                                 { _lhsOfldNmL ->
-                                 (case (_bindIrefOffset) of
-                                  { _fldAnnsOrefOffset ->
-                                  (case (_lhsIstackDepth) of
-                                   { _offsetOstackDepth ->
-                                   (case (TailCtx_Plain) of
-                                    { _tailCtx ->
-                                    (case (_tailCtx) of
-                                     { _offsetOtailCtx ->
-                                     (case (_lhsIopts) of
-                                      { _offsetOopts ->
-                                      (case (_lhsInm2ref) of
-                                       { _offsetOnm2ref ->
-                                       (case (_lhsImodNr) of
-                                        { _offsetOmodNr ->
-                                        (case (_lhsIimpNmLkup) of
-                                         { _offsetOimpNmLkup ->
-                                         (case (EvalCtx_Eval) of
-                                          { _offsetOevalCtx ->
-                                          (case (True) of
-                                           { _offsetOisTopTup ->
-                                           (case (True) of
-                                            { _offsetOisTopApp ->
-                                            (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
-                                             { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
-                                                 (case (_offsetIstackDepth) of
-                                                  { _bindOstackDepth ->
-                                                  (case (EvalCtx_None) of
-                                                   { _bindOevalCtx ->
-                                                   (case (_lhsIopts) of
-                                                    { _bindOopts ->
-                                                    (case (_lhsInm2ref) of
-                                                     { _bindOnm2ref ->
-                                                     (case (_lhsImodNr) of
-                                                      { _bindOmodNr ->
-                                                      (case (_lhsIimpNmLkup) of
-                                                       { _bindOimpNmLkup ->
-                                                       (case (acoreBindcategPlain) of
-                                                        { _bindOletBindingsCateg ->
-                                                        (case (bind_1 _bindOevalCtx _bindOimpNmLkup _bindOletBindingsCateg _bindOmodNr _bindOnm2ref _bindOopts _bindOstackDepth) of
-                                                         { ( _bindIcrb,_bindIrefOffsetMax,_bindIstackDepth,_bindIstackDepthMax) ->
-                                                             (case (_bindIstackDepth) of
-                                                              { _fldAnnsOstackDepth ->
-                                                              (case (_lhsIopts) of
-                                                               { _fldAnnsOopts ->
-                                                               (case (_lhsInm2ref) of
-                                                                { _fldAnnsOnm2ref ->
-                                                                (case (_lhsImodNr) of
-                                                                 { _fldAnnsOmodNr ->
-                                                                 (case (_lhsIlev) of
-                                                                  { _fldAnnsOlev ->
-                                                                  (case (_lhsIimpNmLkup) of
-                                                                   { _fldAnnsOimpNmLkup ->
-                                                                   (case (fldAnns_ _fldAnnsOimpNmLkup _fldAnnsOlev _fldAnnsOmodNr _fldAnnsOnm2ref _fldAnnsOopts _fldAnnsOrefOffset _fldAnnsOstackDepth) of
-                                                                    { ( _fldAnnsIrefOffset,_fldAnnsIstackDepth) ->
-                                                                        (case (_fldAnnsIrefOffset) of
-                                                                         { _lhsOrefOffset ->
-                                                                         (case (_fldAnnsIstackDepth) of
-                                                                          { _lhsOstackDepth ->
-                                                                          ( _lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
--- CPatFldL ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-      synthesized attribute:
-         fldNmL               : [HsName]
-   alternatives:
-      alternative Cons:
-         child hd             : CPatFld 
-         child tl             : CPatFldL 
-      alternative Nil:
--}
--- cata
-sem_CPatFldL :: CPatFldL ->
-                T_CPatFldL
-sem_CPatFldL list =
-    (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
--- semantic domain
-type T_CPatFldL = (HsName -> Maybe Int) ->
-                  Int ->
-                  Int ->
-                  (CR.Nm2RefMp) ->
-                  EHCOpts ->
-                  Int ->
-                  Int ->
-                  ( ([HsName]),Int,Int)
-sem_CPatFldL_Cons :: T_CPatFld ->
-                     T_CPatFldL ->
-                     T_CPatFldL
-sem_CPatFldL_Cons hd_ tl_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIstackDepth) of
-          { _hdOstackDepth ->
-          (case (_lhsIrefOffset) of
-           { _hdOrefOffset ->
-           (case (_lhsIlev) of
-            { _hdOlev ->
-            (case (_lhsIopts) of
-             { _hdOopts ->
-             (case (_lhsInm2ref) of
-              { _hdOnm2ref ->
-              (case (_lhsImodNr) of
-               { _hdOmodNr ->
-               (case (_lhsIimpNmLkup) of
-                { _hdOimpNmLkup ->
-                (case (hd_ _hdOimpNmLkup _hdOlev _hdOmodNr _hdOnm2ref _hdOopts _hdOrefOffset _hdOstackDepth) of
-                 { ( _hdIfldNmL,_hdIrefOffset,_hdIstackDepth) ->
-                     (case (_hdIstackDepth) of
-                      { _tlOstackDepth ->
-                      (case (_hdIrefOffset) of
-                       { _tlOrefOffset ->
-                       (case (_lhsIopts) of
-                        { _tlOopts ->
-                        (case (_lhsInm2ref) of
-                         { _tlOnm2ref ->
-                         (case (_lhsImodNr) of
-                          { _tlOmodNr ->
-                          (case (_lhsIlev) of
-                           { _tlOlev ->
-                           (case (_lhsIimpNmLkup) of
-                            { _tlOimpNmLkup ->
-                            (case (tl_ _tlOimpNmLkup _tlOlev _tlOmodNr _tlOnm2ref _tlOopts _tlOrefOffset _tlOstackDepth) of
-                             { ( _tlIfldNmL,_tlIrefOffset,_tlIstackDepth) ->
-                                 (case (_hdIfldNmL ++ _tlIfldNmL) of
-                                  { _lhsOfldNmL ->
-                                  (case (_tlIrefOffset) of
-                                   { _lhsOrefOffset ->
-                                   (case (_tlIstackDepth) of
-                                    { _lhsOstackDepth ->
-                                    ( _lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
-sem_CPatFldL_Nil :: T_CPatFldL
-sem_CPatFldL_Nil =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case ([]) of
-          { _lhsOfldNmL ->
-          (case (_lhsIrefOffset) of
-           { _lhsOrefOffset ->
-           (case (_lhsIstackDepth) of
-            { _lhsOstackDepth ->
-            ( _lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }))
--- CPatRest ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         impNmLkup            : HsName -> Maybe Int
-         lev                  : Int
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      chained attributes:
-         refOffset            : Int
-         stackDepth           : Int
-   alternatives:
-      alternative Var:
-         child nm             : {HsName}
-      alternative Empty:
--}
--- cata
-sem_CPatRest :: CPatRest ->
-                T_CPatRest
-sem_CPatRest (CPatRest_Var _nm) =
-    (sem_CPatRest_Var _nm)
-sem_CPatRest (CPatRest_Empty) =
-    (sem_CPatRest_Empty)
--- semantic domain
-type T_CPatRest = (HsName -> Maybe Int) ->
-                  Int ->
-                  Int ->
-                  (CR.Nm2RefMp) ->
-                  EHCOpts ->
-                  Int ->
-                  Int ->
-                  ( Int,Int)
-sem_CPatRest_Var :: HsName ->
-                    T_CPatRest
-sem_CPatRest_Var nm_ =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case (_lhsIstackDepth) of
-           { _lhsOstackDepth ->
-           ( _lhsOrefOffset,_lhsOstackDepth) }) }))
-sem_CPatRest_Empty :: T_CPatRest
-sem_CPatRest_Empty =
-    (\ _lhsIimpNmLkup
-       _lhsIlev
-       _lhsImodNr
-       _lhsInm2ref
-       _lhsIopts
-       _lhsIrefOffset
-       _lhsIstackDepth ->
-         (case (_lhsIrefOffset) of
-          { _lhsOrefOffset ->
-          (case (_lhsIstackDepth) of
-           { _lhsOstackDepth ->
-           ( _lhsOrefOffset,_lhsOstackDepth) }) }))
--- CodeAGItf ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         hasMain              : Bool
-         modNr                : Int
-         nm2ref               : CR.Nm2RefMp
-         opts                 : EHCOpts
-      synthesized attributes:
-         crm                  : CR.Mod
-         nm2refGath           : CR.Nm2RefMp
-   alternatives:
-      alternative AGItf:
-         child module         : CModule 
--}
--- cata
-sem_CodeAGItf :: CodeAGItf ->
-                 T_CodeAGItf
-sem_CodeAGItf (CodeAGItf_AGItf _module) =
-    (sem_CodeAGItf_AGItf (sem_CModule _module))
--- semantic domain
-type T_CodeAGItf = Bool ->
-                   Int ->
-                   (CR.Nm2RefMp) ->
-                   EHCOpts ->
-                   ( (CR.Mod),(CR.Nm2RefMp))
-data Inh_CodeAGItf = Inh_CodeAGItf {hasMain_Inh_CodeAGItf :: !(Bool),modNr_Inh_CodeAGItf :: !(Int),nm2ref_Inh_CodeAGItf :: !((CR.Nm2RefMp)),opts_Inh_CodeAGItf :: !(EHCOpts)}
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/ToCoreRun)
+module UHC.Light.Compiler.Core.ToCoreRun(Inh_CodeAGItf (..), Syn_CodeAGItf (..), wrap_CodeAGItf, sem_CodeAGItf
+, cmod2CoreRun', cmod2CoreRun'', cmod2CoreRun) where
+
+import UHC.Light.Compiler.Base.Common
+import UHC.Light.Compiler.Base.TermLike
+import UHC.Light.Compiler.Opts
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Core
+import Data.Maybe
+import qualified Data.Map as Map
+import Data.Char
+import Data.List
+import UHC.Util.Utils
+import qualified UHC.Util.RelMap as Rel
+import qualified UHC.Util.FastSeq as Seq
+import UHC.Light.Compiler.Base.HsName.Builtin
+import UHC.Light.Compiler.CodeGen.BuiltinSizeInfo
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.CodeGen.BasicAnnot
+import qualified UHC.Light.Compiler.CoreRun as CR
+import qualified UHC.Light.Compiler.CoreRun.API as CR
+import qualified UHC.Light.Compiler.CoreRun.Prim as CR
+import UHC.Light.Compiler.Foreign.Extract
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+deriving instance Typeable Syn_CodeAGItf
+
+
+
+-- | Translate to CoreRun
+cmod2CoreRun''
+  :: EHCOpts
+     -> Bool			-- ^ has main?
+     -> Maybe Int       -- ^ sequence nr of module (offset), used to create global per module references
+     -> CR.Nm2RefMp     -- ^ outer bindings
+     -> CModule
+     -> ( Syn_CodeAGItf
+        )
+cmod2CoreRun'' opts hasMain modNr nm2ref cmod
+  =  ( t
+     )
+  where t = wrap_CodeAGItf (sem_CodeAGItf (CodeAGItf_AGItf cmod))
+              (Inh_CodeAGItf
+                 { modNr_Inh_CodeAGItf = modNr
+                 , opts_Inh_CodeAGItf = opts
+                 , hasMain_Inh_CodeAGItf = hasMain
+                 , nm2ref_Inh_CodeAGItf = nm2ref
+                 })
+
+-- | Translate to CoreRun
+cmod2CoreRun'
+  :: EHCOpts
+     -> Bool			-- ^ has main?
+     -> Maybe Int             -- ^ sequence nr of module (offset), used to create global per module references
+     -> CR.Nm2RefMp     -- ^ outer bindings
+     -> CModule
+     -> ( CR.Mod        -- generated CoreRun
+        , CR.Nm2RefMp   -- name to ref mapping of toplevel bindings
+        , Syn_CodeAGItf -- the 2 above, for now duplicate
+        )
+cmod2CoreRun' opts hasMain modNr nm2ref cmod
+  =  ( crm_Syn_CodeAGItf t
+     , nm2refGath_Syn_CodeAGItf t
+     , t
+     )
+  where t = cmod2CoreRun'' opts hasMain modNr nm2ref cmod
+
+cmod2CoreRunWithModNr :: Maybe Int -> CModule -> CR.Mod
+cmod2CoreRunWithModNr nr m = m'
+  where (m',_,_) = cmod2CoreRun' defaultEHCOpts True nr CR.emptyNm2RefMp m
+
+cmod2CoreRun :: CModule -> CR.Mod
+cmod2CoreRun = cmod2CoreRunWithModNr Nothing
+
+
+
+-- | What to do with binding in terms of thunking/forcing?
+data ToBe
+  = ToBe_Thunked
+  | ToBe_Forced
+  | ToBe_LeftAsIs
+  deriving Eq
+
+
+
+-- | Tail context
+data TailCtx
+  = TailCtx_Plain
+  | TailCtx_TailCall
+  | TailCtx_CaseAlt
+
+tailCtxIsTailRec :: TailCtx -> Bool
+tailCtxIsTailRec TailCtx_TailCall = True
+tailCtxIsTailRec _                = False
+
+-- | Wrap according to tail context
+cseCtxWrap :: TailCtx -> CR.Exp -> CR.Exp
+cseCtxWrap TailCtx_TailCall = CR.mkTail
+cseCtxWrap _                = id
+
+
+
+-- | Construct application
+mkApp :: CR.Exp -> CR.CRArray CR.SExp -> CR.Exp
+mkApp f as = CR.mkApp' (CR.mkEval f) as
+
+
+
+-- | Wrap context saving if not at tail recursive position
+tailrec :: TailCtx -> CR.Exp -> CR.Exp
+tailrec tailCtx = if tailCtxIsTailRec tailCtx then id else id -- CR.Exp_Ret -- id
+
+-- | Wrap forcing if at tail recursive position
+taileval :: TailCtx -> CR.Exp -> CR.Exp
+taileval tailCtx = if tailCtxIsTailRec tailCtx then CR.mkEval else id
+
+-- CAlt --------------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         lev                  : Int
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         impNmLkup            : HsName -> Maybe Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+         scrutRef             : CR.RRef
+         tailCtx              : TailCtx
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         cra                  : [CR.Alt]
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+   alternatives:
+      alternative Alt:
+         child pat            : CPat 
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+         visit 1:
+            local nm2refNew   : _
+-}
+-- cata
+sem_CAlt :: CAlt ->
+            T_CAlt
+sem_CAlt (CAlt_Alt _pat _expr) =
+    (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
+-- semantic domain
+type T_CAlt = Int ->
+              Int ->
+              ( (CR.Nm2RefMp),Int,T_CAlt_1)
+type T_CAlt_1 = EvalCtx ->
+                (HsName -> Maybe Int) ->
+                (Maybe Int) ->
+                (CR.Nm2RefMp) ->
+                EHCOpts ->
+                (CR.RRef) ->
+                Int ->
+                TailCtx ->
+                ( ([CR.Alt]),Int,Int,Int)
+sem_CAlt_Alt :: T_CPat ->
+                T_CExpr ->
+                T_CAlt
+sem_CAlt_Alt pat_ expr_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIlev) of
+            { _exprOlev ->
+            (case (_lhsIrefOffset) of
+             { _patOrefOffset ->
+             (case (_lhsIlev) of
+              { _patOlev ->
+              (case (_lhsIrefOffset) of
+               { _exprOrefOffset ->
+               (case (expr_) of
+                { ( _exprIwhatBelow,expr_1) ->
+                    (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                     { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                         (case (pat_ _patOlev _patOrefOffset) of
+                          { ( _patInm2refGath,pat_1) ->
+                              (case (_patInm2refGath `CR.nm2refUnion` _exprInm2refGath) of
+                               { _lhsOnm2refGath ->
+                               (case (_lhsIrefOffset) of
+                                { _lhsOrefOffset ->
+                                (case ((let sem_CAlt_Alt_1 :: T_CAlt_1
+                                            sem_CAlt_Alt_1 =
+                                                (\ _lhsIevalCtx
+                                                   _lhsIimpNmLkup
+                                                   _lhsImodNr
+                                                   _lhsInm2ref
+                                                   _lhsIopts
+                                                   _lhsIscrutRef
+                                                   _lhsIstackDepth
+                                                   _lhsItailCtx ->
+                                                     (case (_lhsItailCtx) of
+                                                      { _exprOtailCtx ->
+                                                      (case (_lhsIimpNmLkup) of
+                                                       { _exprOimpNmLkup ->
+                                                       (case (_lhsIstackDepth) of
+                                                        { _patOstackDepth ->
+                                                        (case (_lhsIopts) of
+                                                         { _patOopts ->
+                                                         (case (_lhsInm2ref) of
+                                                          { _patOnm2ref ->
+                                                          (case (_lhsImodNr) of
+                                                           { _patOmodNr ->
+                                                           (case (_lhsIimpNmLkup) of
+                                                            { _patOimpNmLkup ->
+                                                            (case (pat_1 _patOimpNmLkup _patOmodNr _patOnm2ref _patOopts _patOstackDepth) of
+                                                             { ( _patIcrp,_patIfldNmL,_patIrefOffset,_patIstackDepth) ->
+                                                                 (case (Rel.fromList [ (n, CR.RRef_Fld _lhsIscrutRef i) | (n,i) <- zip _patIfldNmL [0..] ]) of
+                                                                  { _nm2refNew ->
+                                                                  (case (_nm2refNew `CR.nm2refUnion` _lhsInm2ref) of
+                                                                   { _exprOnm2ref ->
+                                                                   (case (_lhsIstackDepth) of
+                                                                    { _exprOstackDepth ->
+                                                                    (case (_lhsIopts) of
+                                                                     { _exprOopts ->
+                                                                     (case (_lhsImodNr) of
+                                                                      { _exprOmodNr ->
+                                                                      (case (_lhsIevalCtx) of
+                                                                       { _exprOevalCtx ->
+                                                                       (case (True) of
+                                                                        { _exprOisTopTup ->
+                                                                        (case (True) of
+                                                                         { _exprOisTopApp ->
+                                                                         (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                          { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                              (case ([CR.Alt_Alt (CR.nm2RefMpInverse _nm2refNew)                _exprIcre]) of
+                                                                               { _lhsOcra ->
+                                                                               (case (max _exprIrefOffset _exprIrefOffsetMax) of
+                                                                                { _lhsOrefOffsetMax ->
+                                                                                (case (_lhsIstackDepth) of
+                                                                                 { _lhsOstackDepth ->
+                                                                                 (case (max _exprIstackDepth _exprIstackDepthMax) of
+                                                                                  { _lhsOstackDepthMax ->
+                                                                                  ( _lhsOcra,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                        in  sem_CAlt_Alt_1)) of
+                                 { ( sem_CAlt_1) ->
+                                 ( _lhsOnm2refGath,_lhsOrefOffset,sem_CAlt_1) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CAltL -------------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         lev                  : Int
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         impNmLkup            : HsName -> Maybe Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+         scrutRef             : CR.RRef
+         tailCtx              : TailCtx
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         cra                  : [CR.Alt]
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+   alternatives:
+      alternative Cons:
+         child hd             : CAlt 
+         child tl             : CAltL 
+      alternative Nil:
+-}
+-- cata
+sem_CAltL :: CAltL ->
+             T_CAltL
+sem_CAltL list =
+    (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
+-- semantic domain
+type T_CAltL = Int ->
+               Int ->
+               ( (CR.Nm2RefMp),Int,T_CAltL_1)
+type T_CAltL_1 = EvalCtx ->
+                 (HsName -> Maybe Int) ->
+                 (Maybe Int) ->
+                 (CR.Nm2RefMp) ->
+                 EHCOpts ->
+                 (CR.RRef) ->
+                 Int ->
+                 TailCtx ->
+                 ( ([CR.Alt]),Int,Int,Int)
+sem_CAltL_Cons :: T_CAlt ->
+                  T_CAltL ->
+                  T_CAltL
+sem_CAltL_Cons hd_ tl_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _hdOrefOffset ->
+          (case (_lhsIlev) of
+           { _hdOlev ->
+           (case (hd_ _hdOlev _hdOrefOffset) of
+            { ( _hdInm2refGath,_hdIrefOffset,hd_1) ->
+                (case (_hdIrefOffset) of
+                 { _tlOrefOffset ->
+                 (case (_lhsIlev) of
+                  { _tlOlev ->
+                  (case (tl_ _tlOlev _tlOrefOffset) of
+                   { ( _tlInm2refGath,_tlIrefOffset,tl_1) ->
+                       (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
+                        { _lhsOnm2refGath ->
+                        (case (_tlIrefOffset) of
+                         { _lhsOrefOffset ->
+                         (case ((let sem_CAltL_Cons_1 :: T_CAltL_1
+                                     sem_CAltL_Cons_1 =
+                                         (\ _lhsIevalCtx
+                                            _lhsIimpNmLkup
+                                            _lhsImodNr
+                                            _lhsInm2ref
+                                            _lhsIopts
+                                            _lhsIscrutRef
+                                            _lhsIstackDepth
+                                            _lhsItailCtx ->
+                                              (case (_lhsItailCtx) of
+                                               { _tlOtailCtx ->
+                                               (case (_lhsIstackDepth) of
+                                                { _hdOstackDepth ->
+                                                (case (_lhsItailCtx) of
+                                                 { _hdOtailCtx ->
+                                                 (case (_lhsIscrutRef) of
+                                                  { _hdOscrutRef ->
+                                                  (case (_lhsIopts) of
+                                                   { _hdOopts ->
+                                                   (case (_lhsInm2ref) of
+                                                    { _hdOnm2ref ->
+                                                    (case (_lhsImodNr) of
+                                                     { _hdOmodNr ->
+                                                     (case (_lhsIimpNmLkup) of
+                                                      { _hdOimpNmLkup ->
+                                                      (case (_lhsIevalCtx) of
+                                                       { _hdOevalCtx ->
+                                                       (case (hd_1 _hdOevalCtx _hdOimpNmLkup _hdOmodNr _hdOnm2ref _hdOopts _hdOscrutRef _hdOstackDepth _hdOtailCtx) of
+                                                        { ( _hdIcra,_hdIrefOffsetMax,_hdIstackDepth,_hdIstackDepthMax) ->
+                                                            (case (_hdIstackDepth) of
+                                                             { _tlOstackDepth ->
+                                                             (case (_lhsIscrutRef) of
+                                                              { _tlOscrutRef ->
+                                                              (case (_lhsInm2ref) of
+                                                               { _tlOnm2ref ->
+                                                               (case (_lhsIimpNmLkup) of
+                                                                { _tlOimpNmLkup ->
+                                                                (case (_lhsIopts) of
+                                                                 { _tlOopts ->
+                                                                 (case (_lhsImodNr) of
+                                                                  { _tlOmodNr ->
+                                                                  (case (_lhsIevalCtx) of
+                                                                   { _tlOevalCtx ->
+                                                                   (case (tl_1 _tlOevalCtx _tlOimpNmLkup _tlOmodNr _tlOnm2ref _tlOopts _tlOscrutRef _tlOstackDepth _tlOtailCtx) of
+                                                                    { ( _tlIcra,_tlIrefOffsetMax,_tlIstackDepth,_tlIstackDepthMax) ->
+                                                                        (case (_hdIcra ++ _tlIcra) of
+                                                                         { _lhsOcra ->
+                                                                         (case (_hdIrefOffsetMax `max` _tlIrefOffsetMax) of
+                                                                          { _lhsOrefOffsetMax ->
+                                                                          (case (_tlIstackDepth) of
+                                                                           { _lhsOstackDepth ->
+                                                                           (case (_hdIstackDepthMax `max` _tlIstackDepthMax) of
+                                                                            { _lhsOstackDepthMax ->
+                                                                            ( _lhsOcra,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                 in  sem_CAltL_Cons_1)) of
+                          { ( sem_CAltL_1) ->
+                          ( _lhsOnm2refGath,_lhsOrefOffset,sem_CAltL_1) }) }) }) }) }) }) }) }) }))
+sem_CAltL_Nil :: T_CAltL
+sem_CAltL_Nil =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CAltL_Nil_1 :: T_CAltL_1
+                       sem_CAltL_Nil_1 =
+                           (\ _lhsIevalCtx
+                              _lhsIimpNmLkup
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIscrutRef
+                              _lhsIstackDepth
+                              _lhsItailCtx ->
+                                (case ([]) of
+                                 { _lhsOcra ->
+                                 (case (0) of
+                                  { _lhsOrefOffsetMax ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   (case (0) of
+                                    { _lhsOstackDepthMax ->
+                                    ( _lhsOcra,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
+                   in  sem_CAltL_Nil_1)) of
+            { ( sem_CAltL_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CAltL_1) }) }) }))
+-- CBind -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         isGlobal             : Bool
+         lev                  : Int
+      chained attribute:
+         refOffset            : Int
+      synthesized attributes:
+         nm                   : HsName
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         impNmLkup            : HsName -> Maybe Int
+         letBindingsCateg     : CBindCateg
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         crb                  : [(HsName, CR.Bind)]
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+   alternatives:
+      alternative Bind:
+         child nm             : {HsName}
+         child bindAspects    : CBoundL 
+         visit 0:
+            local ref         : _
+            local nm2refGath  : _
+            local refOffsetHere : _
+         visit 1:
+            local crb         : _
+-}
+-- cata
+sem_CBind :: CBind ->
+             T_CBind
+sem_CBind (CBind_Bind _nm _bindAspects) =
+    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
+-- semantic domain
+type T_CBind = Bool ->
+               Int ->
+               Int ->
+               ( HsName,(CR.Nm2RefMp),Int,T_CBind_1)
+type T_CBind_1 = EvalCtx ->
+                 (HsName -> Maybe Int) ->
+                 CBindCateg ->
+                 (Maybe Int) ->
+                 (CR.Nm2RefMp) ->
+                 EHCOpts ->
+                 Int ->
+                 ( ([(HsName, CR.Bind)]),Int,Int,Int)
+sem_CBind_Bind :: HsName ->
+                  T_CBoundL ->
+                  T_CBind
+sem_CBind_Bind nm_ bindAspects_ =
+    (\ _lhsIisGlobal
+       _lhsIlev
+       _lhsIrefOffset ->
+         (case (nm_) of
+          { _lhsOnm ->
+          (case (if _lhsIisGlobal
+                 then CR.RRef_Mod _lhsIrefOffset
+                 else CR.RRef_Loc _lhsIlev   _lhsIrefOffset) of
+           { _ref ->
+           (case (Rel.singleton nm_ _ref) of
+            { _nm2refGath ->
+            (case (_nm2refGath) of
+             { _lhsOnm2refGath ->
+             (case (_lhsIrefOffset + 1) of
+              { _refOffsetHere ->
+              (case (_refOffsetHere) of
+               { _lhsOrefOffset ->
+               (case ((let sem_CBind_Bind_1 :: T_CBind_1
+                           sem_CBind_Bind_1 =
+                               (\ _lhsIevalCtx
+                                  _lhsIimpNmLkup
+                                  _lhsIletBindingsCateg
+                                  _lhsImodNr
+                                  _lhsInm2ref
+                                  _lhsIopts
+                                  _lhsIstackDepth ->
+                                    (case (_lhsIstackDepth) of
+                                     { _bindAspectsOstackDepth ->
+                                     (case (_lhsIrefOffset) of
+                                      { _bindAspectsOrefOffset ->
+                                      (case (_lhsInm2ref) of
+                                       { _bindAspectsOnm2ref ->
+                                       (case (_lhsIlev) of
+                                        { _bindAspectsOlev ->
+                                        (case (_lhsIisGlobal) of
+                                         { _bindAspectsOisGlobal ->
+                                         (case (_lhsIimpNmLkup) of
+                                          { _bindAspectsOimpNmLkup ->
+                                          (case (_lhsIevalCtx) of
+                                           { _bindAspectsOevalCtx ->
+                                           (case (nm_) of
+                                            { _bindAspectsOnm ->
+                                            (case (_lhsIopts) of
+                                             { _bindAspectsOopts ->
+                                             (case (_lhsImodNr) of
+                                              { _bindAspectsOmodNr ->
+                                              (case (_lhsIletBindingsCateg) of
+                                               { _bindAspectsOletBindingsCateg ->
+                                               (case (bindAspects_ _bindAspectsOevalCtx _bindAspectsOimpNmLkup _bindAspectsOisGlobal _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOmodNr _bindAspectsOnm _bindAspectsOnm2ref _bindAspectsOopts _bindAspectsOrefOffset _bindAspectsOstackDepth) of
+                                                { ( _bindAspectsIcrb,_bindAspectsInm2refGath,_bindAspectsIrefOffset,_bindAspectsIrefOffsetMax,_bindAspectsIstackDepth,_bindAspectsIstackDepthMax) ->
+                                                    (case (take 1 _bindAspectsIcrb) of
+                                                     { _crb ->
+                                                     (case (_crb) of
+                                                      { _lhsOcrb ->
+                                                      (case (_bindAspectsIrefOffsetMax) of
+                                                       { _lhsOrefOffsetMax ->
+                                                       (case (_bindAspectsIstackDepth) of
+                                                        { _lhsOstackDepth ->
+                                                        (case (_bindAspectsIstackDepthMax) of
+                                                         { _lhsOstackDepthMax ->
+                                                         ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                       in  sem_CBind_Bind_1)) of
+                { ( sem_CBind_1) ->
+                ( _lhsOnm,_lhsOnm2refGath,_lhsOrefOffset,sem_CBind_1) }) }) }) }) }) }) }))
+-- CBindAnn ----------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Coe:
+         child coe            : {RelevCoe}
+-}
+-- cata
+sem_CBindAnn :: CBindAnn ->
+                T_CBindAnn
+sem_CBindAnn (CBindAnn_Coe _coe) =
+    (sem_CBindAnn_Coe _coe)
+-- semantic domain
+type T_CBindAnn = Int ->
+                  ( (CR.Nm2RefMp),Int,T_CBindAnn_1)
+type T_CBindAnn_1 = (HsName -> Maybe Int) ->
+                    Int ->
+                    (Maybe Int) ->
+                    (CR.Nm2RefMp) ->
+                    EHCOpts ->
+                    Int ->
+                    ( Int)
+sem_CBindAnn_Coe :: RelevCoe ->
+                    T_CBindAnn
+sem_CBindAnn_Coe coe_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CBindAnn_Coe_1 :: T_CBindAnn_1
+                       sem_CBindAnn_Coe_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CBindAnn_Coe_1)) of
+            { ( sem_CBindAnn_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindAnn_1) }) }) }))
+-- CBindAnnL ---------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Cons:
+         child hd             : CBindAnn 
+         child tl             : CBindAnnL 
+      alternative Nil:
+-}
+-- cata
+sem_CBindAnnL :: CBindAnnL ->
+                 T_CBindAnnL
+sem_CBindAnnL list =
+    (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
+-- semantic domain
+type T_CBindAnnL = Int ->
+                   ( (CR.Nm2RefMp),Int,T_CBindAnnL_1)
+type T_CBindAnnL_1 = (HsName -> Maybe Int) ->
+                     Int ->
+                     (Maybe Int) ->
+                     (CR.Nm2RefMp) ->
+                     EHCOpts ->
+                     Int ->
+                     ( Int)
+sem_CBindAnnL_Cons :: T_CBindAnn ->
+                      T_CBindAnnL ->
+                      T_CBindAnnL
+sem_CBindAnnL_Cons hd_ tl_ =
+    (\ _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _hdOrefOffset ->
+          (case (hd_ _hdOrefOffset) of
+           { ( _hdInm2refGath,_hdIrefOffset,hd_1) ->
+               (case (_hdIrefOffset) of
+                { _tlOrefOffset ->
+                (case (tl_ _tlOrefOffset) of
+                 { ( _tlInm2refGath,_tlIrefOffset,tl_1) ->
+                     (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
+                      { _lhsOnm2refGath ->
+                      (case (_tlIrefOffset) of
+                       { _lhsOrefOffset ->
+                       (case ((let sem_CBindAnnL_Cons_1 :: T_CBindAnnL_1
+                                   sem_CBindAnnL_Cons_1 =
+                                       (\ _lhsIimpNmLkup
+                                          _lhsIlev
+                                          _lhsImodNr
+                                          _lhsInm2ref
+                                          _lhsIopts
+                                          _lhsIstackDepth ->
+                                            (case (_lhsIstackDepth) of
+                                             { _hdOstackDepth ->
+                                             (case (_lhsIopts) of
+                                              { _hdOopts ->
+                                              (case (_lhsInm2ref) of
+                                               { _hdOnm2ref ->
+                                               (case (_lhsImodNr) of
+                                                { _hdOmodNr ->
+                                                (case (_lhsIlev) of
+                                                 { _hdOlev ->
+                                                 (case (_lhsIimpNmLkup) of
+                                                  { _hdOimpNmLkup ->
+                                                  (case (hd_1 _hdOimpNmLkup _hdOlev _hdOmodNr _hdOnm2ref _hdOopts _hdOstackDepth) of
+                                                   { ( _hdIstackDepth) ->
+                                                       (case (_hdIstackDepth) of
+                                                        { _tlOstackDepth ->
+                                                        (case (_lhsIopts) of
+                                                         { _tlOopts ->
+                                                         (case (_lhsInm2ref) of
+                                                          { _tlOnm2ref ->
+                                                          (case (_lhsImodNr) of
+                                                           { _tlOmodNr ->
+                                                           (case (_lhsIlev) of
+                                                            { _tlOlev ->
+                                                            (case (_lhsIimpNmLkup) of
+                                                             { _tlOimpNmLkup ->
+                                                             (case (tl_1 _tlOimpNmLkup _tlOlev _tlOmodNr _tlOnm2ref _tlOopts _tlOstackDepth) of
+                                                              { ( _tlIstackDepth) ->
+                                                                  (case (_tlIstackDepth) of
+                                                                   { _lhsOstackDepth ->
+                                                                   ( _lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                               in  sem_CBindAnnL_Cons_1)) of
+                        { ( sem_CBindAnnL_1) ->
+                        ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindAnnL_1) }) }) }) }) }) }) }))
+sem_CBindAnnL_Nil :: T_CBindAnnL
+sem_CBindAnnL_Nil =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CBindAnnL_Nil_1 :: T_CBindAnnL_1
+                       sem_CBindAnnL_Nil_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CBindAnnL_Nil_1)) of
+            { ( sem_CBindAnnL_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindAnnL_1) }) }) }))
+-- CBindL ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         isGlobal             : Bool
+         lev                  : Int
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         impNmLkup            : HsName -> Maybe Int
+         letBindingsCateg     : CBindCateg
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         crb                  : [(HsName, CR.Bind)]
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+   alternatives:
+      alternative Cons:
+         child hd             : CBind 
+         child tl             : CBindL 
+      alternative Nil:
+-}
+-- cata
+sem_CBindL :: CBindL ->
+              T_CBindL
+sem_CBindL list =
+    (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
+-- semantic domain
+type T_CBindL = Bool ->
+                Int ->
+                Int ->
+                ( (CR.Nm2RefMp),Int,T_CBindL_1)
+type T_CBindL_1 = EvalCtx ->
+                  (HsName -> Maybe Int) ->
+                  CBindCateg ->
+                  (Maybe Int) ->
+                  (CR.Nm2RefMp) ->
+                  EHCOpts ->
+                  Int ->
+                  ( ([(HsName, CR.Bind)]),Int,Int,Int)
+sem_CBindL_Cons :: T_CBind ->
+                   T_CBindL ->
+                   T_CBindL
+sem_CBindL_Cons hd_ tl_ =
+    (\ _lhsIisGlobal
+       _lhsIlev
+       _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _hdOrefOffset ->
+          (case (_lhsIlev) of
+           { _hdOlev ->
+           (case (_lhsIisGlobal) of
+            { _hdOisGlobal ->
+            (case (hd_ _hdOisGlobal _hdOlev _hdOrefOffset) of
+             { ( _hdInm,_hdInm2refGath,_hdIrefOffset,hd_1) ->
+                 (case (_hdIrefOffset) of
+                  { _tlOrefOffset ->
+                  (case (_lhsIlev) of
+                   { _tlOlev ->
+                   (case (_lhsIisGlobal) of
+                    { _tlOisGlobal ->
+                    (case (tl_ _tlOisGlobal _tlOlev _tlOrefOffset) of
+                     { ( _tlInm2refGath,_tlIrefOffset,tl_1) ->
+                         (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
+                          { _lhsOnm2refGath ->
+                          (case (_tlIrefOffset) of
+                           { _lhsOrefOffset ->
+                           (case ((let sem_CBindL_Cons_1 :: T_CBindL_1
+                                       sem_CBindL_Cons_1 =
+                                           (\ _lhsIevalCtx
+                                              _lhsIimpNmLkup
+                                              _lhsIletBindingsCateg
+                                              _lhsImodNr
+                                              _lhsInm2ref
+                                              _lhsIopts
+                                              _lhsIstackDepth ->
+                                                (case (_lhsIstackDepth) of
+                                                 { _hdOstackDepth ->
+                                                 (case (_lhsIevalCtx) of
+                                                  { _hdOevalCtx ->
+                                                  (case (_lhsIopts) of
+                                                   { _hdOopts ->
+                                                   (case (_lhsInm2ref) of
+                                                    { _hdOnm2ref ->
+                                                    (case (_lhsImodNr) of
+                                                     { _hdOmodNr ->
+                                                     (case (_lhsIletBindingsCateg) of
+                                                      { _hdOletBindingsCateg ->
+                                                      (case (_lhsIimpNmLkup) of
+                                                       { _hdOimpNmLkup ->
+                                                       (case (hd_1 _hdOevalCtx _hdOimpNmLkup _hdOletBindingsCateg _hdOmodNr _hdOnm2ref _hdOopts _hdOstackDepth) of
+                                                        { ( _hdIcrb,_hdIrefOffsetMax,_hdIstackDepth,_hdIstackDepthMax) ->
+                                                            (case (_hdIstackDepth) of
+                                                             { _tlOstackDepth ->
+                                                             (case (_lhsInm2ref) of
+                                                              { _tlOnm2ref ->
+                                                              (case (_lhsIimpNmLkup) of
+                                                               { _tlOimpNmLkup ->
+                                                               (case (_lhsIevalCtx) of
+                                                                { _tlOevalCtx ->
+                                                                (case (_lhsIopts) of
+                                                                 { _tlOopts ->
+                                                                 (case (_lhsImodNr) of
+                                                                  { _tlOmodNr ->
+                                                                  (case (_lhsIletBindingsCateg) of
+                                                                   { _tlOletBindingsCateg ->
+                                                                   (case (tl_1 _tlOevalCtx _tlOimpNmLkup _tlOletBindingsCateg _tlOmodNr _tlOnm2ref _tlOopts _tlOstackDepth) of
+                                                                    { ( _tlIcrb,_tlIrefOffsetMax,_tlIstackDepth,_tlIstackDepthMax) ->
+                                                                        (case (_hdIcrb ++ _tlIcrb) of
+                                                                         { _lhsOcrb ->
+                                                                         (case (_hdIrefOffsetMax `max` _tlIrefOffsetMax) of
+                                                                          { _lhsOrefOffsetMax ->
+                                                                          (case (_tlIstackDepth) of
+                                                                           { _lhsOstackDepth ->
+                                                                           (case (_hdIstackDepthMax `max` _tlIstackDepthMax) of
+                                                                            { _lhsOstackDepthMax ->
+                                                                            ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                   in  sem_CBindL_Cons_1)) of
+                            { ( sem_CBindL_1) ->
+                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindL_1) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBindL_Nil :: T_CBindL
+sem_CBindL_Nil =
+    (\ _lhsIisGlobal
+       _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CBindL_Nil_1 :: T_CBindL_1
+                       sem_CBindL_Nil_1 =
+                           (\ _lhsIevalCtx
+                              _lhsIimpNmLkup
+                              _lhsIletBindingsCateg
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case ([]) of
+                                 { _lhsOcrb ->
+                                 (case (0) of
+                                  { _lhsOrefOffsetMax ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   (case (0) of
+                                    { _lhsOstackDepthMax ->
+                                    ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
+                   in  sem_CBindL_Nil_1)) of
+            { ( sem_CBindL_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBindL_1) }) }) }))
+-- CBound ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         isGlobal             : Bool
+         lev                  : Int
+         nm                   : HsName
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         isTopApp             : Bool
+         isTopTup             : Bool
+         letBindingsCateg     : CBindCateg
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         crb                  : [(HsName, CR.Bind)]
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+   alternatives:
+      alternative Bind:
+         child bindMeta       : CMetas 
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local toBe        : _
+            local isToBeThunked : _
+            local lev         : _
+            local refOffsetExpr : _
+         visit 1:
+            local tailCtx     : _
+            local nm2refNew   : _
+            local isToBeALam  : _
+            local stackDepthMaxThunked : _
+            local creMkForce  : _
+            local creBind     : _
+            local crb         : _
+            local stackDepthExpr : _
+            intra isToBeThunked : _
+            intra toBe        : _
+      alternative Meta:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child cmetas         : CMetas 
+      alternative RelevTy:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child relevTy        : {RelevTy}
+      alternative Val:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child mlev           : {MetaLev}
+         child lbl            : {CLbl}
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local toBe        : _
+            local isToBeThunked : _
+            local lev         : _
+            local refOffsetExpr : _
+         visit 1:
+            local tailCtx     : _
+            local nm2refNew   : _
+            local isToBeALam  : _
+            local stackDepthMaxThunked : _
+            local creMkForce  : _
+            local creBind     : _
+            local crb         : _
+            local stackDepthExpr : _
+            intra isToBeThunked : _
+            intra toBe        : _
+      alternative Ty:
+         child aspectKeyS     : {ACoreBindAspectKeyS}
+         child ty             : {Ty}
+      alternative FFE:
+         child callconv       : {FFIWay}
+         child expEnt         : {ForeignEnt}
+         child expr           : CExpr 
+         child ty             : {Ty}
+         visit 0:
+            local whatAbove   : {WhatExpr}
+         visit 1:
+            local tailCtx     : _
+-}
+-- cata
+sem_CBound :: CBound ->
+              T_CBound
+sem_CBound (CBound_Bind _bindMeta _expr) =
+    (sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
+sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
+    (sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
+sem_CBound (CBound_RelevTy _aspectKeyS _relevTy) =
+    (sem_CBound_RelevTy _aspectKeyS _relevTy)
+sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
+    (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
+sem_CBound (CBound_Ty _aspectKeyS _ty) =
+    (sem_CBound_Ty _aspectKeyS _ty)
+sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
+    (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
+-- semantic domain
+type T_CBound = EvalCtx ->
+                Bool ->
+                Int ->
+                HsName ->
+                Int ->
+                ( (CR.Nm2RefMp),Int,T_CBound_1)
+type T_CBound_1 = (HsName -> Maybe Int) ->
+                  Bool ->
+                  Bool ->
+                  CBindCateg ->
+                  (Maybe Int) ->
+                  (CR.Nm2RefMp) ->
+                  EHCOpts ->
+                  Int ->
+                  ( ([(HsName, CR.Bind)]),Int,Int,Int)
+sem_CBound_Bind :: T_CMetas ->
+                   T_CExpr ->
+                   T_CBound
+sem_CBound_Bind bindMeta_ expr_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIlev
+       _lhsInm
+       _lhsIrefOffset ->
+         (case (ExprIsBind _lhsInm) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (expr_) of
+            { ( _exprIwhatBelow,expr_1) ->
+                (case (let mba@(~(Just (_,w))) = whatExprMbApp _exprIwhatBelow
+                           isVar     = isJust $ whatExprMbVar _exprIwhatBelow
+                           isGlbVar  = isVar && _lhsIisGlobal
+                           isApp     = isJust mba
+                           isTup     = isApp && whatExprIsTup w
+                           isWHNF    = whatExprIsWHNF _exprIwhatBelow
+                           isNotWHNF = not isWHNF
+                       in  case _lhsIevalCtx of
+                             EvalCtx_Eval
+                               | isApp      -> ToBe_LeftAsIs
+                               | isVar      -> ToBe_Forced
+                               | isNotWHNF  -> ToBe_Forced
+                             EvalCtx_Thunk
+                               | isTup      -> ToBe_LeftAsIs
+                               | isGlbVar   -> ToBe_Thunked
+                               | isNotWHNF  -> ToBe_Thunked
+                             _              -> ToBe_LeftAsIs) of
+                 { _toBe ->
+                 (case (_toBe == ToBe_Thunked) of
+                  { _isToBeThunked ->
+                  (case (if _isToBeThunked then _lhsIlev + 1 else _lhsIlev) of
+                   { _lev ->
+                   (case (_lev) of
+                    { _exprOlev ->
+                    (case (if _isToBeThunked then 0              else _lhsIrefOffset) of
+                     { _refOffsetExpr ->
+                     (case (_refOffsetExpr) of
+                      { _exprOrefOffset ->
+                      (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                       { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                           (case (_lhsIrefOffset) of
+                            { _bindMetaOrefOffset ->
+                            (case (bindMeta_ _bindMetaOrefOffset) of
+                             { ( _bindMetaInm2refGath,_bindMetaIrefOffset,bindMeta_1) ->
+                                 (case (_bindMetaInm2refGath `CR.nm2refUnion` _exprInm2refGath) of
+                                  { _lhsOnm2refGath ->
+                                  (case (if _isToBeThunked then _lhsIrefOffset else _exprIrefOffset) of
+                                   { _lhsOrefOffset ->
+                                   (case ((let sem_CBound_Bind_1 :: T_CBound_1
+                                               sem_CBound_Bind_1 =
+                                                   (\ _lhsIimpNmLkup
+                                                      _lhsIisTopApp
+                                                      _lhsIisTopTup
+                                                      _lhsIletBindingsCateg
+                                                      _lhsImodNr
+                                                      _lhsInm2ref
+                                                      _lhsIopts
+                                                      _lhsIstackDepth ->
+                                                        (case (if _isToBeThunked then TailCtx_TailCall else TailCtx_Plain) of
+                                                         { _tailCtx ->
+                                                         (case (_tailCtx) of
+                                                          { _exprOtailCtx ->
+                                                          (case (_lhsInm2ref) of
+                                                           { _exprOnm2ref ->
+                                                           (case (_lhsIimpNmLkup) of
+                                                            { _exprOimpNmLkup ->
+                                                            (case (if _isToBeThunked then _exprInm2refGath else CR.emptyNm2RefMp) of
+                                                             { _nm2refNew ->
+                                                             (case (_isToBeThunked || whatExprIsLam _exprIwhatBelow) of
+                                                              { _isToBeALam ->
+                                                              (case (if _isToBeALam then 0                 else _lhsIstackDepth) of
+                                                               { _exprOstackDepth ->
+                                                               (case (_lhsIopts) of
+                                                                { _exprOopts ->
+                                                                (case (_lhsImodNr) of
+                                                                 { _exprOmodNr ->
+                                                                 (case (_lhsIevalCtx) of
+                                                                  { _exprOevalCtx ->
+                                                                  (case (True) of
+                                                                   { _exprOisTopTup ->
+                                                                   (case (True) of
+                                                                    { _exprOisTopApp ->
+                                                                    (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                     { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                         (case (max _exprIstackDepth _exprIstackDepthMax) of
+                                                                          { _stackDepthMaxThunked ->
+                                                                          (case (case _toBe of
+                                                                                     ToBe_Forced   -> tailrec _tailCtx . CR.mkEval
+                                                                                     ToBe_Thunked  -> CR.Exp_Lam (Just _lhsInm)            0                          (_stackDepthMaxThunked) (CR.nm2RefMpInverse _nm2refNew)
+                                                                                     ToBe_LeftAsIs -> id) of
+                                                                           { _creMkForce ->
+                                                                           (case (_creMkForce _exprIcre) of
+                                                                            { _creBind ->
+                                                                            (case ([( _lhsInm, _creBind )]) of
+                                                                             { _crb ->
+                                                                             (case (_crb) of
+                                                                              { _lhsOcrb ->
+                                                                              (case (if _isToBeThunked then _lhsIrefOffset else max _exprIrefOffset _exprIrefOffsetMax) of
+                                                                               { _lhsOrefOffsetMax ->
+                                                                               (case (if _isToBeALam then _lhsIstackDepth+1 else _exprIstackDepth) of
+                                                                                { _stackDepthExpr ->
+                                                                                (case (_stackDepthExpr) of
+                                                                                 { _lhsOstackDepth ->
+                                                                                 (case (if _isToBeALam then _stackDepthExpr else _stackDepthMaxThunked) of
+                                                                                  { _lhsOstackDepthMax ->
+                                                                                  ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                           in  sem_CBound_Bind_1)) of
+                                    { ( sem_CBound_1) ->
+                                    ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBound_Meta :: ACoreBindAspectKeyS ->
+                   T_CMetas ->
+                   T_CBound
+sem_CBound_Meta aspectKeyS_ cmetas_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIlev
+       _lhsInm
+       _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _cmetasOrefOffset ->
+          (case (cmetas_ _cmetasOrefOffset) of
+           { ( _cmetasInm2refGath,_cmetasIrefOffset,cmetas_1) ->
+               (case (_cmetasInm2refGath) of
+                { _lhsOnm2refGath ->
+                (case (_cmetasIrefOffset) of
+                 { _lhsOrefOffset ->
+                 (case ((let sem_CBound_Meta_1 :: T_CBound_1
+                             sem_CBound_Meta_1 =
+                                 (\ _lhsIimpNmLkup
+                                    _lhsIisTopApp
+                                    _lhsIisTopTup
+                                    _lhsIletBindingsCateg
+                                    _lhsImodNr
+                                    _lhsInm2ref
+                                    _lhsIopts
+                                    _lhsIstackDepth ->
+                                      (case ([]) of
+                                       { _lhsOcrb ->
+                                       (case (0) of
+                                        { _lhsOrefOffsetMax ->
+                                        (case (_lhsIstackDepth) of
+                                         { _cmetasOstackDepth ->
+                                         (case (_lhsIopts) of
+                                          { _cmetasOopts ->
+                                          (case (_lhsInm2ref) of
+                                           { _cmetasOnm2ref ->
+                                           (case (_lhsImodNr) of
+                                            { _cmetasOmodNr ->
+                                            (case (_lhsIlev) of
+                                             { _cmetasOlev ->
+                                             (case (_lhsIimpNmLkup) of
+                                              { _cmetasOimpNmLkup ->
+                                              (case (cmetas_1 _cmetasOimpNmLkup _cmetasOlev _cmetasOmodNr _cmetasOnm2ref _cmetasOopts _cmetasOstackDepth) of
+                                               { ( _cmetasIstackDepth) ->
+                                                   (case (_cmetasIstackDepth) of
+                                                    { _lhsOstackDepth ->
+                                                    (case (0) of
+                                                     { _lhsOstackDepthMax ->
+                                                     ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }))
+                         in  sem_CBound_Meta_1)) of
+                  { ( sem_CBound_1) ->
+                  ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }))
+sem_CBound_RelevTy :: ACoreBindAspectKeyS ->
+                      RelevTy ->
+                      T_CBound
+sem_CBound_RelevTy aspectKeyS_ relevTy_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIlev
+       _lhsInm
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CBound_RelevTy_1 :: T_CBound_1
+                       sem_CBound_RelevTy_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIisTopApp
+                              _lhsIisTopTup
+                              _lhsIletBindingsCateg
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case ([]) of
+                                 { _lhsOcrb ->
+                                 (case (0) of
+                                  { _lhsOrefOffsetMax ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   (case (0) of
+                                    { _lhsOstackDepthMax ->
+                                    ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
+                   in  sem_CBound_RelevTy_1)) of
+            { ( sem_CBound_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }))
+sem_CBound_Val :: ACoreBindAspectKeyS ->
+                  MetaLev ->
+                  CLbl ->
+                  T_CExpr ->
+                  T_CBound
+sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIlev
+       _lhsInm
+       _lhsIrefOffset ->
+         (case (ExprIsBind _lhsInm) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (expr_) of
+            { ( _exprIwhatBelow,expr_1) ->
+                (case (let mba@(~(Just (_,w))) = whatExprMbApp _exprIwhatBelow
+                           isVar     = isJust $ whatExprMbVar _exprIwhatBelow
+                           isGlbVar  = isVar && _lhsIisGlobal
+                           isApp     = isJust mba
+                           isTup     = isApp && whatExprIsTup w
+                           isWHNF    = whatExprIsWHNF _exprIwhatBelow
+                           isNotWHNF = not isWHNF
+                       in  case _lhsIevalCtx of
+                             EvalCtx_Eval
+                               | isApp      -> ToBe_LeftAsIs
+                               | isVar      -> ToBe_Forced
+                               | isNotWHNF  -> ToBe_Forced
+                             EvalCtx_Thunk
+                               | isTup      -> ToBe_LeftAsIs
+                               | isGlbVar   -> ToBe_Thunked
+                               | isNotWHNF  -> ToBe_Thunked
+                             _              -> ToBe_LeftAsIs) of
+                 { _toBe ->
+                 (case (_toBe == ToBe_Thunked) of
+                  { _isToBeThunked ->
+                  (case (if _isToBeThunked then _lhsIlev + 1 else _lhsIlev) of
+                   { _lev ->
+                   (case (_lev) of
+                    { _exprOlev ->
+                    (case (if _isToBeThunked then 0              else _lhsIrefOffset) of
+                     { _refOffsetExpr ->
+                     (case (_refOffsetExpr) of
+                      { _exprOrefOffset ->
+                      (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                       { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                           (case (_exprInm2refGath) of
+                            { _lhsOnm2refGath ->
+                            (case (if _isToBeThunked then _lhsIrefOffset else _exprIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CBound_Val_1 :: T_CBound_1
+                                         sem_CBound_Val_1 =
+                                             (\ _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsIletBindingsCateg
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth ->
+                                                  (case (if _isToBeThunked then TailCtx_TailCall else TailCtx_Plain) of
+                                                   { _tailCtx ->
+                                                   (case (_tailCtx) of
+                                                    { _exprOtailCtx ->
+                                                    (case (_lhsInm2ref) of
+                                                     { _exprOnm2ref ->
+                                                     (case (_lhsIimpNmLkup) of
+                                                      { _exprOimpNmLkup ->
+                                                      (case (if _isToBeThunked then _exprInm2refGath else CR.emptyNm2RefMp) of
+                                                       { _nm2refNew ->
+                                                       (case (_isToBeThunked || whatExprIsLam _exprIwhatBelow) of
+                                                        { _isToBeALam ->
+                                                        (case (if _isToBeALam then 0                 else _lhsIstackDepth) of
+                                                         { _exprOstackDepth ->
+                                                         (case (_lhsIopts) of
+                                                          { _exprOopts ->
+                                                          (case (_lhsImodNr) of
+                                                           { _exprOmodNr ->
+                                                           (case (_lhsIisTopTup) of
+                                                            { _exprOisTopTup ->
+                                                            (case (_lhsIisTopApp) of
+                                                             { _exprOisTopApp ->
+                                                             (case (_lhsIevalCtx) of
+                                                              { _exprOevalCtx ->
+                                                              (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                               { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                   (case (max _exprIstackDepth _exprIstackDepthMax) of
+                                                                    { _stackDepthMaxThunked ->
+                                                                    (case (case _toBe of
+                                                                               ToBe_Forced   -> tailrec _tailCtx . CR.mkEval
+                                                                               ToBe_Thunked  -> CR.Exp_Lam (Just _lhsInm)            0                          (_stackDepthMaxThunked) (CR.nm2RefMpInverse _nm2refNew)
+                                                                               ToBe_LeftAsIs -> id) of
+                                                                     { _creMkForce ->
+                                                                     (case (_creMkForce _exprIcre) of
+                                                                      { _creBind ->
+                                                                      (case ([( _lhsInm, _creBind )]) of
+                                                                       { _crb ->
+                                                                       (case (_crb) of
+                                                                        { _lhsOcrb ->
+                                                                        (case (if _isToBeThunked then _lhsIrefOffset else max _exprIrefOffset _exprIrefOffsetMax) of
+                                                                         { _lhsOrefOffsetMax ->
+                                                                         (case (if _isToBeALam then _lhsIstackDepth+1 else _exprIstackDepth) of
+                                                                          { _stackDepthExpr ->
+                                                                          (case (_stackDepthExpr) of
+                                                                           { _lhsOstackDepth ->
+                                                                           (case (if _isToBeALam then _stackDepthExpr else _stackDepthMaxThunked) of
+                                                                            { _lhsOstackDepthMax ->
+                                                                            ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CBound_Val_1)) of
+                              { ( sem_CBound_1) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBound_Ty :: ACoreBindAspectKeyS ->
+                 Ty ->
+                 T_CBound
+sem_CBound_Ty aspectKeyS_ ty_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIlev
+       _lhsInm
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CBound_Ty_1 :: T_CBound_1
+                       sem_CBound_Ty_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIisTopApp
+                              _lhsIisTopTup
+                              _lhsIletBindingsCateg
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case ([]) of
+                                 { _lhsOcrb ->
+                                 (case (0) of
+                                  { _lhsOrefOffsetMax ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   (case (0) of
+                                    { _lhsOstackDepthMax ->
+                                    ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }))
+                   in  sem_CBound_Ty_1)) of
+            { ( sem_CBound_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }))
+sem_CBound_FFE :: FFIWay ->
+                  ForeignEnt ->
+                  T_CExpr ->
+                  Ty ->
+                  T_CBound
+sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
+    (\ _lhsIevalCtx
+       _lhsIisGlobal
+       _lhsIlev
+       _lhsInm
+       _lhsIrefOffset ->
+         (case (ExprIsLam 0 Nothing) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (_lhsIrefOffset) of
+            { _exprOrefOffset ->
+            (case (_lhsIlev) of
+             { _exprOlev ->
+             (case (expr_) of
+              { ( _exprIwhatBelow,expr_1) ->
+                  (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                   { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                       (case (_exprInm2refGath) of
+                        { _lhsOnm2refGath ->
+                        (case (_exprIrefOffset) of
+                         { _lhsOrefOffset ->
+                         (case ((let sem_CBound_FFE_1 :: T_CBound_1
+                                     sem_CBound_FFE_1 =
+                                         (\ _lhsIimpNmLkup
+                                            _lhsIisTopApp
+                                            _lhsIisTopTup
+                                            _lhsIletBindingsCateg
+                                            _lhsImodNr
+                                            _lhsInm2ref
+                                            _lhsIopts
+                                            _lhsIstackDepth ->
+                                              (case (_lhsIstackDepth) of
+                                               { _exprOstackDepth ->
+                                               (case (_lhsInm2ref) of
+                                                { _exprOnm2ref ->
+                                                (case (_lhsIimpNmLkup) of
+                                                 { _exprOimpNmLkup ->
+                                                 (case (TailCtx_Plain) of
+                                                  { _tailCtx ->
+                                                  (case (_tailCtx) of
+                                                   { _exprOtailCtx ->
+                                                   (case (_lhsIopts) of
+                                                    { _exprOopts ->
+                                                    (case (_lhsImodNr) of
+                                                     { _exprOmodNr ->
+                                                     (case (_lhsIevalCtx) of
+                                                      { _exprOevalCtx ->
+                                                      (case (True) of
+                                                       { _exprOisTopTup ->
+                                                       (case (True) of
+                                                        { _exprOisTopApp ->
+                                                        (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                         { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                             (case (_exprIcrb) of
+                                                              { _lhsOcrb ->
+                                                              (case (_exprIrefOffsetMax) of
+                                                               { _lhsOrefOffsetMax ->
+                                                               (case (_exprIstackDepth) of
+                                                                { _lhsOstackDepth ->
+                                                                (case (_exprIstackDepthMax) of
+                                                                 { _lhsOstackDepthMax ->
+                                                                 ( _lhsOcrb,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                 in  sem_CBound_FFE_1)) of
+                          { ( sem_CBound_1) ->
+                          ( _lhsOnm2refGath,_lhsOrefOffset,sem_CBound_1) }) }) }) }) }) }) }) }) }))
+-- CBoundL -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         impNmLkup            : HsName -> Maybe Int
+         isGlobal             : Bool
+         letBindingsCateg     : CBindCateg
+         lev                  : Int
+         modNr                : Maybe Int
+         nm                   : HsName
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attributes:
+         refOffset            : Int
+         stackDepth           : Int
+      synthesized attributes:
+         crb                  : [(HsName, CR.Bind)]
+         nm2refGath           : CR.Nm2RefMp
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+   alternatives:
+      alternative Cons:
+         child hd             : CBound 
+         child tl             : CBoundL 
+      alternative Nil:
+-}
+-- cata
+sem_CBoundL :: CBoundL ->
+               T_CBoundL
+sem_CBoundL list =
+    (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
+-- semantic domain
+type T_CBoundL = EvalCtx ->
+                 (HsName -> Maybe Int) ->
+                 Bool ->
+                 CBindCateg ->
+                 Int ->
+                 (Maybe Int) ->
+                 HsName ->
+                 (CR.Nm2RefMp) ->
+                 EHCOpts ->
+                 Int ->
+                 Int ->
+                 ( ([(HsName, CR.Bind)]),(CR.Nm2RefMp),Int,Int,Int,Int)
+sem_CBoundL_Cons :: T_CBound ->
+                    T_CBoundL ->
+                    T_CBoundL
+sem_CBoundL_Cons hd_ tl_ =
+    (\ _lhsIevalCtx
+       _lhsIimpNmLkup
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsImodNr
+       _lhsInm
+       _lhsInm2ref
+       _lhsIopts
+       _lhsIrefOffset
+       _lhsIstackDepth ->
+         (case (_lhsIstackDepth) of
+          { _hdOstackDepth ->
+          (case (_lhsIrefOffset) of
+           { _hdOrefOffset ->
+           (case (_lhsInm) of
+            { _hdOnm ->
+            (case (_lhsIlev) of
+             { _hdOlev ->
+             (case (_lhsIisGlobal) of
+              { _hdOisGlobal ->
+              (case (_lhsIevalCtx) of
+               { _hdOevalCtx ->
+               (case (hd_ _hdOevalCtx _hdOisGlobal _hdOlev _hdOnm _hdOrefOffset) of
+                { ( _hdInm2refGath,_hdIrefOffset,hd_1) ->
+                    (case (_lhsIopts) of
+                     { _hdOopts ->
+                     (case (_lhsInm2ref) of
+                      { _hdOnm2ref ->
+                      (case (_lhsImodNr) of
+                       { _hdOmodNr ->
+                       (case (_lhsIletBindingsCateg) of
+                        { _hdOletBindingsCateg ->
+                        (case (_lhsIimpNmLkup) of
+                         { _hdOimpNmLkup ->
+                         (case (True) of
+                          { _hdOisTopTup ->
+                          (case (True) of
+                           { _hdOisTopApp ->
+                           (case (hd_1 _hdOimpNmLkup _hdOisTopApp _hdOisTopTup _hdOletBindingsCateg _hdOmodNr _hdOnm2ref _hdOopts _hdOstackDepth) of
+                            { ( _hdIcrb,_hdIrefOffsetMax,_hdIstackDepth,_hdIstackDepthMax) ->
+                                (case (_hdIstackDepth) of
+                                 { _tlOstackDepth ->
+                                 (case (_hdIrefOffset) of
+                                  { _tlOrefOffset ->
+                                  (case (_lhsInm2ref) of
+                                   { _tlOnm2ref ->
+                                   (case (_lhsInm) of
+                                    { _tlOnm ->
+                                    (case (_lhsIlev) of
+                                     { _tlOlev ->
+                                     (case (_lhsIisGlobal) of
+                                      { _tlOisGlobal ->
+                                      (case (_lhsIimpNmLkup) of
+                                       { _tlOimpNmLkup ->
+                                       (case (_lhsIevalCtx) of
+                                        { _tlOevalCtx ->
+                                        (case (_lhsIopts) of
+                                         { _tlOopts ->
+                                         (case (_lhsImodNr) of
+                                          { _tlOmodNr ->
+                                          (case (_lhsIletBindingsCateg) of
+                                           { _tlOletBindingsCateg ->
+                                           (case (tl_ _tlOevalCtx _tlOimpNmLkup _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOmodNr _tlOnm _tlOnm2ref _tlOopts _tlOrefOffset _tlOstackDepth) of
+                                            { ( _tlIcrb,_tlInm2refGath,_tlIrefOffset,_tlIrefOffsetMax,_tlIstackDepth,_tlIstackDepthMax) ->
+                                                (case (_hdIcrb ++ _tlIcrb) of
+                                                 { _lhsOcrb ->
+                                                 (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
+                                                  { _lhsOnm2refGath ->
+                                                  (case (_tlIrefOffset) of
+                                                   { _lhsOrefOffset ->
+                                                   (case (_hdIrefOffsetMax `max` _tlIrefOffsetMax) of
+                                                    { _lhsOrefOffsetMax ->
+                                                    (case (_tlIstackDepth) of
+                                                     { _lhsOstackDepth ->
+                                                     (case (_hdIstackDepthMax `max` _tlIstackDepthMax) of
+                                                      { _lhsOstackDepthMax ->
+                                                      ( _lhsOcrb,_lhsOnm2refGath,_lhsOrefOffset,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+sem_CBoundL_Nil :: T_CBoundL
+sem_CBoundL_Nil =
+    (\ _lhsIevalCtx
+       _lhsIimpNmLkup
+       _lhsIisGlobal
+       _lhsIletBindingsCateg
+       _lhsIlev
+       _lhsImodNr
+       _lhsInm
+       _lhsInm2ref
+       _lhsIopts
+       _lhsIrefOffset
+       _lhsIstackDepth ->
+         (case ([]) of
+          { _lhsOcrb ->
+          (case (CR.emptyNm2RefMp) of
+           { _lhsOnm2refGath ->
+           (case (_lhsIrefOffset) of
+            { _lhsOrefOffset ->
+            (case (0) of
+             { _lhsOrefOffsetMax ->
+             (case (_lhsIstackDepth) of
+              { _lhsOstackDepth ->
+              (case (0) of
+               { _lhsOstackDepthMax ->
+               ( _lhsOcrb,_lhsOnm2refGath,_lhsOrefOffset,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax) }) }) }) }) }) }))
+-- CDataCon ----------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         crdc                 : [CR.DataCon]
+   alternatives:
+      alternative Con:
+         child conNm          : {HsName}
+         child tagNr          : {Int}
+         child arity          : {Int}
+-}
+-- cata
+sem_CDataCon :: CDataCon ->
+                T_CDataCon
+sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
+    (sem_CDataCon_Con _conNm _tagNr _arity)
+-- semantic domain
+type T_CDataCon = ( ([CR.DataCon]))
+sem_CDataCon_Con :: HsName ->
+                    Int ->
+                    Int ->
+                    T_CDataCon
+sem_CDataCon_Con conNm_ tagNr_ arity_ =
+    (case ([CR.DataCon_Con (hsnQualified conNm_) tagNr_]) of
+     { _lhsOcrdc ->
+     ( _lhsOcrdc) })
+-- CDataConL ---------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         crdc                 : [CR.DataCon]
+   alternatives:
+      alternative Cons:
+         child hd             : CDataCon 
+         child tl             : CDataConL 
+      alternative Nil:
+-}
+-- cata
+sem_CDataConL :: CDataConL ->
+                 T_CDataConL
+sem_CDataConL list =
+    (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
+-- semantic domain
+type T_CDataConL = ( ([CR.DataCon]))
+sem_CDataConL_Cons :: T_CDataCon ->
+                      T_CDataConL ->
+                      T_CDataConL
+sem_CDataConL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIcrdc) ->
+         (case (hd_) of
+          { ( _hdIcrdc) ->
+              (case (_hdIcrdc ++ _tlIcrdc) of
+               { _lhsOcrdc ->
+               ( _lhsOcrdc) }) }) })
+sem_CDataConL_Nil :: T_CDataConL
+sem_CDataConL_Nil =
+    (case ([]) of
+     { _lhsOcrdc ->
+     ( _lhsOcrdc) })
+-- CDeclMeta ---------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         crmt                 : [CR.Meta]
+   alternatives:
+      alternative Data:
+         child tyNm           : {HsName}
+         child dataCons       : CDataConL 
+-}
+-- cata
+sem_CDeclMeta :: CDeclMeta ->
+                 T_CDeclMeta
+sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
+    (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
+-- semantic domain
+type T_CDeclMeta = ( ([CR.Meta]))
+sem_CDeclMeta_Data :: HsName ->
+                      T_CDataConL ->
+                      T_CDeclMeta
+sem_CDeclMeta_Data tyNm_ dataCons_ =
+    (case (dataCons_) of
+     { ( _dataConsIcrdc) ->
+         (case ([CR.Meta_Data tyNm_ _dataConsIcrdc]) of
+          { _lhsOcrmt ->
+          ( _lhsOcrmt) }) })
+-- CDeclMetaL --------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         crmt                 : [CR.Meta]
+   alternatives:
+      alternative Cons:
+         child hd             : CDeclMeta 
+         child tl             : CDeclMetaL 
+      alternative Nil:
+-}
+-- cata
+sem_CDeclMetaL :: CDeclMetaL ->
+                  T_CDeclMetaL
+sem_CDeclMetaL list =
+    (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
+-- semantic domain
+type T_CDeclMetaL = ( ([CR.Meta]))
+sem_CDeclMetaL_Cons :: T_CDeclMeta ->
+                       T_CDeclMetaL ->
+                       T_CDeclMetaL
+sem_CDeclMetaL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIcrmt) ->
+         (case (hd_) of
+          { ( _hdIcrmt) ->
+              (case (_hdIcrmt ++ _tlIcrmt) of
+               { _lhsOcrmt ->
+               ( _lhsOcrmt) }) }) })
+sem_CDeclMetaL_Nil :: T_CDeclMetaL
+sem_CDeclMetaL_Nil =
+    (case ([]) of
+     { _lhsOcrmt ->
+     ( _lhsOcrmt) })
+-- CExport -----------------------------------------------------
+{-
+   alternatives:
+      alternative Export:
+         child nm             : {HsName}
+      alternative ExportData:
+         child nm             : {HsName}
+         child mbConNmL       : {Maybe [HsName]}
+-}
+-- cata
+sem_CExport :: CExport ->
+               T_CExport
+sem_CExport (CExport_Export _nm) =
+    (sem_CExport_Export _nm)
+sem_CExport (CExport_ExportData _nm _mbConNmL) =
+    (sem_CExport_ExportData _nm _mbConNmL)
+-- semantic domain
+type T_CExport = ( )
+sem_CExport_Export :: HsName ->
+                      T_CExport
+sem_CExport_Export nm_ =
+    ( )
+sem_CExport_ExportData :: HsName ->
+                          (Maybe [HsName]) ->
+                          T_CExport
+sem_CExport_ExportData nm_ mbConNmL_ =
+    ( )
+-- CExportL ----------------------------------------------------
+{-
+   alternatives:
+      alternative Cons:
+         child hd             : CExport 
+         child tl             : CExportL 
+      alternative Nil:
+-}
+-- cata
+sem_CExportL :: CExportL ->
+                T_CExportL
+sem_CExportL list =
+    (Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list))
+-- semantic domain
+type T_CExportL = ( )
+sem_CExportL_Cons :: T_CExport ->
+                     T_CExportL ->
+                     T_CExportL
+sem_CExportL_Cons hd_ tl_ =
+    ( )
+sem_CExportL_Nil :: T_CExportL
+sem_CExportL_Nil =
+    ( )
+-- CExpr -------------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         whatBelow            : WhatExpr
+   visit 1:
+      inherited attributes:
+         lev                  : Int
+         whatAbove            : WhatExpr
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 2:
+      inherited attributes:
+         evalCtx              : EvalCtx
+         impNmLkup            : HsName -> Maybe Int
+         isTopApp             : Bool
+         isTopTup             : Bool
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+         tailCtx              : TailCtx
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         appFunKind           : AppFunKind
+         crb                  : [(HsName, CR.Bind)]
+         cre                  : CR.Exp
+         creAppArgL           : [CR.SExp]
+         creAppFun            : TailCtx -> CR.CRArray CR.SExp -> CR.Exp
+         creLamArgL           : [HsName]
+         creLamBody           : CR.Exp
+         crse                 : CR.SExp
+         mbFFIApp             : Maybe ( Ty
+                                  , Bool
+                                  , FFIWay
+                                  , ForeignEnt
+                                  , [Ty]
+                                  )
+         mbLam                : Maybe [HsName]
+         mbVar                : Maybe HsName
+         refOffsetMax         : Int
+         stackDepthMax        : Int
+         vref                 : CR.RRef
+   alternatives:
+      alternative Var:
+         child ref            : {ACoreBindRef}
+         visit 0:
+            local nm          : {HsName}
+            local whatBelow   : _
+         visit 1:
+            intra nm          : {HsName}
+         visit 2:
+            local vref        : _
+            local crse        : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local mbVar       : {Maybe HsName}
+            local stackDepthHere : _
+            intra nm          : {HsName}
+      alternative Int:
+         child int            : {Int}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local crse        : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative Char:
+         child char           : {Char}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local crse        : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative String:
+         child str            : {String}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local crse        : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative Integer:
+         child integer        : {Integer}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local crse        : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative Tup:
+         child tag            : {CTag}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative Let:
+         child categ          : {CBindCateg}
+         child binds          : CBindL 
+         child body           : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+            local isGlobal    : _
+            local _tup1       : _
+         visit 2:
+            local evalCtx     : _
+            local letBindingsCateg : _
+            local _tup2       : _
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local nm2refNew   : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local refOffsetMax : _
+            local stackDepthMax : _
+            local vref        : _
+            intra isGlobal    : _
+            intra _tup1       : _
+      alternative App:
+         child func           : CExpr 
+         child arg            : CBound 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+            local isGlobal    : _
+         visit 2:
+            local tailCtx     : _
+            local isTopTup    : _
+            local creAppFun   : _
+            local stackDepthFunc : _
+            local letBindingsCateg : _
+            local creAppArgL  : _
+            local isTopApp'   : _
+            local creBase     : _
+            local cre         : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthMax : _
+            local vref        : _
+      alternative Lam:
+         child bind           : CBind 
+         child body           : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+            local isTopLam    : _
+            local lev         : _
+            local _tup3       : _
+            local refOffsetBody : _
+            local refOffset   : _
+            local isGlobal    : _
+            local nm2refNew   : _
+         visit 2:
+            local nm2ref      : _
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local creLamArgL  : _
+            local stackDepthMax : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamBody  : _
+            local crse        : _
+            local argNm       : _
+            local refOffsetMax : _
+            local vref        : _
+            intra nm2refNew   : _
+            intra isTopLam    : _
+            intra refOffsetBody : _
+      alternative Case:
+         child expr           : CExpr 
+         child alts           : CAltL 
+         child dflt           : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthHere : _
+            local stackDepthMax : _
+            local vref        : _
+      alternative CaseAltFail:
+         child failReason     : {CaseAltFailReason}
+         child errorExpr      : CExpr 
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative TupDel:
+         child expr           : CExpr 
+         child tag            : {CTag}
+         child nm             : {HsName}
+         child offset         : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local isTopApp    : {Bool}
+            local isTopTup    : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative TupIns:
+         child expr           : CExpr 
+         child tag            : {CTag}
+         child nm             : {HsName}
+         child offset         : CExpr 
+         child fldExpr        : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local isTopApp    : {Bool}
+            local isTopTup    : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative TupUpd:
+         child expr           : CExpr 
+         child tag            : {CTag}
+         child nm             : {HsName}
+         child offset         : CExpr 
+         child fldExpr        : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local isTopApp    : {Bool}
+            local isTopTup    : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative FFI:
+         child callconv       : {FFIWay}
+         child safety         : {String}
+         child impEnt         : {ForeignEnt}
+         child ty             : {Ty}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local foreignEntInfo : _
+            local creEntMb    : _
+            local creMk       : _
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local mbPrimNeedEval : {Maybe PrimitiveNeedsEval}
+            local primResNeedsEval : {Bool}
+            local argTyLresTy : {( TyL, Ty )}
+            local resTy       : _
+            local argTyL      : {TyL}
+            local stackDepthHere : _
+            local vref        : _
+      alternative Dbg:
+         child info           : {String}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative Hole:
+         child uid            : {UID}
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative HoleLet:
+         child bindsUid       : {UID}
+         child body           : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local stackDepthHere : _
+            local vref        : _
+      alternative CoeArg:
+         visit 0:
+            local whatBelow   : _
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local stackDepthHere : _
+            local vref        : _
+      alternative ImplsApp:
+         child func           : CExpr 
+         child uid            : {ImplsVarId}
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local stackDepthHere : _
+            local vref        : _
+      alternative ImplsLam:
+         child uid            : {ImplsVarId}
+         child body           : CExpr 
+         visit 0:
+            local whatBelow   : _
+         visit 1:
+            local whatAbove   : {WhatExpr}
+         visit 2:
+            local creBase     : _
+            local cre         : _
+            local creAppArgL  : _
+            local creAppFun   : _
+            local creLamArgL  : _
+            local creLamBody  : _
+            local crse        : _
+            local isTopTup    : _
+            local isTopApp    : {Bool}
+            local stackDepthHere : _
+            local vref        : _
+      alternative Ann:
+         child ann            : CExprAnn 
+         child expr           : CExpr 
+         visit 2:
+            local crse        : _
+            local vref        : _
+-}
+-- cata
+sem_CExpr :: CExpr ->
+             T_CExpr
+sem_CExpr (CExpr_Var _ref) =
+    (sem_CExpr_Var _ref)
+sem_CExpr (CExpr_Int _int) =
+    (sem_CExpr_Int _int)
+sem_CExpr (CExpr_Char _char) =
+    (sem_CExpr_Char _char)
+sem_CExpr (CExpr_String _str) =
+    (sem_CExpr_String _str)
+sem_CExpr (CExpr_Integer _integer) =
+    (sem_CExpr_Integer _integer)
+sem_CExpr (CExpr_Tup _tag) =
+    (sem_CExpr_Tup _tag)
+sem_CExpr (CExpr_Let _categ _binds _body) =
+    (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
+sem_CExpr (CExpr_App _func _arg) =
+    (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
+sem_CExpr (CExpr_Lam _bind _body) =
+    (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
+sem_CExpr (CExpr_Case _expr _alts _dflt) =
+    (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
+sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
+    (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
+sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
+    (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
+sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
+    (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
+sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
+    (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
+sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
+    (sem_CExpr_FFI _callconv _safety _impEnt _ty)
+sem_CExpr (CExpr_Dbg _info) =
+    (sem_CExpr_Dbg _info)
+sem_CExpr (CExpr_Hole _uid) =
+    (sem_CExpr_Hole _uid)
+sem_CExpr (CExpr_HoleLet _bindsUid _body) =
+    (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
+sem_CExpr (CExpr_CoeArg) =
+    (sem_CExpr_CoeArg)
+sem_CExpr (CExpr_ImplsApp _func _uid) =
+    (sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
+sem_CExpr (CExpr_ImplsLam _uid _body) =
+    (sem_CExpr_ImplsLam _uid (sem_CExpr _body))
+sem_CExpr (CExpr_Ann _ann _expr) =
+    (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
+-- semantic domain
+type T_CExpr = ( WhatExpr,T_CExpr_1)
+type T_CExpr_1 = Int ->
+                 Int ->
+                 WhatExpr ->
+                 ( (CR.Nm2RefMp),Int,T_CExpr_2)
+type T_CExpr_2 = EvalCtx ->
+                 (HsName -> Maybe Int) ->
+                 Bool ->
+                 Bool ->
+                 (Maybe Int) ->
+                 (CR.Nm2RefMp) ->
+                 EHCOpts ->
+                 Int ->
+                 TailCtx ->
+                 ( AppFunKind,([(HsName, CR.Bind)]),(CR.Exp),([CR.SExp]),(TailCtx -> CR.CRArray CR.SExp -> CR.Exp),([HsName]),(CR.Exp),(CR.SExp),(Maybe ( Ty
+                                                                                                                                                                                    , Bool
+                                                                                                                                                                                    , FFIWay
+                                                                                                                                                                                    , ForeignEnt
+                                                                                                                                                                                    , [Ty]
+                                                                                                                                                                                    )),(Maybe [HsName]),(Maybe HsName),Int,Int,Int,(CR.RRef))
+sem_CExpr_Var :: ACoreBindRef ->
+                 T_CExpr
+sem_CExpr_Var ref_ =
+    (case (acbrefNm ref_) of
+     { _nm ->
+     (case (ExprIsVar _nm) of
+      { _whatBelow ->
+      (case (_whatBelow) of
+       { _lhsOwhatBelow ->
+       (case ((let sem_CExpr_Var_1 :: T_CExpr_1
+                   sem_CExpr_Var_1 =
+                       (\ _lhsIlev
+                          _lhsIrefOffset
+                          _lhsIwhatAbove ->
+                            (case (CR.emptyNm2RefMp) of
+                             { _lhsOnm2refGath ->
+                             (case (_lhsIrefOffset) of
+                              { _lhsOrefOffset ->
+                              (case ((let sem_CExpr_Var_2 :: T_CExpr_2
+                                          sem_CExpr_Var_2 =
+                                              (\ _lhsIevalCtx
+                                                 _lhsIimpNmLkup
+                                                 _lhsIisTopApp
+                                                 _lhsIisTopTup
+                                                 _lhsImodNr
+                                                 _lhsInm2ref
+                                                 _lhsIopts
+                                                 _lhsIstackDepth
+                                                 _lhsItailCtx ->
+                                                   (case (AppFunKind_Fun ref_) of
+                                                    { _lhsOappFunKind ->
+                                                    (case ([]) of
+                                                     { _lhsOcrb ->
+                                                     (case (CR.rrefResolve (Just _lhsIlev) (Just _lhsIimpNmLkup) _lhsInm2ref _nm) of
+                                                      { _vref ->
+                                                      (case (CR.mkVar' _vref) of
+                                                       { _crse ->
+                                                       (case (taileval _lhsItailCtx $ CR.mkExp _crse) of
+                                                        { _creBase ->
+                                                        (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                         { _cre ->
+                                                         (case (_cre) of
+                                                          { _lhsOcre ->
+                                                          (case ([]) of
+                                                           { _creAppArgL ->
+                                                           (case (_creAppArgL) of
+                                                            { _lhsOcreAppArgL ->
+                                                            (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                             { _creAppFun ->
+                                                             (case (_creAppFun) of
+                                                              { _lhsOcreAppFun ->
+                                                              (case ([]) of
+                                                               { _creLamArgL ->
+                                                               (case (_creLamArgL) of
+                                                                { _lhsOcreLamArgL ->
+                                                                (case (_cre) of
+                                                                 { _creLamBody ->
+                                                                 (case (_creLamBody) of
+                                                                  { _lhsOcreLamBody ->
+                                                                  (case (_crse) of
+                                                                   { _lhsOcrse ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbFFIApp ->
+                                                                    (case (Nothing) of
+                                                                     { _lhsOmbLam ->
+                                                                     (case (Just _nm) of
+                                                                      { _mbVar ->
+                                                                      (case (_mbVar) of
+                                                                       { _lhsOmbVar ->
+                                                                       (case (0) of
+                                                                        { _lhsOrefOffsetMax ->
+                                                                        (case (_lhsIstackDepth + 1) of
+                                                                         { _stackDepthHere ->
+                                                                         (case (_stackDepthHere) of
+                                                                          { _lhsOstackDepth ->
+                                                                          (case (_stackDepthHere) of
+                                                                           { _lhsOstackDepthMax ->
+                                                                           (case (_vref) of
+                                                                            { _lhsOvref ->
+                                                                            ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                      in  sem_CExpr_Var_2)) of
+                               { ( sem_CExpr_2) ->
+                               ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+               in  sem_CExpr_Var_1)) of
+        { ( sem_CExpr_1) ->
+        ( _lhsOwhatBelow,sem_CExpr_1) }) }) }) })
+sem_CExpr_Int :: Int ->
+                 T_CExpr
+sem_CExpr_Int int_ =
+    (case (ExprIsInt int_) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Int_1 :: T_CExpr_1
+                  sem_CExpr_Int_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_Int_2 :: T_CExpr_2
+                                         sem_CExpr_Int_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.mkInt' int_) of
+                                                     { _crse ->
+                                                     (case (CR.mkExp _crse) of
+                                                      { _creBase ->
+                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                       { _cre ->
+                                                       (case (_cre) of
+                                                        { _lhsOcre ->
+                                                        (case ([]) of
+                                                         { _creAppArgL ->
+                                                         (case (_creAppArgL) of
+                                                          { _lhsOcreAppArgL ->
+                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                           { _creAppFun ->
+                                                           (case (_creAppFun) of
+                                                            { _lhsOcreAppFun ->
+                                                            (case ([]) of
+                                                             { _creLamArgL ->
+                                                             (case (_creLamArgL) of
+                                                              { _lhsOcreLamArgL ->
+                                                              (case (_cre) of
+                                                               { _creLamBody ->
+                                                               (case (_creLamBody) of
+                                                                { _lhsOcreLamBody ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_Int_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_Int_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Char :: Char ->
+                  T_CExpr
+sem_CExpr_Char char_ =
+    (case (ExprIsOtherWHNF) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Char_1 :: T_CExpr_1
+                  sem_CExpr_Char_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_Char_2 :: T_CExpr_2
+                                         sem_CExpr_Char_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.mkChar' char_) of
+                                                     { _crse ->
+                                                     (case (CR.mkExp _crse) of
+                                                      { _creBase ->
+                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                       { _cre ->
+                                                       (case (_cre) of
+                                                        { _lhsOcre ->
+                                                        (case ([]) of
+                                                         { _creAppArgL ->
+                                                         (case (_creAppArgL) of
+                                                          { _lhsOcreAppArgL ->
+                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                           { _creAppFun ->
+                                                           (case (_creAppFun) of
+                                                            { _lhsOcreAppFun ->
+                                                            (case ([]) of
+                                                             { _creLamArgL ->
+                                                             (case (_creLamArgL) of
+                                                              { _lhsOcreLamArgL ->
+                                                              (case (_cre) of
+                                                               { _creLamBody ->
+                                                               (case (_creLamBody) of
+                                                                { _lhsOcreLamBody ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_Char_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_Char_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_String :: String ->
+                    T_CExpr
+sem_CExpr_String str_ =
+    (case (ExprIsOtherWHNF) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_String_1 :: T_CExpr_1
+                  sem_CExpr_String_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_String_2 :: T_CExpr_2
+                                         sem_CExpr_String_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.mkString' str_) of
+                                                     { _crse ->
+                                                     (case (CR.mkExp _crse) of
+                                                      { _creBase ->
+                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                       { _cre ->
+                                                       (case (_cre) of
+                                                        { _lhsOcre ->
+                                                        (case ([]) of
+                                                         { _creAppArgL ->
+                                                         (case (_creAppArgL) of
+                                                          { _lhsOcreAppArgL ->
+                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                           { _creAppFun ->
+                                                           (case (_creAppFun) of
+                                                            { _lhsOcreAppFun ->
+                                                            (case ([]) of
+                                                             { _creLamArgL ->
+                                                             (case (_creLamArgL) of
+                                                              { _lhsOcreLamArgL ->
+                                                              (case (_cre) of
+                                                               { _creLamBody ->
+                                                               (case (_creLamBody) of
+                                                                { _lhsOcreLamBody ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_String_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_String_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Integer :: Integer ->
+                     T_CExpr
+sem_CExpr_Integer integer_ =
+    (case (ExprIsOtherWHNF) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Integer_1 :: T_CExpr_1
+                  sem_CExpr_Integer_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_Integer_2 :: T_CExpr_2
+                                         sem_CExpr_Integer_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.SExp_Integer integer_) of
+                                                     { _crse ->
+                                                     (case (CR.mkExp _crse) of
+                                                      { _creBase ->
+                                                      (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                       { _cre ->
+                                                       (case (_cre) of
+                                                        { _lhsOcre ->
+                                                        (case ([]) of
+                                                         { _creAppArgL ->
+                                                         (case (_creAppArgL) of
+                                                          { _lhsOcreAppArgL ->
+                                                          (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                           { _creAppFun ->
+                                                           (case (_creAppFun) of
+                                                            { _lhsOcreAppFun ->
+                                                            (case ([]) of
+                                                             { _creLamArgL ->
+                                                             (case (_creLamArgL) of
+                                                              { _lhsOcreLamArgL ->
+                                                              (case (_cre) of
+                                                               { _creLamBody ->
+                                                               (case (_creLamBody) of
+                                                                { _lhsOcreLamBody ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_Integer_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_Integer_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Tup :: CTag ->
+                 T_CExpr
+sem_CExpr_Tup tag_ =
+    (case (ExprIsTup tag_) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Tup_1 :: T_CExpr_1
+                  sem_CExpr_Tup_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_Tup_2 :: T_CExpr_2
+                                         sem_CExpr_Tup_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_Tag tag_) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.mkTup (ctagTag tag_) []) of
+                                                     { _creBase ->
+                                                     (case (_creBase) of
+                                                      { _cre ->
+                                                      (case (_cre) of
+                                                       { _lhsOcre ->
+                                                       (case ([]) of
+                                                        { _creAppArgL ->
+                                                        (case (_creAppArgL) of
+                                                         { _lhsOcreAppArgL ->
+                                                         (case (\_ -> cseCtxWrap TailCtx_Plain . CR.mkTup' (ctagTag tag_)) of
+                                                          { _creAppFun ->
+                                                          (case (_creAppFun) of
+                                                           { _lhsOcreAppFun ->
+                                                           (case ([]) of
+                                                            { _creLamArgL ->
+                                                            (case (_creLamArgL) of
+                                                             { _lhsOcreLamArgL ->
+                                                             (case (_cre) of
+                                                              { _creLamBody ->
+                                                              (case (_creLamBody) of
+                                                               { _lhsOcreLamBody ->
+                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                { _crse ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_Tup_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_Tup_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Let :: CBindCateg ->
+                 T_CBindL ->
+                 T_CExpr ->
+                 T_CExpr
+sem_CExpr_Let categ_ binds_ body_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Let_1 :: T_CExpr_1
+                  sem_CExpr_Let_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _bodyOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _bindsOrefOffset ->
+                              (case (_lhsIlev) of
+                               { _bindsOlev ->
+                               (case (_lhsIlev == cLevModule) of
+                                { _isGlobal ->
+                                (case (_isGlobal) of
+                                 { _bindsOisGlobal ->
+                                 (case (binds_ _bindsOisGlobal _bindsOlev _bindsOrefOffset) of
+                                  { ( _bindsInm2refGath,_bindsIrefOffset,binds_1) ->
+                                      (case (_bindsIrefOffset) of
+                                       { _bodyOrefOffset ->
+                                       (case (_lhsIlev) of
+                                        { _bodyOlev ->
+                                        (case (body_) of
+                                         { ( _bodyIwhatBelow,body_1) ->
+                                             (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
+                                              { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
+                                                  (case (if _isGlobal
+                                                         then (CR.emptyNm2RefMp, _bindsInm2refGath `CR.nm2refUnion` _bodyInm2refGath)
+                                                         else (_bindsInm2refGath, CR.emptyNm2RefMp)) of
+                                                   { __tup1 ->
+                                                   (case (__tup1) of
+                                                    { (_,_lhsOnm2refGath) ->
+                                                    (case (_bodyIrefOffset) of
+                                                     { _lhsOrefOffset ->
+                                                     (case ((let sem_CExpr_Let_2 :: T_CExpr_2
+                                                                 sem_CExpr_Let_2 =
+                                                                     (\ _lhsIevalCtx
+                                                                        _lhsIimpNmLkup
+                                                                        _lhsIisTopApp
+                                                                        _lhsIisTopTup
+                                                                        _lhsImodNr
+                                                                        _lhsInm2ref
+                                                                        _lhsIopts
+                                                                        _lhsIstackDepth
+                                                                        _lhsItailCtx ->
+                                                                          (case (AppFunKind_NoApp) of
+                                                                           { _lhsOappFunKind ->
+                                                                           (case (_lhsIstackDepth) of
+                                                                            { _bindsOstackDepth ->
+                                                                            (case (if categ_ == CBindCateg_Strict
+                                                                                   then EvalCtx_Eval
+                                                                                   else EvalCtx_Thunk) of
+                                                                             { _evalCtx ->
+                                                                             (case (_evalCtx) of
+                                                                              { _bindsOevalCtx ->
+                                                                              (case (_lhsIopts) of
+                                                                               { _bindsOopts ->
+                                                                               (case (_lhsImodNr) of
+                                                                                { _bindsOmodNr ->
+                                                                                (case (categ_) of
+                                                                                 { _letBindingsCateg ->
+                                                                                 (case (_letBindingsCateg) of
+                                                                                  { _bindsOletBindingsCateg ->
+                                                                                  (case (_lhsIimpNmLkup) of
+                                                                                   { _bindsOimpNmLkup ->
+                                                                                   (case (if _isGlobal
+                                                                                          then (_lhsInm2ref, _lhsInm2ref)
+                                                                                          else ( case categ_ of
+                                                                                                   CBindCateg_Rec -> _bindsInm2refGath `CR.nm2refUnion` _lhsInm2ref
+                                                                                                   _              -> _lhsInm2ref `CR.nm2refUnion` _bindsInm2refGath
+                                                                                               , _bindsInm2refGath `CR.nm2refUnion` _lhsInm2ref
+                                                                                               )) of
+                                                                                    { __tup2 ->
+                                                                                    (case (__tup2) of
+                                                                                     { (_bindsOnm2ref,_) ->
+                                                                                     (case (binds_1 _bindsOevalCtx _bindsOimpNmLkup _bindsOletBindingsCateg _bindsOmodNr _bindsOnm2ref _bindsOopts _bindsOstackDepth) of
+                                                                                      { ( _bindsIcrb,_bindsIrefOffsetMax,_bindsIstackDepth,_bindsIstackDepthMax) ->
+                                                                                          (case (_bindsIstackDepth) of
+                                                                                           { _bodyOstackDepth ->
+                                                                                           (case (_lhsIimpNmLkup) of
+                                                                                            { _bodyOimpNmLkup ->
+                                                                                            (case (__tup2) of
+                                                                                             { (_,_bodyOnm2ref) ->
+                                                                                             (case (_lhsItailCtx) of
+                                                                                              { _bodyOtailCtx ->
+                                                                                              (case (_lhsIopts) of
+                                                                                               { _bodyOopts ->
+                                                                                               (case (_lhsImodNr) of
+                                                                                                { _bodyOmodNr ->
+                                                                                                (case (True) of
+                                                                                                 { _isTopTup ->
+                                                                                                 (case (_isTopTup) of
+                                                                                                  { _bodyOisTopTup ->
+                                                                                                  (case (True) of
+                                                                                                   { _isTopApp ->
+                                                                                                   (case (_isTopApp) of
+                                                                                                    { _bodyOisTopApp ->
+                                                                                                    (case (_evalCtx) of
+                                                                                                     { _bodyOevalCtx ->
+                                                                                                     (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
+                                                                                                      { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
+                                                                                                          (case (if _isGlobal
+                                                                                                                 then _bindsIcrb ++ _bodyIcrb
+                                                                                                                 else []) of
+                                                                                                           { _lhsOcrb ->
+                                                                                                           (case (__tup1) of
+                                                                                                            { (_nm2refNew,_) ->
+                                                                                                            (case (if _isGlobal
+                                                                                                                   then _bodyIcre
+                                                                                                                   else CR.Exp_Let                _lhsIrefOffset (CR.nm2RefMpInverse _nm2refNew) (CR.crarrayFromList $ map snd _bindsIcrb) _bodyIcre) of
+                                                                                                             { _creBase ->
+                                                                                                             (case (_creBase) of
+                                                                                                              { _cre ->
+                                                                                                              (case (_cre) of
+                                                                                                               { _lhsOcre ->
+                                                                                                               (case ([]) of
+                                                                                                                { _creAppArgL ->
+                                                                                                                (case (_creAppArgL) of
+                                                                                                                 { _lhsOcreAppArgL ->
+                                                                                                                 (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                                                  { _creAppFun ->
+                                                                                                                  (case (_creAppFun) of
+                                                                                                                   { _lhsOcreAppFun ->
+                                                                                                                   (case ([]) of
+                                                                                                                    { _creLamArgL ->
+                                                                                                                    (case (_creLamArgL) of
+                                                                                                                     { _lhsOcreLamArgL ->
+                                                                                                                     (case (_cre) of
+                                                                                                                      { _creLamBody ->
+                                                                                                                      (case (_creLamBody) of
+                                                                                                                       { _lhsOcreLamBody ->
+                                                                                                                       (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                                        { _crse ->
+                                                                                                                        (case (_crse) of
+                                                                                                                         { _lhsOcrse ->
+                                                                                                                         (case (Nothing) of
+                                                                                                                          { _lhsOmbFFIApp ->
+                                                                                                                          (case (Nothing) of
+                                                                                                                           { _lhsOmbLam ->
+                                                                                                                           (case (Nothing) of
+                                                                                                                            { _lhsOmbVar ->
+                                                                                                                            (case (max _bindsIrefOffsetMax _bodyIrefOffsetMax) of
+                                                                                                                             { _refOffsetMax ->
+                                                                                                                             (case (_refOffsetMax) of
+                                                                                                                              { _lhsOrefOffsetMax ->
+                                                                                                                              (case (_bodyIstackDepth) of
+                                                                                                                               { _lhsOstackDepth ->
+                                                                                                                               (case (max _bindsIstackDepthMax _bodyIstackDepthMax) of
+                                                                                                                                { _stackDepthMax ->
+                                                                                                                                (case (_stackDepthMax) of
+                                                                                                                                 { _lhsOstackDepthMax ->
+                                                                                                                                 (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                                  { _vref ->
+                                                                                                                                  (case (_vref) of
+                                                                                                                                   { _lhsOvref ->
+                                                                                                                                   ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                             in  sem_CExpr_Let_2)) of
+                                                      { ( sem_CExpr_2) ->
+                                                      ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_Let_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_App :: T_CExpr ->
+                 T_CBound ->
+                 T_CExpr
+sem_CExpr_App func_ arg_ =
+    (case (func_) of
+     { ( _funcIwhatBelow,func_1) ->
+         (case (maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow) of
+          { _whatBelow ->
+          (case (_whatBelow) of
+           { _lhsOwhatBelow ->
+           (case ((let sem_CExpr_App_1 :: T_CExpr_1
+                       sem_CExpr_App_1 =
+                           (\ _lhsIlev
+                              _lhsIrefOffset
+                              _lhsIwhatAbove ->
+                                (case (_lhsIrefOffset) of
+                                 { _funcOrefOffset ->
+                                 (case (maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove) of
+                                  { _whatAbove ->
+                                  (case (_whatAbove) of
+                                   { _funcOwhatAbove ->
+                                   (case (_lhsIlev) of
+                                    { _funcOlev ->
+                                    (case (func_1 _funcOlev _funcOrefOffset _funcOwhatAbove) of
+                                     { ( _funcInm2refGath,_funcIrefOffset,func_2) ->
+                                         (case (_funcIrefOffset) of
+                                          { _argOrefOffset ->
+                                          (case (_lhsIlev) of
+                                           { _argOlev ->
+                                           (case (False) of
+                                            { _isGlobal ->
+                                            (case (_isGlobal) of
+                                             { _argOisGlobal ->
+                                             (case (hsnUnknown) of
+                                              { _argOnm ->
+                                              (case (EvalCtx_Thunk) of
+                                               { _argOevalCtx ->
+                                               (case (arg_ _argOevalCtx _argOisGlobal _argOlev _argOnm _argOrefOffset) of
+                                                { ( _argInm2refGath,_argIrefOffset,arg_1) ->
+                                                    (case (_funcInm2refGath `CR.nm2refUnion` _argInm2refGath) of
+                                                     { _lhsOnm2refGath ->
+                                                     (case (_argIrefOffset) of
+                                                      { _lhsOrefOffset ->
+                                                      (case ((let sem_CExpr_App_2 :: T_CExpr_2
+                                                                  sem_CExpr_App_2 =
+                                                                      (\ _lhsIevalCtx
+                                                                         _lhsIimpNmLkup
+                                                                         _lhsIisTopApp
+                                                                         _lhsIisTopTup
+                                                                         _lhsImodNr
+                                                                         _lhsInm2ref
+                                                                         _lhsIopts
+                                                                         _lhsIstackDepth
+                                                                         _lhsItailCtx ->
+                                                                           (case (TailCtx_Plain) of
+                                                                            { _tailCtx ->
+                                                                            (case (_tailCtx) of
+                                                                             { _funcOtailCtx ->
+                                                                             (case (_lhsIstackDepth) of
+                                                                              { _funcOstackDepth ->
+                                                                              (case (_lhsIopts) of
+                                                                               { _funcOopts ->
+                                                                               (case (_lhsInm2ref) of
+                                                                                { _funcOnm2ref ->
+                                                                                (case (_lhsImodNr) of
+                                                                                 { _funcOmodNr ->
+                                                                                 (case (True) of
+                                                                                  { _isTopTup ->
+                                                                                  (case (_isTopTup) of
+                                                                                   { _funcOisTopTup ->
+                                                                                   (case (_lhsIimpNmLkup) of
+                                                                                    { _funcOimpNmLkup ->
+                                                                                    (case (_lhsIevalCtx) of
+                                                                                     { _funcOevalCtx ->
+                                                                                     (case (False) of
+                                                                                      { _funcOisTopApp ->
+                                                                                      (case (func_2 _funcOevalCtx _funcOimpNmLkup _funcOisTopApp _funcOisTopTup _funcOmodNr _funcOnm2ref _funcOopts _funcOstackDepth _funcOtailCtx) of
+                                                                                       { ( _funcIappFunKind,_funcIcrb,_funcIcre,_funcIcreAppArgL,_funcIcreAppFun,_funcIcreLamArgL,_funcIcreLamBody,_funcIcrse,_funcImbFFIApp,_funcImbLam,_funcImbVar,_funcIrefOffsetMax,_funcIstackDepth,_funcIstackDepthMax,_funcIvref) ->
+                                                                                           (case (_funcIappFunKind) of
+                                                                                            { _lhsOappFunKind ->
+                                                                                            (case ([]) of
+                                                                                             { _lhsOcrb ->
+                                                                                             (case (_lhsInm2ref) of
+                                                                                              { _argOnm2ref ->
+                                                                                              (case (_lhsIimpNmLkup) of
+                                                                                               { _argOimpNmLkup ->
+                                                                                               (case (_funcIcreAppFun) of
+                                                                                                { _creAppFun ->
+                                                                                                (case (if whatExprIsTup _funcIwhatBelow || whatExprIsFFI _funcIwhatBelow then _lhsIstackDepth else _funcIstackDepth) of
+                                                                                                 { _stackDepthFunc ->
+                                                                                                 (case (_stackDepthFunc) of
+                                                                                                  { _argOstackDepth ->
+                                                                                                  (case (_lhsIopts) of
+                                                                                                   { _argOopts ->
+                                                                                                   (case (_lhsImodNr) of
+                                                                                                    { _argOmodNr ->
+                                                                                                    (case (acoreBindcategPlain) of
+                                                                                                     { _letBindingsCateg ->
+                                                                                                     (case (_letBindingsCateg) of
+                                                                                                      { _argOletBindingsCateg ->
+                                                                                                      (case (_isTopTup) of
+                                                                                                       { _argOisTopTup ->
+                                                                                                       (case (True) of
+                                                                                                        { _argOisTopApp ->
+                                                                                                        (case (arg_1 _argOimpNmLkup _argOisTopApp _argOisTopTup _argOletBindingsCateg _argOmodNr _argOnm2ref _argOopts _argOstackDepth) of
+                                                                                                         { ( _argIcrb,_argIrefOffsetMax,_argIstackDepth,_argIstackDepthMax) ->
+                                                                                                             (case ((CR.exp2sexp $ snd $ head _argIcrb) : _funcIcreAppArgL) of
+                                                                                                              { _creAppArgL ->
+                                                                                                              (case (isNothing $ whatExprMbApp _lhsIwhatAbove) of
+                                                                                                               { _isTopApp' ->
+                                                                                                               (case (if _isTopApp'
+                                                                                                                      then _creAppFun _lhsItailCtx $ CR.crarrayFromList $ reverse _creAppArgL
+                                                                                                                      else CR.dbg "Core.ToCoreRun.CExpr.App.cre") of
+                                                                                                                { _creBase ->
+                                                                                                                (case (_creBase) of
+                                                                                                                 { _cre ->
+                                                                                                                 (case (_cre) of
+                                                                                                                  { _lhsOcre ->
+                                                                                                                  (case (_creAppArgL) of
+                                                                                                                   { _lhsOcreAppArgL ->
+                                                                                                                   (case (_creAppFun) of
+                                                                                                                    { _lhsOcreAppFun ->
+                                                                                                                    (case ([]) of
+                                                                                                                     { _creLamArgL ->
+                                                                                                                     (case (_creLamArgL) of
+                                                                                                                      { _lhsOcreLamArgL ->
+                                                                                                                      (case (_cre) of
+                                                                                                                       { _creLamBody ->
+                                                                                                                       (case (_creLamBody) of
+                                                                                                                        { _lhsOcreLamBody ->
+                                                                                                                        (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                                         { _crse ->
+                                                                                                                         (case (_crse) of
+                                                                                                                          { _lhsOcrse ->
+                                                                                                                          (case (_funcImbFFIApp) of
+                                                                                                                           { _lhsOmbFFIApp ->
+                                                                                                                           (case (Nothing) of
+                                                                                                                            { _lhsOmbLam ->
+                                                                                                                            (case (Nothing) of
+                                                                                                                             { _lhsOmbVar ->
+                                                                                                                             (case (_funcIrefOffsetMax `max` _argIrefOffsetMax) of
+                                                                                                                              { _lhsOrefOffsetMax ->
+                                                                                                                              (case (if _isTopApp' then _lhsIstackDepth + 1 else _argIstackDepth) of
+                                                                                                                               { _lhsOstackDepth ->
+                                                                                                                               (case (max _argIstackDepth _argIstackDepthMax) of
+                                                                                                                                { _stackDepthMax ->
+                                                                                                                                (case (_stackDepthMax) of
+                                                                                                                                 { _lhsOstackDepthMax ->
+                                                                                                                                 (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                                  { _vref ->
+                                                                                                                                  (case (_vref) of
+                                                                                                                                   { _lhsOvref ->
+                                                                                                                                   ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                              in  sem_CExpr_App_2)) of
+                                                       { ( sem_CExpr_2) ->
+                                                       ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                   in  sem_CExpr_App_1)) of
+            { ( sem_CExpr_1) ->
+            ( _lhsOwhatBelow,sem_CExpr_1) }) }) }) })
+sem_CExpr_Lam :: T_CBind ->
+                 T_CExpr ->
+                 T_CExpr
+sem_CExpr_Lam bind_ body_ =
+    (case (body_) of
+     { ( _bodyIwhatBelow,body_1) ->
+         (case (maybe (ExprIsLam 1 Nothing) (\a -> ExprIsLam (a + 1) Nothing) $ whatExprMbLam _bodyIwhatBelow) of
+          { _whatBelow ->
+          (case (_whatBelow) of
+           { _lhsOwhatBelow ->
+           (case ((let sem_CExpr_Lam_1 :: T_CExpr_1
+                       sem_CExpr_Lam_1 =
+                           (\ _lhsIlev
+                              _lhsIrefOffset
+                              _lhsIwhatAbove ->
+                                (case (case _lhsIwhatAbove of
+                                           ExprIsLam a mbnm    -> ExprIsLam (a + 1) mbnm
+                                           ExprIsBind nm       -> ExprIsLam 1       (Just nm)
+                                           _                   -> ExprIsLam 1       Nothing) of
+                                 { _whatAbove ->
+                                 (case (_whatAbove) of
+                                  { _bodyOwhatAbove ->
+                                  (case (not $ whatExprIsLam _lhsIwhatAbove) of
+                                   { _isTopLam ->
+                                   (case (if _isTopLam then _lhsIlev + 1 else _lhsIlev) of
+                                    { _lev ->
+                                    (case (_lev) of
+                                     { _bodyOlev ->
+                                     (case (if _isTopLam
+                                            then (0,1)
+                                            else (_lhsIrefOffset, _lhsIrefOffset + 1)) of
+                                      { __tup3 ->
+                                      (case (__tup3) of
+                                       { (_,_refOffsetBody) ->
+                                       (case (_refOffsetBody) of
+                                        { _bodyOrefOffset ->
+                                        (case (__tup3) of
+                                         { (_refOffset,_) ->
+                                         (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
+                                          { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
+                                              (case (_refOffset) of
+                                               { _bindOrefOffset ->
+                                               (case (_lev) of
+                                                { _bindOlev ->
+                                                (case (False) of
+                                                 { _isGlobal ->
+                                                 (case (_isGlobal) of
+                                                  { _bindOisGlobal ->
+                                                  (case (bind_ _bindOisGlobal _bindOlev _bindOrefOffset) of
+                                                   { ( _bindInm,_bindInm2refGath,_bindIrefOffset,bind_1) ->
+                                                       (case (Rel.insert _bindInm (CR.RRef_Loc _lev _refOffset) _bodyInm2refGath) of
+                                                        { _nm2refNew ->
+                                                        (case (if _isTopLam
+                                                               then CR.emptyNm2RefMp
+                                                               else _nm2refNew) of
+                                                         { _lhsOnm2refGath ->
+                                                         (case (_lhsIrefOffset) of
+                                                          { _lhsOrefOffset ->
+                                                          (case ((let sem_CExpr_Lam_2 :: T_CExpr_2
+                                                                      sem_CExpr_Lam_2 =
+                                                                          (\ _lhsIevalCtx
+                                                                             _lhsIimpNmLkup
+                                                                             _lhsIisTopApp
+                                                                             _lhsIisTopTup
+                                                                             _lhsImodNr
+                                                                             _lhsInm2ref
+                                                                             _lhsIopts
+                                                                             _lhsIstackDepth
+                                                                             _lhsItailCtx ->
+                                                                               (case (AppFunKind_NoApp) of
+                                                                                { _lhsOappFunKind ->
+                                                                                (case ([]) of
+                                                                                 { _lhsOcrb ->
+                                                                                 (case (if _isTopLam
+                                                                                        then _nm2refNew `CR.nm2refUnion` _lhsInm2ref
+                                                                                        else _lhsInm2ref) of
+                                                                                  { _nm2ref ->
+                                                                                  (case (_nm2ref) of
+                                                                                   { _bodyOnm2ref ->
+                                                                                   (case (_lhsIimpNmLkup) of
+                                                                                    { _bodyOimpNmLkup ->
+                                                                                    (case (_lhsIopts) of
+                                                                                     { _bodyOopts ->
+                                                                                     (case (_lhsImodNr) of
+                                                                                      { _bodyOmodNr ->
+                                                                                      (case (True) of
+                                                                                       { _isTopTup ->
+                                                                                       (case (_isTopTup) of
+                                                                                        { _bodyOisTopTup ->
+                                                                                        (case (True) of
+                                                                                         { _isTopApp ->
+                                                                                         (case (_isTopApp) of
+                                                                                          { _bodyOisTopApp ->
+                                                                                          (case (_lhsIevalCtx) of
+                                                                                           { _bodyOevalCtx ->
+                                                                                           (case (_refOffsetBody) of
+                                                                                            { _bodyOstackDepth ->
+                                                                                            (case (TailCtx_TailCall) of
+                                                                                             { _bodyOtailCtx ->
+                                                                                             (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
+                                                                                              { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
+                                                                                                  (case (_bindInm : _bodyIcreLamArgL) of
+                                                                                                   { _creLamArgL ->
+                                                                                                   (case (max _bodyIstackDepth _bodyIstackDepthMax) of
+                                                                                                    { _stackDepthMax ->
+                                                                                                    (case (if _isTopLam
+                                                                                                           then CR.Exp_Lam (whatExprMbBind _lhsIwhatAbove)            (length _creLamArgL)                     (_stackDepthMax) (CR.nm2RefMpInverse _nm2refNew) _bodyIcreLamBody
+                                                                                                           else CR.dbg "Core.ToCoreRun.CExpr.Lam.cre") of
+                                                                                                     { _creBase ->
+                                                                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                                                      { _cre ->
+                                                                                                      (case (_cre) of
+                                                                                                       { _lhsOcre ->
+                                                                                                       (case ([]) of
+                                                                                                        { _creAppArgL ->
+                                                                                                        (case (_creAppArgL) of
+                                                                                                         { _lhsOcreAppArgL ->
+                                                                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                                          { _creAppFun ->
+                                                                                                          (case (_creAppFun) of
+                                                                                                           { _lhsOcreAppFun ->
+                                                                                                           (case (_creLamArgL) of
+                                                                                                            { _lhsOcreLamArgL ->
+                                                                                                            (case (_bodyIcreLamBody) of
+                                                                                                             { _creLamBody ->
+                                                                                                             (case (_creLamBody) of
+                                                                                                              { _lhsOcreLamBody ->
+                                                                                                              (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                               { _crse ->
+                                                                                                               (case (_crse) of
+                                                                                                                { _lhsOcrse ->
+                                                                                                                (case (Nothing) of
+                                                                                                                 { _lhsOmbFFIApp ->
+                                                                                                                 (case (_bindInm) of
+                                                                                                                  { _argNm ->
+                                                                                                                  (case (Just $ maybe [_argNm] (_argNm:) _bodyImbLam) of
+                                                                                                                   { _lhsOmbLam ->
+                                                                                                                   (case (Nothing) of
+                                                                                                                    { _lhsOmbVar ->
+                                                                                                                    (case (max _bodyIrefOffset _bodyIrefOffsetMax) of
+                                                                                                                     { _refOffsetMax ->
+                                                                                                                     (case (_refOffsetMax) of
+                                                                                                                      { _lhsOrefOffsetMax ->
+                                                                                                                      (case (_bodyIstackDepth) of
+                                                                                                                       { _lhsOstackDepth ->
+                                                                                                                       (case (_stackDepthMax) of
+                                                                                                                        { _lhsOstackDepthMax ->
+                                                                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                         { _vref ->
+                                                                                                                         (case (_vref) of
+                                                                                                                          { _lhsOvref ->
+                                                                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                                  in  sem_CExpr_Lam_2)) of
+                                                           { ( sem_CExpr_2) ->
+                                                           ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                   in  sem_CExpr_Lam_1)) of
+            { ( sem_CExpr_1) ->
+            ( _lhsOwhatBelow,sem_CExpr_1) }) }) }) })
+sem_CExpr_Case :: T_CExpr ->
+                  T_CAltL ->
+                  T_CExpr ->
+                  T_CExpr
+sem_CExpr_Case expr_ alts_ dflt_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Case_1 :: T_CExpr_1
+                  sem_CExpr_Case_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _dfltOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _exprOrefOffset ->
+                              (case (expr_) of
+                               { ( _exprIwhatBelow,expr_1) ->
+                                   (case (_whatAbove) of
+                                    { _exprOwhatAbove ->
+                                    (case (_lhsIlev) of
+                                     { _exprOlev ->
+                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                                          (case (_exprIrefOffset) of
+                                           { _altsOrefOffset ->
+                                           (case (_lhsIlev) of
+                                            { _altsOlev ->
+                                            (case (alts_ _altsOlev _altsOrefOffset) of
+                                             { ( _altsInm2refGath,_altsIrefOffset,alts_1) ->
+                                                 (case (_altsIrefOffset) of
+                                                  { _dfltOrefOffset ->
+                                                  (case (_lhsIlev) of
+                                                   { _dfltOlev ->
+                                                   (case (dflt_) of
+                                                    { ( _dfltIwhatBelow,dflt_1) ->
+                                                        (case (dflt_1 _dfltOlev _dfltOrefOffset _dfltOwhatAbove) of
+                                                         { ( _dfltInm2refGath,_dfltIrefOffset,dflt_2) ->
+                                                             (case (_exprInm2refGath `CR.nm2refUnion` _altsInm2refGath `CR.nm2refUnion` _dfltInm2refGath) of
+                                                              { _lhsOnm2refGath ->
+                                                              (case (_dfltIrefOffset) of
+                                                               { _lhsOrefOffset ->
+                                                               (case ((let sem_CExpr_Case_2 :: T_CExpr_2
+                                                                           sem_CExpr_Case_2 =
+                                                                               (\ _lhsIevalCtx
+                                                                                  _lhsIimpNmLkup
+                                                                                  _lhsIisTopApp
+                                                                                  _lhsIisTopTup
+                                                                                  _lhsImodNr
+                                                                                  _lhsInm2ref
+                                                                                  _lhsIopts
+                                                                                  _lhsIstackDepth
+                                                                                  _lhsItailCtx ->
+                                                                                    (case (AppFunKind_NoApp) of
+                                                                                     { _lhsOappFunKind ->
+                                                                                     (case ([]) of
+                                                                                      { _lhsOcrb ->
+                                                                                      (case (_lhsItailCtx) of
+                                                                                       { _altsOtailCtx ->
+                                                                                       (case (_lhsInm2ref) of
+                                                                                        { _altsOnm2ref ->
+                                                                                        (case (_lhsIimpNmLkup) of
+                                                                                         { _altsOimpNmLkup ->
+                                                                                         (case (_lhsInm2ref) of
+                                                                                          { _exprOnm2ref ->
+                                                                                          (case (_lhsIimpNmLkup) of
+                                                                                           { _exprOimpNmLkup ->
+                                                                                           (case (maybe CR.noRRef (\n -> CR.rrefResolve Nothing Nothing _lhsInm2ref n) $ whatExprMbVar _exprIwhatBelow) of
+                                                                                            { _altsOscrutRef ->
+                                                                                            (case (_lhsIstackDepth) of
+                                                                                             { _altsOstackDepth ->
+                                                                                             (case (_lhsIopts) of
+                                                                                              { _altsOopts ->
+                                                                                              (case (_lhsImodNr) of
+                                                                                               { _altsOmodNr ->
+                                                                                               (case (_lhsIevalCtx) of
+                                                                                                { _altsOevalCtx ->
+                                                                                                (case (alts_1 _altsOevalCtx _altsOimpNmLkup _altsOmodNr _altsOnm2ref _altsOopts _altsOscrutRef _altsOstackDepth _altsOtailCtx) of
+                                                                                                 { ( _altsIcra,_altsIrefOffsetMax,_altsIstackDepth,_altsIstackDepthMax) ->
+                                                                                                     (case (_lhsIstackDepth) of
+                                                                                                      { _exprOstackDepth ->
+                                                                                                      (case (_lhsIopts) of
+                                                                                                       { _exprOopts ->
+                                                                                                       (case (_lhsImodNr) of
+                                                                                                        { _exprOmodNr ->
+                                                                                                        (case (True) of
+                                                                                                         { _isTopTup ->
+                                                                                                         (case (_isTopTup) of
+                                                                                                          { _exprOisTopTup ->
+                                                                                                          (case (True) of
+                                                                                                           { _isTopApp ->
+                                                                                                           (case (_isTopApp) of
+                                                                                                            { _exprOisTopApp ->
+                                                                                                            (case (_lhsIevalCtx) of
+                                                                                                             { _exprOevalCtx ->
+                                                                                                             (case (TailCtx_Plain) of
+                                                                                                              { _exprOtailCtx ->
+                                                                                                              (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                                                               { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                                                                   (case (CR.Exp_Case (CR.mkVar' $ CR.RRef_Tag _exprIvref) $ CR.crarrayFromList _altsIcra) of
+                                                                                                                    { _creBase ->
+                                                                                                                    (case (_creBase) of
+                                                                                                                     { _cre ->
+                                                                                                                     (case (_cre) of
+                                                                                                                      { _lhsOcre ->
+                                                                                                                      (case ([]) of
+                                                                                                                       { _creAppArgL ->
+                                                                                                                       (case (_creAppArgL) of
+                                                                                                                        { _lhsOcreAppArgL ->
+                                                                                                                        (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                                                         { _creAppFun ->
+                                                                                                                         (case (_creAppFun) of
+                                                                                                                          { _lhsOcreAppFun ->
+                                                                                                                          (case ([]) of
+                                                                                                                           { _creLamArgL ->
+                                                                                                                           (case (_creLamArgL) of
+                                                                                                                            { _lhsOcreLamArgL ->
+                                                                                                                            (case (_cre) of
+                                                                                                                             { _creLamBody ->
+                                                                                                                             (case (_creLamBody) of
+                                                                                                                              { _lhsOcreLamBody ->
+                                                                                                                              (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                                               { _crse ->
+                                                                                                                               (case (_crse) of
+                                                                                                                                { _lhsOcrse ->
+                                                                                                                                (case (Nothing) of
+                                                                                                                                 { _lhsOmbFFIApp ->
+                                                                                                                                 (case (Nothing) of
+                                                                                                                                  { _lhsOmbLam ->
+                                                                                                                                  (case (Nothing) of
+                                                                                                                                   { _lhsOmbVar ->
+                                                                                                                                   (case (_lhsItailCtx) of
+                                                                                                                                    { _dfltOtailCtx ->
+                                                                                                                                    (case (_altsIstackDepth) of
+                                                                                                                                     { _dfltOstackDepth ->
+                                                                                                                                     (case (_lhsIopts) of
+                                                                                                                                      { _dfltOopts ->
+                                                                                                                                      (case (_lhsInm2ref) of
+                                                                                                                                       { _dfltOnm2ref ->
+                                                                                                                                       (case (_lhsImodNr) of
+                                                                                                                                        { _dfltOmodNr ->
+                                                                                                                                        (case (_isTopTup) of
+                                                                                                                                         { _dfltOisTopTup ->
+                                                                                                                                         (case (_isTopApp) of
+                                                                                                                                          { _dfltOisTopApp ->
+                                                                                                                                          (case (_lhsIimpNmLkup) of
+                                                                                                                                           { _dfltOimpNmLkup ->
+                                                                                                                                           (case (_lhsIevalCtx) of
+                                                                                                                                            { _dfltOevalCtx ->
+                                                                                                                                            (case (dflt_2 _dfltOevalCtx _dfltOimpNmLkup _dfltOisTopApp _dfltOisTopTup _dfltOmodNr _dfltOnm2ref _dfltOopts _dfltOstackDepth _dfltOtailCtx) of
+                                                                                                                                             { ( _dfltIappFunKind,_dfltIcrb,_dfltIcre,_dfltIcreAppArgL,_dfltIcreAppFun,_dfltIcreLamArgL,_dfltIcreLamBody,_dfltIcrse,_dfltImbFFIApp,_dfltImbLam,_dfltImbVar,_dfltIrefOffsetMax,_dfltIstackDepth,_dfltIstackDepthMax,_dfltIvref) ->
+                                                                                                                                                 (case (_exprIrefOffsetMax `max` _altsIrefOffsetMax `max` _dfltIrefOffsetMax) of
+                                                                                                                                                  { _lhsOrefOffsetMax ->
+                                                                                                                                                  (case (_lhsIstackDepth + 1) of
+                                                                                                                                                   { _stackDepthHere ->
+                                                                                                                                                   (case (_stackDepthHere) of
+                                                                                                                                                    { _lhsOstackDepth ->
+                                                                                                                                                    (case (max _exprIstackDepthMax _altsIstackDepthMax) of
+                                                                                                                                                     { _stackDepthMax ->
+                                                                                                                                                     (case (_stackDepthMax) of
+                                                                                                                                                      { _lhsOstackDepthMax ->
+                                                                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                                                       { _vref ->
+                                                                                                                                                       (case (_vref) of
+                                                                                                                                                        { _lhsOvref ->
+                                                                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                                       in  sem_CExpr_Case_2)) of
+                                                                { ( sem_CExpr_2) ->
+                                                                ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_Case_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_CaseAltFail :: CaseAltFailReason ->
+                         T_CExpr ->
+                         T_CExpr
+sem_CExpr_CaseAltFail failReason_ errorExpr_ =
+    (case (errorExpr_) of
+     { ( _errorExprIwhatBelow,errorExpr_1) ->
+         (case (_errorExprIwhatBelow) of
+          { _lhsOwhatBelow ->
+          (case ((let sem_CExpr_CaseAltFail_1 :: T_CExpr_1
+                      sem_CExpr_CaseAltFail_1 =
+                          (\ _lhsIlev
+                             _lhsIrefOffset
+                             _lhsIwhatAbove ->
+                               (case (ExprIsOther) of
+                                { _whatAbove ->
+                                (case (_whatAbove) of
+                                 { _errorExprOwhatAbove ->
+                                 (case (_lhsIrefOffset) of
+                                  { _errorExprOrefOffset ->
+                                  (case (_lhsIlev) of
+                                   { _errorExprOlev ->
+                                   (case (errorExpr_1 _errorExprOlev _errorExprOrefOffset _errorExprOwhatAbove) of
+                                    { ( _errorExprInm2refGath,_errorExprIrefOffset,errorExpr_2) ->
+                                        (case (_errorExprInm2refGath) of
+                                         { _lhsOnm2refGath ->
+                                         (case (_errorExprIrefOffset) of
+                                          { _lhsOrefOffset ->
+                                          (case ((let sem_CExpr_CaseAltFail_2 :: T_CExpr_2
+                                                      sem_CExpr_CaseAltFail_2 =
+                                                          (\ _lhsIevalCtx
+                                                             _lhsIimpNmLkup
+                                                             _lhsIisTopApp
+                                                             _lhsIisTopTup
+                                                             _lhsImodNr
+                                                             _lhsInm2ref
+                                                             _lhsIopts
+                                                             _lhsIstackDepth
+                                                             _lhsItailCtx ->
+                                                               (case (_lhsItailCtx) of
+                                                                { _errorExprOtailCtx ->
+                                                                (case (_lhsIstackDepth) of
+                                                                 { _errorExprOstackDepth ->
+                                                                 (case (_lhsIopts) of
+                                                                  { _errorExprOopts ->
+                                                                  (case (_lhsInm2ref) of
+                                                                   { _errorExprOnm2ref ->
+                                                                   (case (_lhsImodNr) of
+                                                                    { _errorExprOmodNr ->
+                                                                    (case (True) of
+                                                                     { _isTopTup ->
+                                                                     (case (_isTopTup) of
+                                                                      { _errorExprOisTopTup ->
+                                                                      (case (True) of
+                                                                       { _isTopApp ->
+                                                                       (case (_isTopApp) of
+                                                                        { _errorExprOisTopApp ->
+                                                                        (case (_lhsIimpNmLkup) of
+                                                                         { _errorExprOimpNmLkup ->
+                                                                         (case (_lhsIevalCtx) of
+                                                                          { _errorExprOevalCtx ->
+                                                                          (case (errorExpr_2 _errorExprOevalCtx _errorExprOimpNmLkup _errorExprOisTopApp _errorExprOisTopTup _errorExprOmodNr _errorExprOnm2ref _errorExprOopts _errorExprOstackDepth _errorExprOtailCtx) of
+                                                                           { ( _errorExprIappFunKind,_errorExprIcrb,_errorExprIcre,_errorExprIcreAppArgL,_errorExprIcreAppFun,_errorExprIcreLamArgL,_errorExprIcreLamBody,_errorExprIcrse,_errorExprImbFFIApp,_errorExprImbLam,_errorExprImbVar,_errorExprIrefOffsetMax,_errorExprIstackDepth,_errorExprIstackDepthMax,_errorExprIvref) ->
+                                                                               (case (_errorExprIappFunKind) of
+                                                                                { _lhsOappFunKind ->
+                                                                                (case ([]) of
+                                                                                 { _lhsOcrb ->
+                                                                                 (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                                  { _creBase ->
+                                                                                  (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                                   { _cre ->
+                                                                                   (case (_cre) of
+                                                                                    { _lhsOcre ->
+                                                                                    (case ([]) of
+                                                                                     { _creAppArgL ->
+                                                                                     (case (_creAppArgL) of
+                                                                                      { _lhsOcreAppArgL ->
+                                                                                      (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                       { _creAppFun ->
+                                                                                       (case (_creAppFun) of
+                                                                                        { _lhsOcreAppFun ->
+                                                                                        (case ([]) of
+                                                                                         { _creLamArgL ->
+                                                                                         (case (_creLamArgL) of
+                                                                                          { _lhsOcreLamArgL ->
+                                                                                          (case (_cre) of
+                                                                                           { _creLamBody ->
+                                                                                           (case (_creLamBody) of
+                                                                                            { _lhsOcreLamBody ->
+                                                                                            (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                             { _crse ->
+                                                                                             (case (_crse) of
+                                                                                              { _lhsOcrse ->
+                                                                                              (case (Nothing) of
+                                                                                               { _lhsOmbFFIApp ->
+                                                                                               (case (_errorExprImbLam) of
+                                                                                                { _lhsOmbLam ->
+                                                                                                (case (_errorExprImbVar) of
+                                                                                                 { _lhsOmbVar ->
+                                                                                                 (case (_errorExprIrefOffsetMax) of
+                                                                                                  { _lhsOrefOffsetMax ->
+                                                                                                  (case (_lhsIstackDepth + 1) of
+                                                                                                   { _stackDepthHere ->
+                                                                                                   (case (_stackDepthHere) of
+                                                                                                    { _lhsOstackDepth ->
+                                                                                                    (case (_stackDepthHere) of
+                                                                                                     { _lhsOstackDepthMax ->
+                                                                                                     (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                      { _vref ->
+                                                                                                      (case (_vref) of
+                                                                                                       { _lhsOvref ->
+                                                                                                       ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                  in  sem_CExpr_CaseAltFail_2)) of
+                                           { ( sem_CExpr_2) ->
+                                           ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }))
+                  in  sem_CExpr_CaseAltFail_1)) of
+           { ( sem_CExpr_1) ->
+           ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_TupDel :: T_CExpr ->
+                    CTag ->
+                    HsName ->
+                    T_CExpr ->
+                    T_CExpr
+sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_TupDel_1 :: T_CExpr_1
+                  sem_CExpr_TupDel_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _offsetOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _exprOrefOffset ->
+                              (case (expr_) of
+                               { ( _exprIwhatBelow,expr_1) ->
+                                   (case (_whatAbove) of
+                                    { _exprOwhatAbove ->
+                                    (case (_lhsIlev) of
+                                     { _exprOlev ->
+                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                                          (case (_exprIrefOffset) of
+                                           { _offsetOrefOffset ->
+                                           (case (_lhsIlev) of
+                                            { _offsetOlev ->
+                                            (case (offset_) of
+                                             { ( _offsetIwhatBelow,offset_1) ->
+                                                 (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
+                                                  { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
+                                                      (case (_exprInm2refGath `CR.nm2refUnion` _offsetInm2refGath) of
+                                                       { _lhsOnm2refGath ->
+                                                       (case (_offsetIrefOffset) of
+                                                        { _lhsOrefOffset ->
+                                                        (case ((let sem_CExpr_TupDel_2 :: T_CExpr_2
+                                                                    sem_CExpr_TupDel_2 =
+                                                                        (\ _lhsIevalCtx
+                                                                           _lhsIimpNmLkup
+                                                                           _lhsIisTopApp
+                                                                           _lhsIisTopTup
+                                                                           _lhsImodNr
+                                                                           _lhsInm2ref
+                                                                           _lhsIopts
+                                                                           _lhsIstackDepth
+                                                                           _lhsItailCtx ->
+                                                                             (case (AppFunKind_NoApp) of
+                                                                              { _lhsOappFunKind ->
+                                                                              (case ([]) of
+                                                                               { _lhsOcrb ->
+                                                                               (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                                { _creBase ->
+                                                                                (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                                 { _cre ->
+                                                                                 (case (_cre) of
+                                                                                  { _lhsOcre ->
+                                                                                  (case ([]) of
+                                                                                   { _creAppArgL ->
+                                                                                   (case (_creAppArgL) of
+                                                                                    { _lhsOcreAppArgL ->
+                                                                                    (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                     { _creAppFun ->
+                                                                                     (case (_creAppFun) of
+                                                                                      { _lhsOcreAppFun ->
+                                                                                      (case ([]) of
+                                                                                       { _creLamArgL ->
+                                                                                       (case (_creLamArgL) of
+                                                                                        { _lhsOcreLamArgL ->
+                                                                                        (case (_cre) of
+                                                                                         { _creLamBody ->
+                                                                                         (case (_creLamBody) of
+                                                                                          { _lhsOcreLamBody ->
+                                                                                          (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                           { _crse ->
+                                                                                           (case (_crse) of
+                                                                                            { _lhsOcrse ->
+                                                                                            (case (Nothing) of
+                                                                                             { _lhsOmbFFIApp ->
+                                                                                             (case (Nothing) of
+                                                                                              { _lhsOmbLam ->
+                                                                                              (case (Nothing) of
+                                                                                               { _lhsOmbVar ->
+                                                                                               (case (_lhsItailCtx) of
+                                                                                                { _offsetOtailCtx ->
+                                                                                                (case (_lhsIstackDepth) of
+                                                                                                 { _exprOstackDepth ->
+                                                                                                 (case (_lhsItailCtx) of
+                                                                                                  { _exprOtailCtx ->
+                                                                                                  (case (_lhsIopts) of
+                                                                                                   { _exprOopts ->
+                                                                                                   (case (_lhsInm2ref) of
+                                                                                                    { _exprOnm2ref ->
+                                                                                                    (case (_lhsImodNr) of
+                                                                                                     { _exprOmodNr ->
+                                                                                                     (case (True) of
+                                                                                                      { _isTopApp ->
+                                                                                                      (case (_isTopApp) of
+                                                                                                       { _exprOisTopApp ->
+                                                                                                       (case (_lhsIimpNmLkup) of
+                                                                                                        { _exprOimpNmLkup ->
+                                                                                                        (case (_lhsIevalCtx) of
+                                                                                                         { _exprOevalCtx ->
+                                                                                                         (case (False) of
+                                                                                                          { _exprOisTopTup ->
+                                                                                                          (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                                                           { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                                                               (case (_exprIstackDepth) of
+                                                                                                                { _offsetOstackDepth ->
+                                                                                                                (case (_lhsIopts) of
+                                                                                                                 { _offsetOopts ->
+                                                                                                                 (case (_lhsInm2ref) of
+                                                                                                                  { _offsetOnm2ref ->
+                                                                                                                  (case (_lhsImodNr) of
+                                                                                                                   { _offsetOmodNr ->
+                                                                                                                   (case (True) of
+                                                                                                                    { _isTopTup ->
+                                                                                                                    (case (_isTopTup) of
+                                                                                                                     { _offsetOisTopTup ->
+                                                                                                                     (case (_isTopApp) of
+                                                                                                                      { _offsetOisTopApp ->
+                                                                                                                      (case (_lhsIimpNmLkup) of
+                                                                                                                       { _offsetOimpNmLkup ->
+                                                                                                                       (case (_lhsIevalCtx) of
+                                                                                                                        { _offsetOevalCtx ->
+                                                                                                                        (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
+                                                                                                                         { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
+                                                                                                                             (case (_exprIrefOffsetMax `max` _offsetIrefOffsetMax) of
+                                                                                                                              { _lhsOrefOffsetMax ->
+                                                                                                                              (case (_lhsIstackDepth + 1) of
+                                                                                                                               { _stackDepthHere ->
+                                                                                                                               (case (_stackDepthHere) of
+                                                                                                                                { _lhsOstackDepth ->
+                                                                                                                                (case (_stackDepthHere) of
+                                                                                                                                 { _lhsOstackDepthMax ->
+                                                                                                                                 (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                                  { _vref ->
+                                                                                                                                  (case (_vref) of
+                                                                                                                                   { _lhsOvref ->
+                                                                                                                                   ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                                in  sem_CExpr_TupDel_2)) of
+                                                         { ( sem_CExpr_2) ->
+                                                         ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_TupDel_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_TupIns :: T_CExpr ->
+                    CTag ->
+                    HsName ->
+                    T_CExpr ->
+                    T_CExpr ->
+                    T_CExpr
+sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_TupIns_1 :: T_CExpr_1
+                  sem_CExpr_TupIns_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _fldExprOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _exprOrefOffset ->
+                              (case (expr_) of
+                               { ( _exprIwhatBelow,expr_1) ->
+                                   (case (_whatAbove) of
+                                    { _exprOwhatAbove ->
+                                    (case (_lhsIlev) of
+                                     { _exprOlev ->
+                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                                          (case (_exprIrefOffset) of
+                                           { _offsetOrefOffset ->
+                                           (case (offset_) of
+                                            { ( _offsetIwhatBelow,offset_1) ->
+                                                (case (_whatAbove) of
+                                                 { _offsetOwhatAbove ->
+                                                 (case (_lhsIlev) of
+                                                  { _offsetOlev ->
+                                                  (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
+                                                   { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
+                                                       (case (_offsetIrefOffset) of
+                                                        { _fldExprOrefOffset ->
+                                                        (case (_lhsIlev) of
+                                                         { _fldExprOlev ->
+                                                         (case (fldExpr_) of
+                                                          { ( _fldExprIwhatBelow,fldExpr_1) ->
+                                                              (case (fldExpr_1 _fldExprOlev _fldExprOrefOffset _fldExprOwhatAbove) of
+                                                               { ( _fldExprInm2refGath,_fldExprIrefOffset,fldExpr_2) ->
+                                                                   (case (_exprInm2refGath `CR.nm2refUnion` _offsetInm2refGath `CR.nm2refUnion` _fldExprInm2refGath) of
+                                                                    { _lhsOnm2refGath ->
+                                                                    (case (_fldExprIrefOffset) of
+                                                                     { _lhsOrefOffset ->
+                                                                     (case ((let sem_CExpr_TupIns_2 :: T_CExpr_2
+                                                                                 sem_CExpr_TupIns_2 =
+                                                                                     (\ _lhsIevalCtx
+                                                                                        _lhsIimpNmLkup
+                                                                                        _lhsIisTopApp
+                                                                                        _lhsIisTopTup
+                                                                                        _lhsImodNr
+                                                                                        _lhsInm2ref
+                                                                                        _lhsIopts
+                                                                                        _lhsIstackDepth
+                                                                                        _lhsItailCtx ->
+                                                                                          (case (AppFunKind_NoApp) of
+                                                                                           { _lhsOappFunKind ->
+                                                                                           (case ([]) of
+                                                                                            { _lhsOcrb ->
+                                                                                            (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                                             { _creBase ->
+                                                                                             (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                                              { _cre ->
+                                                                                              (case (_cre) of
+                                                                                               { _lhsOcre ->
+                                                                                               (case ([]) of
+                                                                                                { _creAppArgL ->
+                                                                                                (case (_creAppArgL) of
+                                                                                                 { _lhsOcreAppArgL ->
+                                                                                                 (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                                  { _creAppFun ->
+                                                                                                  (case (_creAppFun) of
+                                                                                                   { _lhsOcreAppFun ->
+                                                                                                   (case ([]) of
+                                                                                                    { _creLamArgL ->
+                                                                                                    (case (_creLamArgL) of
+                                                                                                     { _lhsOcreLamArgL ->
+                                                                                                     (case (_cre) of
+                                                                                                      { _creLamBody ->
+                                                                                                      (case (_creLamBody) of
+                                                                                                       { _lhsOcreLamBody ->
+                                                                                                       (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                        { _crse ->
+                                                                                                        (case (_crse) of
+                                                                                                         { _lhsOcrse ->
+                                                                                                         (case (Nothing) of
+                                                                                                          { _lhsOmbFFIApp ->
+                                                                                                          (case (Nothing) of
+                                                                                                           { _lhsOmbLam ->
+                                                                                                           (case (Nothing) of
+                                                                                                            { _lhsOmbVar ->
+                                                                                                            (case (_lhsItailCtx) of
+                                                                                                             { _fldExprOtailCtx ->
+                                                                                                             (case (_lhsIstackDepth) of
+                                                                                                              { _exprOstackDepth ->
+                                                                                                              (case (_lhsItailCtx) of
+                                                                                                               { _exprOtailCtx ->
+                                                                                                               (case (_lhsIopts) of
+                                                                                                                { _exprOopts ->
+                                                                                                                (case (_lhsInm2ref) of
+                                                                                                                 { _exprOnm2ref ->
+                                                                                                                 (case (_lhsImodNr) of
+                                                                                                                  { _exprOmodNr ->
+                                                                                                                  (case (True) of
+                                                                                                                   { _isTopApp ->
+                                                                                                                   (case (_isTopApp) of
+                                                                                                                    { _exprOisTopApp ->
+                                                                                                                    (case (_lhsIimpNmLkup) of
+                                                                                                                     { _exprOimpNmLkup ->
+                                                                                                                     (case (_lhsIevalCtx) of
+                                                                                                                      { _exprOevalCtx ->
+                                                                                                                      (case (False) of
+                                                                                                                       { _exprOisTopTup ->
+                                                                                                                       (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                                                                        { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                                                                            (case (_exprIstackDepth) of
+                                                                                                                             { _offsetOstackDepth ->
+                                                                                                                             (case (_lhsItailCtx) of
+                                                                                                                              { _offsetOtailCtx ->
+                                                                                                                              (case (_lhsIopts) of
+                                                                                                                               { _offsetOopts ->
+                                                                                                                               (case (_lhsInm2ref) of
+                                                                                                                                { _offsetOnm2ref ->
+                                                                                                                                (case (_lhsImodNr) of
+                                                                                                                                 { _offsetOmodNr ->
+                                                                                                                                 (case (True) of
+                                                                                                                                  { _isTopTup ->
+                                                                                                                                  (case (_isTopTup) of
+                                                                                                                                   { _offsetOisTopTup ->
+                                                                                                                                   (case (_isTopApp) of
+                                                                                                                                    { _offsetOisTopApp ->
+                                                                                                                                    (case (_lhsIimpNmLkup) of
+                                                                                                                                     { _offsetOimpNmLkup ->
+                                                                                                                                     (case (_lhsIevalCtx) of
+                                                                                                                                      { _offsetOevalCtx ->
+                                                                                                                                      (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
+                                                                                                                                       { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
+                                                                                                                                           (case (_offsetIstackDepth) of
+                                                                                                                                            { _fldExprOstackDepth ->
+                                                                                                                                            (case (_lhsIopts) of
+                                                                                                                                             { _fldExprOopts ->
+                                                                                                                                             (case (_lhsInm2ref) of
+                                                                                                                                              { _fldExprOnm2ref ->
+                                                                                                                                              (case (_lhsImodNr) of
+                                                                                                                                               { _fldExprOmodNr ->
+                                                                                                                                               (case (_isTopTup) of
+                                                                                                                                                { _fldExprOisTopTup ->
+                                                                                                                                                (case (_isTopApp) of
+                                                                                                                                                 { _fldExprOisTopApp ->
+                                                                                                                                                 (case (_lhsIimpNmLkup) of
+                                                                                                                                                  { _fldExprOimpNmLkup ->
+                                                                                                                                                  (case (_lhsIevalCtx) of
+                                                                                                                                                   { _fldExprOevalCtx ->
+                                                                                                                                                   (case (fldExpr_2 _fldExprOevalCtx _fldExprOimpNmLkup _fldExprOisTopApp _fldExprOisTopTup _fldExprOmodNr _fldExprOnm2ref _fldExprOopts _fldExprOstackDepth _fldExprOtailCtx) of
+                                                                                                                                                    { ( _fldExprIappFunKind,_fldExprIcrb,_fldExprIcre,_fldExprIcreAppArgL,_fldExprIcreAppFun,_fldExprIcreLamArgL,_fldExprIcreLamBody,_fldExprIcrse,_fldExprImbFFIApp,_fldExprImbLam,_fldExprImbVar,_fldExprIrefOffsetMax,_fldExprIstackDepth,_fldExprIstackDepthMax,_fldExprIvref) ->
+                                                                                                                                                        (case (_exprIrefOffsetMax `max` _offsetIrefOffsetMax `max` _fldExprIrefOffsetMax) of
+                                                                                                                                                         { _lhsOrefOffsetMax ->
+                                                                                                                                                         (case (_lhsIstackDepth + 1) of
+                                                                                                                                                          { _stackDepthHere ->
+                                                                                                                                                          (case (_stackDepthHere) of
+                                                                                                                                                           { _lhsOstackDepth ->
+                                                                                                                                                           (case (_stackDepthHere) of
+                                                                                                                                                            { _lhsOstackDepthMax ->
+                                                                                                                                                            (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                                                             { _vref ->
+                                                                                                                                                             (case (_vref) of
+                                                                                                                                                              { _lhsOvref ->
+                                                                                                                                                              ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                                             in  sem_CExpr_TupIns_2)) of
+                                                                      { ( sem_CExpr_2) ->
+                                                                      ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_TupIns_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_TupUpd :: T_CExpr ->
+                    CTag ->
+                    HsName ->
+                    T_CExpr ->
+                    T_CExpr ->
+                    T_CExpr
+sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_TupUpd_1 :: T_CExpr_1
+                  sem_CExpr_TupUpd_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _fldExprOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _exprOrefOffset ->
+                              (case (expr_) of
+                               { ( _exprIwhatBelow,expr_1) ->
+                                   (case (_whatAbove) of
+                                    { _exprOwhatAbove ->
+                                    (case (_lhsIlev) of
+                                     { _exprOlev ->
+                                     (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                                      { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                                          (case (_exprIrefOffset) of
+                                           { _offsetOrefOffset ->
+                                           (case (offset_) of
+                                            { ( _offsetIwhatBelow,offset_1) ->
+                                                (case (_whatAbove) of
+                                                 { _offsetOwhatAbove ->
+                                                 (case (_lhsIlev) of
+                                                  { _offsetOlev ->
+                                                  (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
+                                                   { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
+                                                       (case (_offsetIrefOffset) of
+                                                        { _fldExprOrefOffset ->
+                                                        (case (_lhsIlev) of
+                                                         { _fldExprOlev ->
+                                                         (case (fldExpr_) of
+                                                          { ( _fldExprIwhatBelow,fldExpr_1) ->
+                                                              (case (fldExpr_1 _fldExprOlev _fldExprOrefOffset _fldExprOwhatAbove) of
+                                                               { ( _fldExprInm2refGath,_fldExprIrefOffset,fldExpr_2) ->
+                                                                   (case (_exprInm2refGath `CR.nm2refUnion` _offsetInm2refGath `CR.nm2refUnion` _fldExprInm2refGath) of
+                                                                    { _lhsOnm2refGath ->
+                                                                    (case (_fldExprIrefOffset) of
+                                                                     { _lhsOrefOffset ->
+                                                                     (case ((let sem_CExpr_TupUpd_2 :: T_CExpr_2
+                                                                                 sem_CExpr_TupUpd_2 =
+                                                                                     (\ _lhsIevalCtx
+                                                                                        _lhsIimpNmLkup
+                                                                                        _lhsIisTopApp
+                                                                                        _lhsIisTopTup
+                                                                                        _lhsImodNr
+                                                                                        _lhsInm2ref
+                                                                                        _lhsIopts
+                                                                                        _lhsIstackDepth
+                                                                                        _lhsItailCtx ->
+                                                                                          (case (AppFunKind_NoApp) of
+                                                                                           { _lhsOappFunKind ->
+                                                                                           (case ([]) of
+                                                                                            { _lhsOcrb ->
+                                                                                            (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                                             { _creBase ->
+                                                                                             (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                                              { _cre ->
+                                                                                              (case (_cre) of
+                                                                                               { _lhsOcre ->
+                                                                                               (case ([]) of
+                                                                                                { _creAppArgL ->
+                                                                                                (case (_creAppArgL) of
+                                                                                                 { _lhsOcreAppArgL ->
+                                                                                                 (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                                                  { _creAppFun ->
+                                                                                                  (case (_creAppFun) of
+                                                                                                   { _lhsOcreAppFun ->
+                                                                                                   (case ([]) of
+                                                                                                    { _creLamArgL ->
+                                                                                                    (case (_creLamArgL) of
+                                                                                                     { _lhsOcreLamArgL ->
+                                                                                                     (case (_cre) of
+                                                                                                      { _creLamBody ->
+                                                                                                      (case (_creLamBody) of
+                                                                                                       { _lhsOcreLamBody ->
+                                                                                                       (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                        { _crse ->
+                                                                                                        (case (_crse) of
+                                                                                                         { _lhsOcrse ->
+                                                                                                         (case (Nothing) of
+                                                                                                          { _lhsOmbFFIApp ->
+                                                                                                          (case (Nothing) of
+                                                                                                           { _lhsOmbLam ->
+                                                                                                           (case (Nothing) of
+                                                                                                            { _lhsOmbVar ->
+                                                                                                            (case (_lhsItailCtx) of
+                                                                                                             { _fldExprOtailCtx ->
+                                                                                                             (case (_lhsIstackDepth) of
+                                                                                                              { _exprOstackDepth ->
+                                                                                                              (case (_lhsItailCtx) of
+                                                                                                               { _exprOtailCtx ->
+                                                                                                               (case (_lhsIopts) of
+                                                                                                                { _exprOopts ->
+                                                                                                                (case (_lhsInm2ref) of
+                                                                                                                 { _exprOnm2ref ->
+                                                                                                                 (case (_lhsImodNr) of
+                                                                                                                  { _exprOmodNr ->
+                                                                                                                  (case (True) of
+                                                                                                                   { _isTopApp ->
+                                                                                                                   (case (_isTopApp) of
+                                                                                                                    { _exprOisTopApp ->
+                                                                                                                    (case (_lhsIimpNmLkup) of
+                                                                                                                     { _exprOimpNmLkup ->
+                                                                                                                     (case (_lhsIevalCtx) of
+                                                                                                                      { _exprOevalCtx ->
+                                                                                                                      (case (False) of
+                                                                                                                       { _exprOisTopTup ->
+                                                                                                                       (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                                                                        { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                                                                            (case (_exprIstackDepth) of
+                                                                                                                             { _offsetOstackDepth ->
+                                                                                                                             (case (_lhsItailCtx) of
+                                                                                                                              { _offsetOtailCtx ->
+                                                                                                                              (case (_lhsIopts) of
+                                                                                                                               { _offsetOopts ->
+                                                                                                                               (case (_lhsInm2ref) of
+                                                                                                                                { _offsetOnm2ref ->
+                                                                                                                                (case (_lhsImodNr) of
+                                                                                                                                 { _offsetOmodNr ->
+                                                                                                                                 (case (True) of
+                                                                                                                                  { _isTopTup ->
+                                                                                                                                  (case (_isTopTup) of
+                                                                                                                                   { _offsetOisTopTup ->
+                                                                                                                                   (case (_isTopApp) of
+                                                                                                                                    { _offsetOisTopApp ->
+                                                                                                                                    (case (_lhsIimpNmLkup) of
+                                                                                                                                     { _offsetOimpNmLkup ->
+                                                                                                                                     (case (_lhsIevalCtx) of
+                                                                                                                                      { _offsetOevalCtx ->
+                                                                                                                                      (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
+                                                                                                                                       { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
+                                                                                                                                           (case (_offsetIstackDepth) of
+                                                                                                                                            { _fldExprOstackDepth ->
+                                                                                                                                            (case (_lhsIopts) of
+                                                                                                                                             { _fldExprOopts ->
+                                                                                                                                             (case (_lhsInm2ref) of
+                                                                                                                                              { _fldExprOnm2ref ->
+                                                                                                                                              (case (_lhsImodNr) of
+                                                                                                                                               { _fldExprOmodNr ->
+                                                                                                                                               (case (_isTopTup) of
+                                                                                                                                                { _fldExprOisTopTup ->
+                                                                                                                                                (case (_isTopApp) of
+                                                                                                                                                 { _fldExprOisTopApp ->
+                                                                                                                                                 (case (_lhsIimpNmLkup) of
+                                                                                                                                                  { _fldExprOimpNmLkup ->
+                                                                                                                                                  (case (_lhsIevalCtx) of
+                                                                                                                                                   { _fldExprOevalCtx ->
+                                                                                                                                                   (case (fldExpr_2 _fldExprOevalCtx _fldExprOimpNmLkup _fldExprOisTopApp _fldExprOisTopTup _fldExprOmodNr _fldExprOnm2ref _fldExprOopts _fldExprOstackDepth _fldExprOtailCtx) of
+                                                                                                                                                    { ( _fldExprIappFunKind,_fldExprIcrb,_fldExprIcre,_fldExprIcreAppArgL,_fldExprIcreAppFun,_fldExprIcreLamArgL,_fldExprIcreLamBody,_fldExprIcrse,_fldExprImbFFIApp,_fldExprImbLam,_fldExprImbVar,_fldExprIrefOffsetMax,_fldExprIstackDepth,_fldExprIstackDepthMax,_fldExprIvref) ->
+                                                                                                                                                        (case (_exprIrefOffsetMax `max` _offsetIrefOffsetMax `max` _fldExprIrefOffsetMax) of
+                                                                                                                                                         { _lhsOrefOffsetMax ->
+                                                                                                                                                         (case (_lhsIstackDepth + 1) of
+                                                                                                                                                          { _stackDepthHere ->
+                                                                                                                                                          (case (_stackDepthHere) of
+                                                                                                                                                           { _lhsOstackDepth ->
+                                                                                                                                                           (case (_stackDepthHere) of
+                                                                                                                                                            { _lhsOstackDepthMax ->
+                                                                                                                                                            (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                                                                             { _vref ->
+                                                                                                                                                             (case (_vref) of
+                                                                                                                                                              { _lhsOvref ->
+                                                                                                                                                              ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                                             in  sem_CExpr_TupUpd_2)) of
+                                                                      { ( sem_CExpr_2) ->
+                                                                      ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_TupUpd_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_FFI :: FFIWay ->
+                 String ->
+                 ForeignEnt ->
+                 Ty ->
+                 T_CExpr
+sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
+    (case (ExprIsFFI) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_FFI_1 :: T_CExpr_1
+                  sem_CExpr_FFI_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_FFI_2 :: T_CExpr_2
+                                         sem_CExpr_FFI_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_FFI) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (foreignEntExtract impEnt_) of
+                                                     { _foreignEntInfo ->
+                                                     (case (forextractMbEnt _foreignEntInfo) of
+                                                      { _creEntMb ->
+                                                      (case (\as -> maybe (CR.dbg $ "Core.ToCoreRun.CExpr.FFI.cre: " ++ show _foreignEntInfo) (\ent -> CR.mkFFI' ent as) _creEntMb) of
+                                                       { _creMk ->
+                                                       (case (_creMk CR.emptyCRArray) of
+                                                        { _creBase ->
+                                                        (case (_creBase) of
+                                                         { _cre ->
+                                                         (case (_cre) of
+                                                          { _lhsOcre ->
+                                                          (case ([]) of
+                                                           { _creAppArgL ->
+                                                           (case (_creAppArgL) of
+                                                            { _lhsOcreAppArgL ->
+                                                            (case (\_ -> cseCtxWrap TailCtx_Plain . _creMk) of
+                                                             { _creAppFun ->
+                                                             (case (_creAppFun) of
+                                                              { _lhsOcreAppFun ->
+                                                              (case ([]) of
+                                                               { _creLamArgL ->
+                                                               (case (_creLamArgL) of
+                                                                { _lhsOcreLamArgL ->
+                                                                (case (_cre) of
+                                                                 { _creLamBody ->
+                                                                 (case (_creLamBody) of
+                                                                  { _lhsOcreLamBody ->
+                                                                  (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                   { _crse ->
+                                                                   (case (_crse) of
+                                                                    { _lhsOcrse ->
+                                                                    (case (maybe Nothing lookupPrimNeedsEval $ forextractMbEnt _foreignEntInfo) of
+                                                                     { _mbPrimNeedEval ->
+                                                                     (case (maybe False primResNeedEval _mbPrimNeedEval) of
+                                                                      { _primResNeedsEval ->
+                                                                      (case (appUnArr ty_) of
+                                                                       { _argTyLresTy ->
+                                                                       (case (snd _argTyLresTy) of
+                                                                        { _resTy ->
+                                                                        (case (fst _argTyLresTy) of
+                                                                         { _argTyL ->
+                                                                         (case (Just ( _resTy
+                                                                                     , _primResNeedsEval
+                                                                                     , callconv_
+                                                                                     , impEnt_
+                                                                                     , _argTyL
+                                                                                     )) of
+                                                                          { _lhsOmbFFIApp ->
+                                                                          (case (Nothing) of
+                                                                           { _lhsOmbLam ->
+                                                                           (case (Nothing) of
+                                                                            { _lhsOmbVar ->
+                                                                            (case (0) of
+                                                                             { _lhsOrefOffsetMax ->
+                                                                             (case (_lhsIstackDepth + 1) of
+                                                                              { _stackDepthHere ->
+                                                                              (case (_stackDepthHere) of
+                                                                               { _lhsOstackDepth ->
+                                                                               (case (_stackDepthHere) of
+                                                                                { _lhsOstackDepthMax ->
+                                                                                (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                 { _vref ->
+                                                                                 (case (_vref) of
+                                                                                  { _lhsOvref ->
+                                                                                  ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_FFI_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_FFI_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Dbg :: String ->
+                 T_CExpr
+sem_CExpr_Dbg info_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Dbg_1 :: T_CExpr_1
+                  sem_CExpr_Dbg_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_Dbg_2 :: T_CExpr_2
+                                         sem_CExpr_Dbg_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                     { _creBase ->
+                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                      { _cre ->
+                                                      (case (_cre) of
+                                                       { _lhsOcre ->
+                                                       (case ([]) of
+                                                        { _creAppArgL ->
+                                                        (case (_creAppArgL) of
+                                                         { _lhsOcreAppArgL ->
+                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                          { _creAppFun ->
+                                                          (case (_creAppFun) of
+                                                           { _lhsOcreAppFun ->
+                                                           (case ([]) of
+                                                            { _creLamArgL ->
+                                                            (case (_creLamArgL) of
+                                                             { _lhsOcreLamArgL ->
+                                                             (case (_cre) of
+                                                              { _creLamBody ->
+                                                              (case (_creLamBody) of
+                                                               { _lhsOcreLamBody ->
+                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                { _crse ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_Dbg_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_Dbg_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Hole :: UID ->
+                  T_CExpr
+sem_CExpr_Hole uid_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_Hole_1 :: T_CExpr_1
+                  sem_CExpr_Hole_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_Hole_2 :: T_CExpr_2
+                                         sem_CExpr_Hole_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                     { _creBase ->
+                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                      { _cre ->
+                                                      (case (_cre) of
+                                                       { _lhsOcre ->
+                                                       (case ([]) of
+                                                        { _creAppArgL ->
+                                                        (case (_creAppArgL) of
+                                                         { _lhsOcreAppArgL ->
+                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                          { _creAppFun ->
+                                                          (case (_creAppFun) of
+                                                           { _lhsOcreAppFun ->
+                                                           (case ([]) of
+                                                            { _creLamArgL ->
+                                                            (case (_creLamArgL) of
+                                                             { _lhsOcreLamArgL ->
+                                                             (case (_cre) of
+                                                              { _creLamBody ->
+                                                              (case (_creLamBody) of
+                                                               { _lhsOcreLamBody ->
+                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                { _crse ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_Hole_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_Hole_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_HoleLet :: UID ->
+                     T_CExpr ->
+                     T_CExpr
+sem_CExpr_HoleLet bindsUid_ body_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_HoleLet_1 :: T_CExpr_1
+                  sem_CExpr_HoleLet_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _bodyOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _bodyOrefOffset ->
+                              (case (_lhsIlev) of
+                               { _bodyOlev ->
+                               (case (body_) of
+                                { ( _bodyIwhatBelow,body_1) ->
+                                    (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
+                                     { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
+                                         (case (_bodyInm2refGath) of
+                                          { _lhsOnm2refGath ->
+                                          (case (_bodyIrefOffset) of
+                                           { _lhsOrefOffset ->
+                                           (case ((let sem_CExpr_HoleLet_2 :: T_CExpr_2
+                                                       sem_CExpr_HoleLet_2 =
+                                                           (\ _lhsIevalCtx
+                                                              _lhsIimpNmLkup
+                                                              _lhsIisTopApp
+                                                              _lhsIisTopTup
+                                                              _lhsImodNr
+                                                              _lhsInm2ref
+                                                              _lhsIopts
+                                                              _lhsIstackDepth
+                                                              _lhsItailCtx ->
+                                                                (case (AppFunKind_NoApp) of
+                                                                 { _lhsOappFunKind ->
+                                                                 (case ([]) of
+                                                                  { _lhsOcrb ->
+                                                                  (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                   { _creBase ->
+                                                                   (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                    { _cre ->
+                                                                    (case (_cre) of
+                                                                     { _lhsOcre ->
+                                                                     (case ([]) of
+                                                                      { _creAppArgL ->
+                                                                      (case (_creAppArgL) of
+                                                                       { _lhsOcreAppArgL ->
+                                                                       (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                        { _creAppFun ->
+                                                                        (case (_creAppFun) of
+                                                                         { _lhsOcreAppFun ->
+                                                                         (case ([]) of
+                                                                          { _creLamArgL ->
+                                                                          (case (_creLamArgL) of
+                                                                           { _lhsOcreLamArgL ->
+                                                                           (case (_cre) of
+                                                                            { _creLamBody ->
+                                                                            (case (_creLamBody) of
+                                                                             { _lhsOcreLamBody ->
+                                                                             (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                              { _crse ->
+                                                                              (case (_crse) of
+                                                                               { _lhsOcrse ->
+                                                                               (case (Nothing) of
+                                                                                { _lhsOmbFFIApp ->
+                                                                                (case (Nothing) of
+                                                                                 { _lhsOmbLam ->
+                                                                                 (case (Nothing) of
+                                                                                  { _lhsOmbVar ->
+                                                                                  (case (_lhsItailCtx) of
+                                                                                   { _bodyOtailCtx ->
+                                                                                   (case (_lhsIstackDepth) of
+                                                                                    { _bodyOstackDepth ->
+                                                                                    (case (_lhsIopts) of
+                                                                                     { _bodyOopts ->
+                                                                                     (case (_lhsInm2ref) of
+                                                                                      { _bodyOnm2ref ->
+                                                                                      (case (_lhsImodNr) of
+                                                                                       { _bodyOmodNr ->
+                                                                                       (case (True) of
+                                                                                        { _isTopTup ->
+                                                                                        (case (_isTopTup) of
+                                                                                         { _bodyOisTopTup ->
+                                                                                         (case (True) of
+                                                                                          { _isTopApp ->
+                                                                                          (case (_isTopApp) of
+                                                                                           { _bodyOisTopApp ->
+                                                                                           (case (_lhsIimpNmLkup) of
+                                                                                            { _bodyOimpNmLkup ->
+                                                                                            (case (_lhsIevalCtx) of
+                                                                                             { _bodyOevalCtx ->
+                                                                                             (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
+                                                                                              { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
+                                                                                                  (case (_bodyIrefOffsetMax) of
+                                                                                                   { _lhsOrefOffsetMax ->
+                                                                                                   (case (_lhsIstackDepth + 1) of
+                                                                                                    { _stackDepthHere ->
+                                                                                                    (case (_stackDepthHere) of
+                                                                                                     { _lhsOstackDepth ->
+                                                                                                     (case (_stackDepthHere) of
+                                                                                                      { _lhsOstackDepthMax ->
+                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                       { _vref ->
+                                                                                                       (case (_vref) of
+                                                                                                        { _lhsOvref ->
+                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                   in  sem_CExpr_HoleLet_2)) of
+                                            { ( sem_CExpr_2) ->
+                                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_HoleLet_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_CoeArg :: T_CExpr
+sem_CExpr_CoeArg =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_CoeArg_1 :: T_CExpr_1
+                  sem_CExpr_CoeArg_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (CR.emptyNm2RefMp) of
+                            { _lhsOnm2refGath ->
+                            (case (_lhsIrefOffset) of
+                             { _lhsOrefOffset ->
+                             (case ((let sem_CExpr_CoeArg_2 :: T_CExpr_2
+                                         sem_CExpr_CoeArg_2 =
+                                             (\ _lhsIevalCtx
+                                                _lhsIimpNmLkup
+                                                _lhsIisTopApp
+                                                _lhsIisTopTup
+                                                _lhsImodNr
+                                                _lhsInm2ref
+                                                _lhsIopts
+                                                _lhsIstackDepth
+                                                _lhsItailCtx ->
+                                                  (case (AppFunKind_NoApp) of
+                                                   { _lhsOappFunKind ->
+                                                   (case ([]) of
+                                                    { _lhsOcrb ->
+                                                    (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                     { _creBase ->
+                                                     (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                      { _cre ->
+                                                      (case (_cre) of
+                                                       { _lhsOcre ->
+                                                       (case ([]) of
+                                                        { _creAppArgL ->
+                                                        (case (_creAppArgL) of
+                                                         { _lhsOcreAppArgL ->
+                                                         (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                          { _creAppFun ->
+                                                          (case (_creAppFun) of
+                                                           { _lhsOcreAppFun ->
+                                                           (case ([]) of
+                                                            { _creLamArgL ->
+                                                            (case (_creLamArgL) of
+                                                             { _lhsOcreLamArgL ->
+                                                             (case (_cre) of
+                                                              { _creLamBody ->
+                                                              (case (_creLamBody) of
+                                                               { _lhsOcreLamBody ->
+                                                               (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                { _crse ->
+                                                                (case (_crse) of
+                                                                 { _lhsOcrse ->
+                                                                 (case (Nothing) of
+                                                                  { _lhsOmbFFIApp ->
+                                                                  (case (Nothing) of
+                                                                   { _lhsOmbLam ->
+                                                                   (case (Nothing) of
+                                                                    { _lhsOmbVar ->
+                                                                    (case (0) of
+                                                                     { _lhsOrefOffsetMax ->
+                                                                     (case (_lhsIstackDepth + 1) of
+                                                                      { _stackDepthHere ->
+                                                                      (case (_stackDepthHere) of
+                                                                       { _lhsOstackDepth ->
+                                                                       (case (_stackDepthHere) of
+                                                                        { _lhsOstackDepthMax ->
+                                                                        (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                         { _vref ->
+                                                                         (case (_vref) of
+                                                                          { _lhsOvref ->
+                                                                          ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                     in  sem_CExpr_CoeArg_2)) of
+                              { ( sem_CExpr_2) ->
+                              ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }))
+              in  sem_CExpr_CoeArg_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_ImplsApp :: T_CExpr ->
+                      ImplsVarId ->
+                      T_CExpr
+sem_CExpr_ImplsApp func_ uid_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_ImplsApp_1 :: T_CExpr_1
+                  sem_CExpr_ImplsApp_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _funcOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _funcOrefOffset ->
+                              (case (_lhsIlev) of
+                               { _funcOlev ->
+                               (case (func_) of
+                                { ( _funcIwhatBelow,func_1) ->
+                                    (case (func_1 _funcOlev _funcOrefOffset _funcOwhatAbove) of
+                                     { ( _funcInm2refGath,_funcIrefOffset,func_2) ->
+                                         (case (_funcInm2refGath) of
+                                          { _lhsOnm2refGath ->
+                                          (case (_funcIrefOffset) of
+                                           { _lhsOrefOffset ->
+                                           (case ((let sem_CExpr_ImplsApp_2 :: T_CExpr_2
+                                                       sem_CExpr_ImplsApp_2 =
+                                                           (\ _lhsIevalCtx
+                                                              _lhsIimpNmLkup
+                                                              _lhsIisTopApp
+                                                              _lhsIisTopTup
+                                                              _lhsImodNr
+                                                              _lhsInm2ref
+                                                              _lhsIopts
+                                                              _lhsIstackDepth
+                                                              _lhsItailCtx ->
+                                                                (case (AppFunKind_NoApp) of
+                                                                 { _lhsOappFunKind ->
+                                                                 (case ([]) of
+                                                                  { _lhsOcrb ->
+                                                                  (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                   { _creBase ->
+                                                                   (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                    { _cre ->
+                                                                    (case (_cre) of
+                                                                     { _lhsOcre ->
+                                                                     (case ([]) of
+                                                                      { _creAppArgL ->
+                                                                      (case (_creAppArgL) of
+                                                                       { _lhsOcreAppArgL ->
+                                                                       (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                        { _creAppFun ->
+                                                                        (case (_creAppFun) of
+                                                                         { _lhsOcreAppFun ->
+                                                                         (case ([]) of
+                                                                          { _creLamArgL ->
+                                                                          (case (_creLamArgL) of
+                                                                           { _lhsOcreLamArgL ->
+                                                                           (case (_cre) of
+                                                                            { _creLamBody ->
+                                                                            (case (_creLamBody) of
+                                                                             { _lhsOcreLamBody ->
+                                                                             (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                              { _crse ->
+                                                                              (case (_crse) of
+                                                                               { _lhsOcrse ->
+                                                                               (case (Nothing) of
+                                                                                { _lhsOmbFFIApp ->
+                                                                                (case (Nothing) of
+                                                                                 { _lhsOmbLam ->
+                                                                                 (case (Nothing) of
+                                                                                  { _lhsOmbVar ->
+                                                                                  (case (_lhsItailCtx) of
+                                                                                   { _funcOtailCtx ->
+                                                                                   (case (_lhsIstackDepth) of
+                                                                                    { _funcOstackDepth ->
+                                                                                    (case (_lhsIopts) of
+                                                                                     { _funcOopts ->
+                                                                                     (case (_lhsInm2ref) of
+                                                                                      { _funcOnm2ref ->
+                                                                                      (case (_lhsImodNr) of
+                                                                                       { _funcOmodNr ->
+                                                                                       (case (True) of
+                                                                                        { _isTopTup ->
+                                                                                        (case (_isTopTup) of
+                                                                                         { _funcOisTopTup ->
+                                                                                         (case (True) of
+                                                                                          { _isTopApp ->
+                                                                                          (case (_isTopApp) of
+                                                                                           { _funcOisTopApp ->
+                                                                                           (case (_lhsIimpNmLkup) of
+                                                                                            { _funcOimpNmLkup ->
+                                                                                            (case (_lhsIevalCtx) of
+                                                                                             { _funcOevalCtx ->
+                                                                                             (case (func_2 _funcOevalCtx _funcOimpNmLkup _funcOisTopApp _funcOisTopTup _funcOmodNr _funcOnm2ref _funcOopts _funcOstackDepth _funcOtailCtx) of
+                                                                                              { ( _funcIappFunKind,_funcIcrb,_funcIcre,_funcIcreAppArgL,_funcIcreAppFun,_funcIcreLamArgL,_funcIcreLamBody,_funcIcrse,_funcImbFFIApp,_funcImbLam,_funcImbVar,_funcIrefOffsetMax,_funcIstackDepth,_funcIstackDepthMax,_funcIvref) ->
+                                                                                                  (case (_funcIrefOffsetMax) of
+                                                                                                   { _lhsOrefOffsetMax ->
+                                                                                                   (case (_lhsIstackDepth + 1) of
+                                                                                                    { _stackDepthHere ->
+                                                                                                    (case (_stackDepthHere) of
+                                                                                                     { _lhsOstackDepth ->
+                                                                                                     (case (_stackDepthHere) of
+                                                                                                      { _lhsOstackDepthMax ->
+                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                       { _vref ->
+                                                                                                       (case (_vref) of
+                                                                                                        { _lhsOvref ->
+                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                   in  sem_CExpr_ImplsApp_2)) of
+                                            { ( sem_CExpr_2) ->
+                                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_ImplsApp_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_ImplsLam :: ImplsVarId ->
+                      T_CExpr ->
+                      T_CExpr
+sem_CExpr_ImplsLam uid_ body_ =
+    (case (ExprIsOther) of
+     { _whatBelow ->
+     (case (_whatBelow) of
+      { _lhsOwhatBelow ->
+      (case ((let sem_CExpr_ImplsLam_1 :: T_CExpr_1
+                  sem_CExpr_ImplsLam_1 =
+                      (\ _lhsIlev
+                         _lhsIrefOffset
+                         _lhsIwhatAbove ->
+                           (case (ExprIsOther) of
+                            { _whatAbove ->
+                            (case (_whatAbove) of
+                             { _bodyOwhatAbove ->
+                             (case (_lhsIrefOffset) of
+                              { _bodyOrefOffset ->
+                              (case (_lhsIlev) of
+                               { _bodyOlev ->
+                               (case (body_) of
+                                { ( _bodyIwhatBelow,body_1) ->
+                                    (case (body_1 _bodyOlev _bodyOrefOffset _bodyOwhatAbove) of
+                                     { ( _bodyInm2refGath,_bodyIrefOffset,body_2) ->
+                                         (case (_bodyInm2refGath) of
+                                          { _lhsOnm2refGath ->
+                                          (case (_bodyIrefOffset) of
+                                           { _lhsOrefOffset ->
+                                           (case ((let sem_CExpr_ImplsLam_2 :: T_CExpr_2
+                                                       sem_CExpr_ImplsLam_2 =
+                                                           (\ _lhsIevalCtx
+                                                              _lhsIimpNmLkup
+                                                              _lhsIisTopApp
+                                                              _lhsIisTopTup
+                                                              _lhsImodNr
+                                                              _lhsInm2ref
+                                                              _lhsIopts
+                                                              _lhsIstackDepth
+                                                              _lhsItailCtx ->
+                                                                (case (AppFunKind_NoApp) of
+                                                                 { _lhsOappFunKind ->
+                                                                 (case ([]) of
+                                                                  { _lhsOcrb ->
+                                                                  (case (CR.dbg "Core.ToCoreRun.CExpr.cre") of
+                                                                   { _creBase ->
+                                                                   (case (cseCtxWrap _lhsItailCtx _creBase) of
+                                                                    { _cre ->
+                                                                    (case (_cre) of
+                                                                     { _lhsOcre ->
+                                                                     (case ([]) of
+                                                                      { _creAppArgL ->
+                                                                      (case (_creAppArgL) of
+                                                                       { _lhsOcreAppArgL ->
+                                                                       (case (\tailCtx -> cseCtxWrap tailCtx . tailrec tailCtx . mkApp _cre) of
+                                                                        { _creAppFun ->
+                                                                        (case (_creAppFun) of
+                                                                         { _lhsOcreAppFun ->
+                                                                         (case ([]) of
+                                                                          { _creLamArgL ->
+                                                                          (case (_creLamArgL) of
+                                                                           { _lhsOcreLamArgL ->
+                                                                           (case (_cre) of
+                                                                            { _creLamBody ->
+                                                                            (case (_creLamBody) of
+                                                                             { _lhsOcreLamBody ->
+                                                                             (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                              { _crse ->
+                                                                              (case (_crse) of
+                                                                               { _lhsOcrse ->
+                                                                               (case (Nothing) of
+                                                                                { _lhsOmbFFIApp ->
+                                                                                (case (Nothing) of
+                                                                                 { _lhsOmbLam ->
+                                                                                 (case (Nothing) of
+                                                                                  { _lhsOmbVar ->
+                                                                                  (case (_lhsItailCtx) of
+                                                                                   { _bodyOtailCtx ->
+                                                                                   (case (_lhsIstackDepth) of
+                                                                                    { _bodyOstackDepth ->
+                                                                                    (case (_lhsIopts) of
+                                                                                     { _bodyOopts ->
+                                                                                     (case (_lhsInm2ref) of
+                                                                                      { _bodyOnm2ref ->
+                                                                                      (case (_lhsImodNr) of
+                                                                                       { _bodyOmodNr ->
+                                                                                       (case (True) of
+                                                                                        { _isTopTup ->
+                                                                                        (case (_isTopTup) of
+                                                                                         { _bodyOisTopTup ->
+                                                                                         (case (True) of
+                                                                                          { _isTopApp ->
+                                                                                          (case (_isTopApp) of
+                                                                                           { _bodyOisTopApp ->
+                                                                                           (case (_lhsIimpNmLkup) of
+                                                                                            { _bodyOimpNmLkup ->
+                                                                                            (case (_lhsIevalCtx) of
+                                                                                             { _bodyOevalCtx ->
+                                                                                             (case (body_2 _bodyOevalCtx _bodyOimpNmLkup _bodyOisTopApp _bodyOisTopTup _bodyOmodNr _bodyOnm2ref _bodyOopts _bodyOstackDepth _bodyOtailCtx) of
+                                                                                              { ( _bodyIappFunKind,_bodyIcrb,_bodyIcre,_bodyIcreAppArgL,_bodyIcreAppFun,_bodyIcreLamArgL,_bodyIcreLamBody,_bodyIcrse,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIrefOffsetMax,_bodyIstackDepth,_bodyIstackDepthMax,_bodyIvref) ->
+                                                                                                  (case (_bodyIrefOffsetMax) of
+                                                                                                   { _lhsOrefOffsetMax ->
+                                                                                                   (case (_lhsIstackDepth + 1) of
+                                                                                                    { _stackDepthHere ->
+                                                                                                    (case (_stackDepthHere) of
+                                                                                                     { _lhsOstackDepth ->
+                                                                                                     (case (_stackDepthHere) of
+                                                                                                      { _lhsOstackDepthMax ->
+                                                                                                      (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                       { _vref ->
+                                                                                                       (case (_vref) of
+                                                                                                        { _lhsOvref ->
+                                                                                                        ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                   in  sem_CExpr_ImplsLam_2)) of
+                                            { ( sem_CExpr_2) ->
+                                            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
+              in  sem_CExpr_ImplsLam_1)) of
+       { ( sem_CExpr_1) ->
+       ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+sem_CExpr_Ann :: T_CExprAnn ->
+                 T_CExpr ->
+                 T_CExpr
+sem_CExpr_Ann ann_ expr_ =
+    (case (expr_) of
+     { ( _exprIwhatBelow,expr_1) ->
+         (case (_exprIwhatBelow) of
+          { _lhsOwhatBelow ->
+          (case ((let sem_CExpr_Ann_1 :: T_CExpr_1
+                      sem_CExpr_Ann_1 =
+                          (\ _lhsIlev
+                             _lhsIrefOffset
+                             _lhsIwhatAbove ->
+                               (case (_lhsIwhatAbove) of
+                                { _exprOwhatAbove ->
+                                (case (_lhsIrefOffset) of
+                                 { _annOrefOffset ->
+                                 (case (ann_ _annOrefOffset) of
+                                  { ( _annInm2refGath,_annIrefOffset,ann_1) ->
+                                      (case (_annIrefOffset) of
+                                       { _exprOrefOffset ->
+                                       (case (_lhsIlev) of
+                                        { _exprOlev ->
+                                        (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                                         { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                                             (case (_annInm2refGath `CR.nm2refUnion` _exprInm2refGath) of
+                                              { _lhsOnm2refGath ->
+                                              (case (_exprIrefOffset) of
+                                               { _lhsOrefOffset ->
+                                               (case ((let sem_CExpr_Ann_2 :: T_CExpr_2
+                                                           sem_CExpr_Ann_2 =
+                                                               (\ _lhsIevalCtx
+                                                                  _lhsIimpNmLkup
+                                                                  _lhsIisTopApp
+                                                                  _lhsIisTopTup
+                                                                  _lhsImodNr
+                                                                  _lhsInm2ref
+                                                                  _lhsIopts
+                                                                  _lhsIstackDepth
+                                                                  _lhsItailCtx ->
+                                                                    (case (_lhsItailCtx) of
+                                                                     { _exprOtailCtx ->
+                                                                     (case (_lhsIstackDepth) of
+                                                                      { _annOstackDepth ->
+                                                                      (case (_lhsIopts) of
+                                                                       { _annOopts ->
+                                                                       (case (_lhsInm2ref) of
+                                                                        { _annOnm2ref ->
+                                                                        (case (_lhsImodNr) of
+                                                                         { _annOmodNr ->
+                                                                         (case (_lhsIlev) of
+                                                                          { _annOlev ->
+                                                                          (case (_lhsIimpNmLkup) of
+                                                                           { _annOimpNmLkup ->
+                                                                           (case (ann_1 _annOimpNmLkup _annOlev _annOmodNr _annOnm2ref _annOopts _annOstackDepth) of
+                                                                            { ( _annIstackDepth) ->
+                                                                                (case (_annIstackDepth) of
+                                                                                 { _exprOstackDepth ->
+                                                                                 (case (_lhsIopts) of
+                                                                                  { _exprOopts ->
+                                                                                  (case (_lhsInm2ref) of
+                                                                                   { _exprOnm2ref ->
+                                                                                   (case (_lhsImodNr) of
+                                                                                    { _exprOmodNr ->
+                                                                                    (case (_lhsIisTopTup) of
+                                                                                     { _exprOisTopTup ->
+                                                                                     (case (_lhsIisTopApp) of
+                                                                                      { _exprOisTopApp ->
+                                                                                      (case (_lhsIimpNmLkup) of
+                                                                                       { _exprOimpNmLkup ->
+                                                                                       (case (_lhsIevalCtx) of
+                                                                                        { _exprOevalCtx ->
+                                                                                        (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                                                                         { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                                                                             (case (_exprIappFunKind) of
+                                                                                              { _lhsOappFunKind ->
+                                                                                              (case (_exprIcrb) of
+                                                                                               { _lhsOcrb ->
+                                                                                               (case (_exprIcre) of
+                                                                                                { _lhsOcre ->
+                                                                                                (case (_exprIcreAppArgL) of
+                                                                                                 { _lhsOcreAppArgL ->
+                                                                                                 (case (_exprIcreAppFun) of
+                                                                                                  { _lhsOcreAppFun ->
+                                                                                                  (case (_exprIcreLamArgL) of
+                                                                                                   { _lhsOcreLamArgL ->
+                                                                                                   (case (_exprIcreLamBody) of
+                                                                                                    { _lhsOcreLamBody ->
+                                                                                                    (case (panic "Core.ToCoreRun.CExpr.crse") of
+                                                                                                     { _crse ->
+                                                                                                     (case (_crse) of
+                                                                                                      { _lhsOcrse ->
+                                                                                                      (case (_exprImbFFIApp) of
+                                                                                                       { _lhsOmbFFIApp ->
+                                                                                                       (case (_exprImbLam) of
+                                                                                                        { _lhsOmbLam ->
+                                                                                                        (case (_exprImbVar) of
+                                                                                                         { _lhsOmbVar ->
+                                                                                                         (case (_exprIrefOffsetMax) of
+                                                                                                          { _lhsOrefOffsetMax ->
+                                                                                                          (case (_exprIstackDepth) of
+                                                                                                           { _lhsOstackDepth ->
+                                                                                                           (case (_exprIstackDepthMax) of
+                                                                                                            { _lhsOstackDepthMax ->
+                                                                                                            (case (panic "Core.ToCoreRun.CExpr.ref") of
+                                                                                                             { _vref ->
+                                                                                                             (case (_vref) of
+                                                                                                              { _lhsOvref ->
+                                                                                                              ( _lhsOappFunKind,_lhsOcrb,_lhsOcre,_lhsOcreAppArgL,_lhsOcreAppFun,_lhsOcreLamArgL,_lhsOcreLamBody,_lhsOcrse,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOrefOffsetMax,_lhsOstackDepth,_lhsOstackDepthMax,_lhsOvref) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                                       in  sem_CExpr_Ann_2)) of
+                                                { ( sem_CExpr_2) ->
+                                                ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
+                  in  sem_CExpr_Ann_1)) of
+           { ( sem_CExpr_1) ->
+           ( _lhsOwhatBelow,sem_CExpr_1) }) }) })
+-- CExprAnn ----------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Ty:
+         child ty             : {Ty}
+      alternative Coe:
+         child coe            : {RelevCoe}
+      alternative Debug:
+         child info           : {String}
+-}
+-- cata
+sem_CExprAnn :: CExprAnn ->
+                T_CExprAnn
+sem_CExprAnn (CExprAnn_Ty _ty) =
+    (sem_CExprAnn_Ty _ty)
+sem_CExprAnn (CExprAnn_Coe _coe) =
+    (sem_CExprAnn_Coe _coe)
+sem_CExprAnn (CExprAnn_Debug _info) =
+    (sem_CExprAnn_Debug _info)
+-- semantic domain
+type T_CExprAnn = Int ->
+                  ( (CR.Nm2RefMp),Int,T_CExprAnn_1)
+type T_CExprAnn_1 = (HsName -> Maybe Int) ->
+                    Int ->
+                    (Maybe Int) ->
+                    (CR.Nm2RefMp) ->
+                    EHCOpts ->
+                    Int ->
+                    ( Int)
+sem_CExprAnn_Ty :: Ty ->
+                   T_CExprAnn
+sem_CExprAnn_Ty ty_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CExprAnn_Ty_1 :: T_CExprAnn_1
+                       sem_CExprAnn_Ty_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CExprAnn_Ty_1)) of
+            { ( sem_CExprAnn_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExprAnn_1) }) }) }))
+sem_CExprAnn_Coe :: RelevCoe ->
+                    T_CExprAnn
+sem_CExprAnn_Coe coe_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CExprAnn_Coe_1 :: T_CExprAnn_1
+                       sem_CExprAnn_Coe_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CExprAnn_Coe_1)) of
+            { ( sem_CExprAnn_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExprAnn_1) }) }) }))
+sem_CExprAnn_Debug :: String ->
+                      T_CExprAnn
+sem_CExprAnn_Debug info_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CExprAnn_Debug_1 :: T_CExprAnn_1
+                       sem_CExprAnn_Debug_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CExprAnn_Debug_1)) of
+            { ( sem_CExprAnn_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CExprAnn_1) }) }) }))
+-- CImport -----------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         impNmL               : [HsName]
+   alternatives:
+      alternative Import:
+         child nm             : {HsName}
+-}
+-- cata
+sem_CImport :: CImport ->
+               T_CImport
+sem_CImport (CImport_Import _nm) =
+    (sem_CImport_Import _nm)
+-- semantic domain
+type T_CImport = ( ([HsName]))
+sem_CImport_Import :: HsName ->
+                      T_CImport
+sem_CImport_Import nm_ =
+    (case ([nm_]) of
+     { _lhsOimpNmL ->
+     ( _lhsOimpNmL) })
+-- CImportL ----------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         impNmL               : [HsName]
+   alternatives:
+      alternative Cons:
+         child hd             : CImport 
+         child tl             : CImportL 
+      alternative Nil:
+-}
+-- cata
+sem_CImportL :: CImportL ->
+                T_CImportL
+sem_CImportL list =
+    (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
+-- semantic domain
+type T_CImportL = ( ([HsName]))
+sem_CImportL_Cons :: T_CImport ->
+                     T_CImportL ->
+                     T_CImportL
+sem_CImportL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIimpNmL) ->
+         (case (hd_) of
+          { ( _hdIimpNmL) ->
+              (case (_hdIimpNmL ++ _tlIimpNmL) of
+               { _lhsOimpNmL ->
+               ( _lhsOimpNmL) }) }) })
+sem_CImportL_Nil :: T_CImportL
+sem_CImportL_Nil =
+    (case ([]) of
+     { _lhsOimpNmL ->
+     ( _lhsOimpNmL) })
+-- CMetaBind ---------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Plain:
+      alternative Function0:
+      alternative Function1:
+      alternative Apply0:
+-}
+-- cata
+sem_CMetaBind :: CMetaBind ->
+                 T_CMetaBind
+sem_CMetaBind (CMetaBind_Plain) =
+    (sem_CMetaBind_Plain)
+sem_CMetaBind (CMetaBind_Function0) =
+    (sem_CMetaBind_Function0)
+sem_CMetaBind (CMetaBind_Function1) =
+    (sem_CMetaBind_Function1)
+sem_CMetaBind (CMetaBind_Apply0) =
+    (sem_CMetaBind_Apply0)
+-- semantic domain
+type T_CMetaBind = Int ->
+                   ( (CR.Nm2RefMp),Int,T_CMetaBind_1)
+type T_CMetaBind_1 = (HsName -> Maybe Int) ->
+                     Int ->
+                     (Maybe Int) ->
+                     (CR.Nm2RefMp) ->
+                     EHCOpts ->
+                     Int ->
+                     ( Int)
+sem_CMetaBind_Plain :: T_CMetaBind
+sem_CMetaBind_Plain =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaBind_Plain_1 :: T_CMetaBind_1
+                       sem_CMetaBind_Plain_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaBind_Plain_1)) of
+            { ( sem_CMetaBind_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaBind_1) }) }) }))
+sem_CMetaBind_Function0 :: T_CMetaBind
+sem_CMetaBind_Function0 =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaBind_Function0_1 :: T_CMetaBind_1
+                       sem_CMetaBind_Function0_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaBind_Function0_1)) of
+            { ( sem_CMetaBind_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaBind_1) }) }) }))
+sem_CMetaBind_Function1 :: T_CMetaBind
+sem_CMetaBind_Function1 =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaBind_Function1_1 :: T_CMetaBind_1
+                       sem_CMetaBind_Function1_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaBind_Function1_1)) of
+            { ( sem_CMetaBind_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaBind_1) }) }) }))
+sem_CMetaBind_Apply0 :: T_CMetaBind
+sem_CMetaBind_Apply0 =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaBind_Apply0_1 :: T_CMetaBind_1
+                       sem_CMetaBind_Apply0_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaBind_Apply0_1)) of
+            { ( sem_CMetaBind_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaBind_1) }) }) }))
+-- CMetaVal ----------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Val:
+      alternative Dict:
+      alternative DictClass:
+         child tracks         : {[Track]}
+      alternative DictInstance:
+         child tracks         : {[Track]}
+      alternative Track:
+         child track          : {Track}
+-}
+-- cata
+sem_CMetaVal :: CMetaVal ->
+                T_CMetaVal
+sem_CMetaVal (CMetaVal_Val) =
+    (sem_CMetaVal_Val)
+sem_CMetaVal (CMetaVal_Dict) =
+    (sem_CMetaVal_Dict)
+sem_CMetaVal (CMetaVal_DictClass _tracks) =
+    (sem_CMetaVal_DictClass _tracks)
+sem_CMetaVal (CMetaVal_DictInstance _tracks) =
+    (sem_CMetaVal_DictInstance _tracks)
+sem_CMetaVal (CMetaVal_Track _track) =
+    (sem_CMetaVal_Track _track)
+-- semantic domain
+type T_CMetaVal = Int ->
+                  ( (CR.Nm2RefMp),Int,T_CMetaVal_1)
+type T_CMetaVal_1 = (HsName -> Maybe Int) ->
+                    Int ->
+                    (Maybe Int) ->
+                    (CR.Nm2RefMp) ->
+                    EHCOpts ->
+                    Int ->
+                    ( Int)
+sem_CMetaVal_Val :: T_CMetaVal
+sem_CMetaVal_Val =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaVal_Val_1 :: T_CMetaVal_1
+                       sem_CMetaVal_Val_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaVal_Val_1)) of
+            { ( sem_CMetaVal_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaVal_1) }) }) }))
+sem_CMetaVal_Dict :: T_CMetaVal
+sem_CMetaVal_Dict =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaVal_Dict_1 :: T_CMetaVal_1
+                       sem_CMetaVal_Dict_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaVal_Dict_1)) of
+            { ( sem_CMetaVal_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaVal_1) }) }) }))
+sem_CMetaVal_DictClass :: ([Track]) ->
+                          T_CMetaVal
+sem_CMetaVal_DictClass tracks_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaVal_DictClass_1 :: T_CMetaVal_1
+                       sem_CMetaVal_DictClass_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaVal_DictClass_1)) of
+            { ( sem_CMetaVal_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaVal_1) }) }) }))
+sem_CMetaVal_DictInstance :: ([Track]) ->
+                             T_CMetaVal
+sem_CMetaVal_DictInstance tracks_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaVal_DictInstance_1 :: T_CMetaVal_1
+                       sem_CMetaVal_DictInstance_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaVal_DictInstance_1)) of
+            { ( sem_CMetaVal_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaVal_1) }) }) }))
+sem_CMetaVal_Track :: Track ->
+                      T_CMetaVal
+sem_CMetaVal_Track track_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CMetaVal_Track_1 :: T_CMetaVal_1
+                       sem_CMetaVal_Track_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CMetaVal_Track_1)) of
+            { ( sem_CMetaVal_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetaVal_1) }) }) }))
+-- CMetas ------------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Tuple:
+         child x1             : CMetaBind 
+         child x2             : CMetaVal 
+-}
+-- cata
+sem_CMetas :: CMetas ->
+              T_CMetas
+sem_CMetas ( x1,x2) =
+    (sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
+-- semantic domain
+type T_CMetas = Int ->
+                ( (CR.Nm2RefMp),Int,T_CMetas_1)
+type T_CMetas_1 = (HsName -> Maybe Int) ->
+                  Int ->
+                  (Maybe Int) ->
+                  (CR.Nm2RefMp) ->
+                  EHCOpts ->
+                  Int ->
+                  ( Int)
+sem_CMetas_Tuple :: T_CMetaBind ->
+                    T_CMetaVal ->
+                    T_CMetas
+sem_CMetas_Tuple x1_ x2_ =
+    (\ _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _x1OrefOffset ->
+          (case (x1_ _x1OrefOffset) of
+           { ( _x1Inm2refGath,_x1IrefOffset,x1_1) ->
+               (case (_x1IrefOffset) of
+                { _x2OrefOffset ->
+                (case (x2_ _x2OrefOffset) of
+                 { ( _x2Inm2refGath,_x2IrefOffset,x2_1) ->
+                     (case (_x1Inm2refGath `CR.nm2refUnion` _x2Inm2refGath) of
+                      { _lhsOnm2refGath ->
+                      (case (_x2IrefOffset) of
+                       { _lhsOrefOffset ->
+                       (case ((let sem_CMetas_Tuple_1 :: T_CMetas_1
+                                   sem_CMetas_Tuple_1 =
+                                       (\ _lhsIimpNmLkup
+                                          _lhsIlev
+                                          _lhsImodNr
+                                          _lhsInm2ref
+                                          _lhsIopts
+                                          _lhsIstackDepth ->
+                                            (case (_lhsIstackDepth) of
+                                             { _x1OstackDepth ->
+                                             (case (_lhsIopts) of
+                                              { _x1Oopts ->
+                                              (case (_lhsInm2ref) of
+                                               { _x1Onm2ref ->
+                                               (case (_lhsImodNr) of
+                                                { _x1OmodNr ->
+                                                (case (_lhsIlev) of
+                                                 { _x1Olev ->
+                                                 (case (_lhsIimpNmLkup) of
+                                                  { _x1OimpNmLkup ->
+                                                  (case (x1_1 _x1OimpNmLkup _x1Olev _x1OmodNr _x1Onm2ref _x1Oopts _x1OstackDepth) of
+                                                   { ( _x1IstackDepth) ->
+                                                       (case (_x1IstackDepth) of
+                                                        { _x2OstackDepth ->
+                                                        (case (_lhsIopts) of
+                                                         { _x2Oopts ->
+                                                         (case (_lhsInm2ref) of
+                                                          { _x2Onm2ref ->
+                                                          (case (_lhsImodNr) of
+                                                           { _x2OmodNr ->
+                                                           (case (_lhsIlev) of
+                                                            { _x2Olev ->
+                                                            (case (_lhsIimpNmLkup) of
+                                                             { _x2OimpNmLkup ->
+                                                             (case (x2_1 _x2OimpNmLkup _x2Olev _x2OmodNr _x2Onm2ref _x2Oopts _x2OstackDepth) of
+                                                              { ( _x2IstackDepth) ->
+                                                                  (case (_x2IstackDepth) of
+                                                                   { _lhsOstackDepth ->
+                                                                   ( _lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                               in  sem_CMetas_Tuple_1)) of
+                        { ( sem_CMetas_1) ->
+                        ( _lhsOnm2refGath,_lhsOrefOffset,sem_CMetas_1) }) }) }) }) }) }) }))
+-- CModule -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         hasMain              : Bool
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      synthesized attributes:
+         crm                  : CR.Mod
+         nm2refGath           : CR.Nm2RefMp
+   alternatives:
+      alternative Mod:
+         child moduleNm       : {HsName}
+         child exports        : CExportL 
+         child imports        : CImportL 
+         child declMetas      : CDeclMetaL 
+         child expr           : CExpr 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+            local tailCtx     : _
+            local impNmLkup   : _
+            local nm2refNew   : _
+            local crmBinds    : _
+            local creMod      : _
+-}
+-- cata
+sem_CModule :: CModule ->
+               T_CModule
+sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) =
+    (sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
+-- semantic domain
+type T_CModule = Bool ->
+                 Int ->
+                 (Maybe Int) ->
+                 (CR.Nm2RefMp) ->
+                 EHCOpts ->
+                 ( (CR.Mod),(CR.Nm2RefMp))
+sem_CModule_Mod :: HsName ->
+                   T_CExportL ->
+                   T_CImportL ->
+                   T_CDeclMetaL ->
+                   T_CExpr ->
+                   T_CModule
+sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
+    (\ _lhsIhasMain
+       _lhsIlev
+       _lhsImodNr
+       _lhsInm2ref
+       _lhsIopts ->
+         (case (ExprIsOther) of
+          { _whatAbove ->
+          (case (_whatAbove) of
+           { _exprOwhatAbove ->
+           (case (TailCtx_Plain) of
+            { _tailCtx ->
+            (case (_tailCtx) of
+             { _exprOtailCtx ->
+             (case (_lhsIlev) of
+              { _exprOlev ->
+              (case (imports_) of
+               { ( _importsIimpNmL) ->
+                   (case (\n -> elemIndex n _importsIimpNmL) of
+                    { _impNmLkup ->
+                    (case (_impNmLkup) of
+                     { _exprOimpNmLkup ->
+                     (case (0) of
+                      { _exprOrefOffset ->
+                      (case (expr_) of
+                       { ( _exprIwhatBelow,expr_1) ->
+                           (case (expr_1 _exprOlev _exprOrefOffset _exprOwhatAbove) of
+                            { ( _exprInm2refGath,_exprIrefOffset,expr_2) ->
+                                (case (_exprInm2refGath) of
+                                 { _nm2refNew ->
+                                 (case (_nm2refNew `CR.nm2refUnion` _lhsInm2ref) of
+                                  { _exprOnm2ref ->
+                                  (case (0) of
+                                   { _exprOstackDepth ->
+                                   (case (_lhsIopts) of
+                                    { _exprOopts ->
+                                    (case (_lhsImodNr) of
+                                     { _exprOmodNr ->
+                                     (case (EvalCtx_Eval) of
+                                      { _exprOevalCtx ->
+                                      (case (True) of
+                                       { _exprOisTopTup ->
+                                       (case (True) of
+                                        { _exprOisTopApp ->
+                                        (case (expr_2 _exprOevalCtx _exprOimpNmLkup _exprOisTopApp _exprOisTopTup _exprOmodNr _exprOnm2ref _exprOopts _exprOstackDepth _exprOtailCtx) of
+                                         { ( _exprIappFunKind,_exprIcrb,_exprIcre,_exprIcreAppArgL,_exprIcreAppFun,_exprIcreLamArgL,_exprIcreLamBody,_exprIcrse,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIrefOffsetMax,_exprIstackDepth,_exprIstackDepthMax,_exprIvref) ->
+                                             (case (CR.crarrayFromList $ map snd _exprIcrb) of
+                                              { _crmBinds ->
+                                              (case (_exprIcre) of
+                                               { _creMod ->
+                                               (case (declMetas_) of
+                                                { ( _declMetasIcrmt) ->
+                                                    (case (CR.Mod_Mod (CR.nm2RefMpInverse _nm2refNew)
+                                                             moduleNm_ _lhsImodNr (_exprIstackDepthMax + 2                               )
+                                                             [CR.Import_Import i | i <- _importsIimpNmL]
+                                                             [CR.Export_Export e (CR.rrefEntry r) | (e,r) <- Rel.toList _nm2refNew]
+                                                             _declMetasIcrmt
+                                                             _crmBinds
+                                                             (if _lhsIhasMain then (Just $ CR.mkEval _creMod) else Nothing)) of
+                                                     { _lhsOcrm ->
+                                                     (case (Rel.mapRng (CR.rrefToExp moduleNm_) _exprInm2refGath) of
+                                                      { _lhsOnm2refGath ->
+                                                      ( _lhsOcrm,_lhsOnm2refGath) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CPat --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         crp                  : CR.Pat
+         fldNmL               : [HsName]
+         refOffset            : Int
+   alternatives:
+      alternative Var:
+         child pnm            : {HsName}
+      alternative Con:
+         child tag            : {CTag}
+         child rest           : CPatRest 
+         child binds          : CPatFldL 
+      alternative Int:
+         child int            : {Int}
+      alternative Char:
+         child char           : {Char}
+      alternative BoolExpr:
+         child cexpr          : {CExpr}
+-}
+-- cata
+sem_CPat :: CPat ->
+            T_CPat
+sem_CPat (CPat_Var _pnm) =
+    (sem_CPat_Var _pnm)
+sem_CPat (CPat_Con _tag _rest _binds) =
+    (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
+sem_CPat (CPat_Int _int) =
+    (sem_CPat_Int _int)
+sem_CPat (CPat_Char _char) =
+    (sem_CPat_Char _char)
+sem_CPat (CPat_BoolExpr _cexpr) =
+    (sem_CPat_BoolExpr _cexpr)
+-- semantic domain
+type T_CPat = Int ->
+              Int ->
+              ( (CR.Nm2RefMp),T_CPat_1)
+type T_CPat_1 = (HsName -> Maybe Int) ->
+                (Maybe Int) ->
+                (CR.Nm2RefMp) ->
+                EHCOpts ->
+                Int ->
+                ( (CR.Pat),([HsName]),Int,Int)
+sem_CPat_Var :: HsName ->
+                T_CPat
+sem_CPat_Var pnm_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case ((let sem_CPat_Var_1 :: T_CPat_1
+                      sem_CPat_Var_1 =
+                          (\ _lhsIimpNmLkup
+                             _lhsImodNr
+                             _lhsInm2ref
+                             _lhsIopts
+                             _lhsIstackDepth ->
+                               (case (CR.Pat_Con 0) of
+                                { _lhsOcrp ->
+                                (case ([]) of
+                                 { _lhsOfldNmL ->
+                                 (case (_lhsIrefOffset) of
+                                  { _lhsOrefOffset ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
+                  in  sem_CPat_Var_1)) of
+           { ( sem_CPat_1) ->
+           ( _lhsOnm2refGath,sem_CPat_1) }) }))
+sem_CPat_Con :: CTag ->
+                T_CPatRest ->
+                T_CPatFldL ->
+                T_CPat
+sem_CPat_Con tag_ rest_ binds_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _restOrefOffset ->
+          (case (rest_ _restOrefOffset) of
+           { ( _restInm2refGath,_restIrefOffset,rest_1) ->
+               (case (_restIrefOffset) of
+                { _bindsOrefOffset ->
+                (case (_lhsIlev) of
+                 { _bindsOlev ->
+                 (case (binds_ _bindsOlev _bindsOrefOffset) of
+                  { ( _bindsInm2refGath,binds_1) ->
+                      (case (_restInm2refGath `CR.nm2refUnion` _bindsInm2refGath) of
+                       { _lhsOnm2refGath ->
+                       (case ((let sem_CPat_Con_1 :: T_CPat_1
+                                   sem_CPat_Con_1 =
+                                       (\ _lhsIimpNmLkup
+                                          _lhsImodNr
+                                          _lhsInm2ref
+                                          _lhsIopts
+                                          _lhsIstackDepth ->
+                                            (case (CR.Pat_Con (ctagTag tag_)) of
+                                             { _lhsOcrp ->
+                                             (case (_lhsIstackDepth) of
+                                              { _restOstackDepth ->
+                                              (case (_lhsIopts) of
+                                               { _restOopts ->
+                                               (case (_lhsInm2ref) of
+                                                { _restOnm2ref ->
+                                                (case (_lhsImodNr) of
+                                                 { _restOmodNr ->
+                                                 (case (_lhsIlev) of
+                                                  { _restOlev ->
+                                                  (case (_lhsIimpNmLkup) of
+                                                   { _restOimpNmLkup ->
+                                                   (case (rest_1 _restOimpNmLkup _restOlev _restOmodNr _restOnm2ref _restOopts _restOstackDepth) of
+                                                    { ( _restIstackDepth) ->
+                                                        (case (_restIstackDepth) of
+                                                         { _bindsOstackDepth ->
+                                                         (case (_lhsIopts) of
+                                                          { _bindsOopts ->
+                                                          (case (_lhsInm2ref) of
+                                                           { _bindsOnm2ref ->
+                                                           (case (_lhsImodNr) of
+                                                            { _bindsOmodNr ->
+                                                            (case (_lhsIimpNmLkup) of
+                                                             { _bindsOimpNmLkup ->
+                                                             (case (binds_1 _bindsOimpNmLkup _bindsOmodNr _bindsOnm2ref _bindsOopts _bindsOstackDepth) of
+                                                              { ( _bindsIfldNmL,_bindsIrefOffset,_bindsIstackDepth) ->
+                                                                  (case (_bindsIfldNmL) of
+                                                                   { _lhsOfldNmL ->
+                                                                   (case (_bindsIrefOffset) of
+                                                                    { _lhsOrefOffset ->
+                                                                    (case (_bindsIstackDepth) of
+                                                                     { _lhsOstackDepth ->
+                                                                     ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                               in  sem_CPat_Con_1)) of
+                        { ( sem_CPat_1) ->
+                        ( _lhsOnm2refGath,sem_CPat_1) }) }) }) }) }) }) }))
+sem_CPat_Int :: Int ->
+                T_CPat
+sem_CPat_Int int_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case ((let sem_CPat_Int_1 :: T_CPat_1
+                      sem_CPat_Int_1 =
+                          (\ _lhsIimpNmLkup
+                             _lhsImodNr
+                             _lhsInm2ref
+                             _lhsIopts
+                             _lhsIstackDepth ->
+                               (case (CR.Pat_Con 0) of
+                                { _lhsOcrp ->
+                                (case ([]) of
+                                 { _lhsOfldNmL ->
+                                 (case (_lhsIrefOffset) of
+                                  { _lhsOrefOffset ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
+                  in  sem_CPat_Int_1)) of
+           { ( sem_CPat_1) ->
+           ( _lhsOnm2refGath,sem_CPat_1) }) }))
+sem_CPat_Char :: Char ->
+                 T_CPat
+sem_CPat_Char char_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case ((let sem_CPat_Char_1 :: T_CPat_1
+                      sem_CPat_Char_1 =
+                          (\ _lhsIimpNmLkup
+                             _lhsImodNr
+                             _lhsInm2ref
+                             _lhsIopts
+                             _lhsIstackDepth ->
+                               (case (CR.Pat_Con 0) of
+                                { _lhsOcrp ->
+                                (case ([]) of
+                                 { _lhsOfldNmL ->
+                                 (case (_lhsIrefOffset) of
+                                  { _lhsOrefOffset ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
+                  in  sem_CPat_Char_1)) of
+           { ( sem_CPat_1) ->
+           ( _lhsOnm2refGath,sem_CPat_1) }) }))
+sem_CPat_BoolExpr :: CExpr ->
+                     T_CPat
+sem_CPat_BoolExpr cexpr_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case ((let sem_CPat_BoolExpr_1 :: T_CPat_1
+                      sem_CPat_BoolExpr_1 =
+                          (\ _lhsIimpNmLkup
+                             _lhsImodNr
+                             _lhsInm2ref
+                             _lhsIopts
+                             _lhsIstackDepth ->
+                               (case (CR.Pat_Con 0) of
+                                { _lhsOcrp ->
+                                (case ([]) of
+                                 { _lhsOfldNmL ->
+                                 (case (_lhsIrefOffset) of
+                                  { _lhsOrefOffset ->
+                                  (case (_lhsIstackDepth) of
+                                   { _lhsOstackDepth ->
+                                   ( _lhsOcrp,_lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }))
+                  in  sem_CPat_BoolExpr_1)) of
+           { ( sem_CPat_1) ->
+           ( _lhsOnm2refGath,sem_CPat_1) }) }))
+-- CPatFld -----------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         lev                  : Int
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+      synthesized attribute:
+         fldNmL               : [HsName]
+   alternatives:
+      alternative Fld:
+         child lbl            : {HsName}
+         child offset         : CExpr 
+         child bind           : CBind 
+         child fldAnns        : CBindAnnL 
+         visit 0:
+            local whatAbove   : {WhatExpr}
+         visit 1:
+            local fldNm       : _
+            local tailCtx     : _
+-}
+-- cata
+sem_CPatFld :: CPatFld ->
+               T_CPatFld
+sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
+    (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
+-- semantic domain
+type T_CPatFld = Int ->
+                 Int ->
+                 ( (CR.Nm2RefMp),Int,T_CPatFld_1)
+type T_CPatFld_1 = (HsName -> Maybe Int) ->
+                   (Maybe Int) ->
+                   (CR.Nm2RefMp) ->
+                   EHCOpts ->
+                   Int ->
+                   ( ([HsName]),Int)
+sem_CPatFld_Fld :: HsName ->
+                   T_CExpr ->
+                   T_CBind ->
+                   T_CBindAnnL ->
+                   T_CPatFld
+sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _offsetOrefOffset ->
+          (case (offset_) of
+           { ( _offsetIwhatBelow,offset_1) ->
+               (case (ExprIsOther) of
+                { _whatAbove ->
+                (case (_whatAbove) of
+                 { _offsetOwhatAbove ->
+                 (case (_lhsIlev) of
+                  { _offsetOlev ->
+                  (case (offset_1 _offsetOlev _offsetOrefOffset _offsetOwhatAbove) of
+                   { ( _offsetInm2refGath,_offsetIrefOffset,offset_2) ->
+                       (case (_offsetIrefOffset) of
+                        { _bindOrefOffset ->
+                        (case (_lhsIlev) of
+                         { _bindOlev ->
+                         (case (False) of
+                          { _bindOisGlobal ->
+                          (case (bind_ _bindOisGlobal _bindOlev _bindOrefOffset) of
+                           { ( _bindInm,_bindInm2refGath,_bindIrefOffset,bind_1) ->
+                               (case (_bindIrefOffset) of
+                                { _fldAnnsOrefOffset ->
+                                (case (fldAnns_ _fldAnnsOrefOffset) of
+                                 { ( _fldAnnsInm2refGath,_fldAnnsIrefOffset,fldAnns_1) ->
+                                     (case (_offsetInm2refGath `CR.nm2refUnion` _bindInm2refGath `CR.nm2refUnion` _fldAnnsInm2refGath) of
+                                      { _lhsOnm2refGath ->
+                                      (case (_fldAnnsIrefOffset) of
+                                       { _lhsOrefOffset ->
+                                       (case ((let sem_CPatFld_Fld_1 :: T_CPatFld_1
+                                                   sem_CPatFld_Fld_1 =
+                                                       (\ _lhsIimpNmLkup
+                                                          _lhsImodNr
+                                                          _lhsInm2ref
+                                                          _lhsIopts
+                                                          _lhsIstackDepth ->
+                                                            (case (_bindInm) of
+                                                             { _fldNm ->
+                                                             (case ([_fldNm]) of
+                                                              { _lhsOfldNmL ->
+                                                              (case (_lhsIstackDepth) of
+                                                               { _offsetOstackDepth ->
+                                                               (case (TailCtx_Plain) of
+                                                                { _tailCtx ->
+                                                                (case (_tailCtx) of
+                                                                 { _offsetOtailCtx ->
+                                                                 (case (_lhsIopts) of
+                                                                  { _offsetOopts ->
+                                                                  (case (_lhsInm2ref) of
+                                                                   { _offsetOnm2ref ->
+                                                                   (case (_lhsImodNr) of
+                                                                    { _offsetOmodNr ->
+                                                                    (case (_lhsIimpNmLkup) of
+                                                                     { _offsetOimpNmLkup ->
+                                                                     (case (EvalCtx_Eval) of
+                                                                      { _offsetOevalCtx ->
+                                                                      (case (True) of
+                                                                       { _offsetOisTopTup ->
+                                                                       (case (True) of
+                                                                        { _offsetOisTopApp ->
+                                                                        (case (offset_2 _offsetOevalCtx _offsetOimpNmLkup _offsetOisTopApp _offsetOisTopTup _offsetOmodNr _offsetOnm2ref _offsetOopts _offsetOstackDepth _offsetOtailCtx) of
+                                                                         { ( _offsetIappFunKind,_offsetIcrb,_offsetIcre,_offsetIcreAppArgL,_offsetIcreAppFun,_offsetIcreLamArgL,_offsetIcreLamBody,_offsetIcrse,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIrefOffsetMax,_offsetIstackDepth,_offsetIstackDepthMax,_offsetIvref) ->
+                                                                             (case (_offsetIstackDepth) of
+                                                                              { _bindOstackDepth ->
+                                                                              (case (EvalCtx_None) of
+                                                                               { _bindOevalCtx ->
+                                                                               (case (_lhsIopts) of
+                                                                                { _bindOopts ->
+                                                                                (case (_lhsInm2ref) of
+                                                                                 { _bindOnm2ref ->
+                                                                                 (case (_lhsImodNr) of
+                                                                                  { _bindOmodNr ->
+                                                                                  (case (_lhsIimpNmLkup) of
+                                                                                   { _bindOimpNmLkup ->
+                                                                                   (case (acoreBindcategPlain) of
+                                                                                    { _bindOletBindingsCateg ->
+                                                                                    (case (bind_1 _bindOevalCtx _bindOimpNmLkup _bindOletBindingsCateg _bindOmodNr _bindOnm2ref _bindOopts _bindOstackDepth) of
+                                                                                     { ( _bindIcrb,_bindIrefOffsetMax,_bindIstackDepth,_bindIstackDepthMax) ->
+                                                                                         (case (_bindIstackDepth) of
+                                                                                          { _fldAnnsOstackDepth ->
+                                                                                          (case (_lhsIopts) of
+                                                                                           { _fldAnnsOopts ->
+                                                                                           (case (_lhsInm2ref) of
+                                                                                            { _fldAnnsOnm2ref ->
+                                                                                            (case (_lhsImodNr) of
+                                                                                             { _fldAnnsOmodNr ->
+                                                                                             (case (_lhsIlev) of
+                                                                                              { _fldAnnsOlev ->
+                                                                                              (case (_lhsIimpNmLkup) of
+                                                                                               { _fldAnnsOimpNmLkup ->
+                                                                                               (case (fldAnns_1 _fldAnnsOimpNmLkup _fldAnnsOlev _fldAnnsOmodNr _fldAnnsOnm2ref _fldAnnsOopts _fldAnnsOstackDepth) of
+                                                                                                { ( _fldAnnsIstackDepth) ->
+                                                                                                    (case (_fldAnnsIstackDepth) of
+                                                                                                     { _lhsOstackDepth ->
+                                                                                                     ( _lhsOfldNmL,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                               in  sem_CPatFld_Fld_1)) of
+                                        { ( sem_CPatFld_1) ->
+                                        ( _lhsOnm2refGath,_lhsOrefOffset,sem_CPatFld_1) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+-- CPatFldL ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         lev                  : Int
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+      synthesized attributes:
+         fldNmL               : [HsName]
+         refOffset            : Int
+   alternatives:
+      alternative Cons:
+         child hd             : CPatFld 
+         child tl             : CPatFldL 
+      alternative Nil:
+-}
+-- cata
+sem_CPatFldL :: CPatFldL ->
+                T_CPatFldL
+sem_CPatFldL list =
+    (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
+-- semantic domain
+type T_CPatFldL = Int ->
+                  Int ->
+                  ( (CR.Nm2RefMp),T_CPatFldL_1)
+type T_CPatFldL_1 = (HsName -> Maybe Int) ->
+                    (Maybe Int) ->
+                    (CR.Nm2RefMp) ->
+                    EHCOpts ->
+                    Int ->
+                    ( ([HsName]),Int,Int)
+sem_CPatFldL_Cons :: T_CPatFld ->
+                     T_CPatFldL ->
+                     T_CPatFldL
+sem_CPatFldL_Cons hd_ tl_ =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (_lhsIrefOffset) of
+          { _hdOrefOffset ->
+          (case (_lhsIlev) of
+           { _hdOlev ->
+           (case (hd_ _hdOlev _hdOrefOffset) of
+            { ( _hdInm2refGath,_hdIrefOffset,hd_1) ->
+                (case (_hdIrefOffset) of
+                 { _tlOrefOffset ->
+                 (case (_lhsIlev) of
+                  { _tlOlev ->
+                  (case (tl_ _tlOlev _tlOrefOffset) of
+                   { ( _tlInm2refGath,tl_1) ->
+                       (case (_hdInm2refGath `CR.nm2refUnion` _tlInm2refGath) of
+                        { _lhsOnm2refGath ->
+                        (case ((let sem_CPatFldL_Cons_1 :: T_CPatFldL_1
+                                    sem_CPatFldL_Cons_1 =
+                                        (\ _lhsIimpNmLkup
+                                           _lhsImodNr
+                                           _lhsInm2ref
+                                           _lhsIopts
+                                           _lhsIstackDepth ->
+                                             (case (_lhsIstackDepth) of
+                                              { _hdOstackDepth ->
+                                              (case (_lhsIopts) of
+                                               { _hdOopts ->
+                                               (case (_lhsInm2ref) of
+                                                { _hdOnm2ref ->
+                                                (case (_lhsImodNr) of
+                                                 { _hdOmodNr ->
+                                                 (case (_lhsIimpNmLkup) of
+                                                  { _hdOimpNmLkup ->
+                                                  (case (hd_1 _hdOimpNmLkup _hdOmodNr _hdOnm2ref _hdOopts _hdOstackDepth) of
+                                                   { ( _hdIfldNmL,_hdIstackDepth) ->
+                                                       (case (_hdIstackDepth) of
+                                                        { _tlOstackDepth ->
+                                                        (case (_lhsIopts) of
+                                                         { _tlOopts ->
+                                                         (case (_lhsInm2ref) of
+                                                          { _tlOnm2ref ->
+                                                          (case (_lhsImodNr) of
+                                                           { _tlOmodNr ->
+                                                           (case (_lhsIimpNmLkup) of
+                                                            { _tlOimpNmLkup ->
+                                                            (case (tl_1 _tlOimpNmLkup _tlOmodNr _tlOnm2ref _tlOopts _tlOstackDepth) of
+                                                             { ( _tlIfldNmL,_tlIrefOffset,_tlIstackDepth) ->
+                                                                 (case (_hdIfldNmL ++ _tlIfldNmL) of
+                                                                  { _lhsOfldNmL ->
+                                                                  (case (_tlIrefOffset) of
+                                                                   { _lhsOrefOffset ->
+                                                                   (case (_tlIstackDepth) of
+                                                                    { _lhsOstackDepth ->
+                                                                    ( _lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
+                                in  sem_CPatFldL_Cons_1)) of
+                         { ( sem_CPatFldL_1) ->
+                         ( _lhsOnm2refGath,sem_CPatFldL_1) }) }) }) }) }) }) }) }))
+sem_CPatFldL_Nil :: T_CPatFldL
+sem_CPatFldL_Nil =
+    (\ _lhsIlev
+       _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case ((let sem_CPatFldL_Nil_1 :: T_CPatFldL_1
+                      sem_CPatFldL_Nil_1 =
+                          (\ _lhsIimpNmLkup
+                             _lhsImodNr
+                             _lhsInm2ref
+                             _lhsIopts
+                             _lhsIstackDepth ->
+                               (case ([]) of
+                                { _lhsOfldNmL ->
+                                (case (_lhsIrefOffset) of
+                                 { _lhsOrefOffset ->
+                                 (case (_lhsIstackDepth) of
+                                  { _lhsOstackDepth ->
+                                  ( _lhsOfldNmL,_lhsOrefOffset,_lhsOstackDepth) }) }) }))
+                  in  sem_CPatFldL_Nil_1)) of
+           { ( sem_CPatFldL_1) ->
+           ( _lhsOnm2refGath,sem_CPatFldL_1) }) }))
+-- CPatRest ----------------------------------------------------
+{-
+   visit 0:
+      chained attribute:
+         refOffset            : Int
+      synthesized attribute:
+         nm2refGath           : CR.Nm2RefMp
+   visit 1:
+      inherited attributes:
+         impNmLkup            : HsName -> Maybe Int
+         lev                  : Int
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      chained attribute:
+         stackDepth           : Int
+   alternatives:
+      alternative Var:
+         child nm             : {HsName}
+      alternative Empty:
+-}
+-- cata
+sem_CPatRest :: CPatRest ->
+                T_CPatRest
+sem_CPatRest (CPatRest_Var _nm) =
+    (sem_CPatRest_Var _nm)
+sem_CPatRest (CPatRest_Empty) =
+    (sem_CPatRest_Empty)
+-- semantic domain
+type T_CPatRest = Int ->
+                  ( (CR.Nm2RefMp),Int,T_CPatRest_1)
+type T_CPatRest_1 = (HsName -> Maybe Int) ->
+                    Int ->
+                    (Maybe Int) ->
+                    (CR.Nm2RefMp) ->
+                    EHCOpts ->
+                    Int ->
+                    ( Int)
+sem_CPatRest_Var :: HsName ->
+                    T_CPatRest
+sem_CPatRest_Var nm_ =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CPatRest_Var_1 :: T_CPatRest_1
+                       sem_CPatRest_Var_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CPatRest_Var_1)) of
+            { ( sem_CPatRest_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CPatRest_1) }) }) }))
+sem_CPatRest_Empty :: T_CPatRest
+sem_CPatRest_Empty =
+    (\ _lhsIrefOffset ->
+         (case (CR.emptyNm2RefMp) of
+          { _lhsOnm2refGath ->
+          (case (_lhsIrefOffset) of
+           { _lhsOrefOffset ->
+           (case ((let sem_CPatRest_Empty_1 :: T_CPatRest_1
+                       sem_CPatRest_Empty_1 =
+                           (\ _lhsIimpNmLkup
+                              _lhsIlev
+                              _lhsImodNr
+                              _lhsInm2ref
+                              _lhsIopts
+                              _lhsIstackDepth ->
+                                (case (_lhsIstackDepth) of
+                                 { _lhsOstackDepth ->
+                                 ( _lhsOstackDepth) }))
+                   in  sem_CPatRest_Empty_1)) of
+            { ( sem_CPatRest_1) ->
+            ( _lhsOnm2refGath,_lhsOrefOffset,sem_CPatRest_1) }) }) }))
+-- CodeAGItf ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         hasMain              : Bool
+         modNr                : Maybe Int
+         nm2ref               : CR.Nm2RefMp
+         opts                 : EHCOpts
+      synthesized attributes:
+         crm                  : CR.Mod
+         nm2refGath           : CR.Nm2RefMp
+   alternatives:
+      alternative AGItf:
+         child module         : CModule 
+-}
+-- cata
+sem_CodeAGItf :: CodeAGItf ->
+                 T_CodeAGItf
+sem_CodeAGItf (CodeAGItf_AGItf _module) =
+    (sem_CodeAGItf_AGItf (sem_CModule _module))
+-- semantic domain
+type T_CodeAGItf = Bool ->
+                   (Maybe Int) ->
+                   (CR.Nm2RefMp) ->
+                   EHCOpts ->
+                   ( (CR.Mod),(CR.Nm2RefMp))
+data Inh_CodeAGItf = Inh_CodeAGItf {hasMain_Inh_CodeAGItf :: !(Bool),modNr_Inh_CodeAGItf :: !((Maybe Int)),nm2ref_Inh_CodeAGItf :: !((CR.Nm2RefMp)),opts_Inh_CodeAGItf :: !(EHCOpts)}
 data Syn_CodeAGItf = Syn_CodeAGItf {crm_Syn_CodeAGItf :: !((CR.Mod)),nm2refGath_Syn_CodeAGItf :: !((CR.Nm2RefMp))}
 wrap_CodeAGItf :: T_CodeAGItf ->
                   Inh_CodeAGItf ->
diff --git a/src/UHC/Light/Compiler/Core/ToGrin.hs b/src/UHC/Light/Compiler/Core/ToGrin.hs
--- a/src/UHC/Light/Compiler/Core/ToGrin.hs
+++ b/src/UHC/Light/Compiler/Core/ToGrin.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/ToGrin.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/ToGrin.ag)
 module UHC.Light.Compiler.Core.ToGrin(Inh_CodeAGItf (..), Syn_CodeAGItf (..), wrap_CodeAGItf, sem_CodeAGItf) where
 
 import Data.Char
@@ -47,6 +47,10 @@
 
 
 
+
+
+
+deriving instance Typeable Syn_CodeAGItf
 
 -- CAlt --------------------------------------------------------
 {-
diff --git a/src/UHC/Light/Compiler/Core/Trf/ANormal.hs b/src/UHC/Light/Compiler/Core/Trf/ANormal.hs
--- a/src/UHC/Light/Compiler/Core/Trf/ANormal.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/ANormal.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANorm)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANorm)
 module UHC.Light.Compiler.Core.Trf.ANormal(cmodTrfANormal) where
 
 import UHC.Light.Compiler.Base.Common
@@ -13,7 +13,6 @@
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Light.Compiler.AbstractCore
 import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Base.Debug
 
 
 
@@ -25,8 +24,6 @@
 
 
 
-
-
 cmodTrfANormal :: HsName -> UID -> CModule -> CModule
 cmodTrfANormal modNm uniq cmod
   =  let  t = wrap_CodeAGItf  (sem_CodeAGItf (CodeAGItf_AGItf cmod))
@@ -183,25 +180,25 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevAlt.ag"(line 2, column 17)
               _lev =
                   _lhsIlev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 103, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 100, column 17)
               __tup1 =
                   (_exprIlevBindSq,Seq.empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 103, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 100, column 17)
               (_hereBindSq,_) =
                   __tup1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 103, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 100, column 17)
               (_,_lhsOlevBindSq) =
                   __tup1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 134, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
               _exprOappTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 160, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
               _exprOlamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 186, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
               _exprOletTrfIsOk =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 223, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 220, column 17)
               _lhsOcTrf =
                   CAlt_Alt _patIcTrf (mkLetTrf _hereBindSq _exprIcTrf)
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -327,7 +324,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _hdIfvS `Set.union` _tlIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _hdIlevBindSq Seq.:++: _tlIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -399,7 +396,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -515,7 +512,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 12, column 17)
               _lhsOnm =
                   nm_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   _bindAspectsIbindL
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -527,7 +524,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bindAspectsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _bindAspectsIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -620,7 +617,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -717,7 +714,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _hdIfvS `Set.union` _tlIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _hdIlevBindSq Seq.:++: _tlIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -786,7 +783,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -912,7 +909,7 @@
               _tlIlevBindSq :: LevBindSq
               _tlIlevOf :: Int
               _tlInmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   _hdIbindL ++ _tlIbindL
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -927,7 +924,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _hdIlevBindSq Seq.:++: _tlIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1018,7 +1015,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBindL
               _lhsOgUniq :: UID
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1033,7 +1030,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1236,16 +1233,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 97, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 94, column 17)
               _lhsObindL =
                   [(_exprIlevOf,acoreBind1Asp1 _lhsInm _cTrf)]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 119, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 116, column 33)
               _exprOappTrfIsOk =
                   AppNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 147, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 144, column 33)
               _exprOlamTrfIsOk =
                   LamNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 173, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 170, column 33)
               _exprOletTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1254,7 +1251,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _bindMetaIlevBindSq Seq.:++: _exprIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1352,7 +1349,7 @@
               _cmetasIlevBindSq :: LevBindSq
               _cmetasIlevOf :: Int
               _cmetasIself :: CMetas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1367,7 +1364,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _cmetasIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1431,7 +1428,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBound
               _lhsOgUniq :: UID
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1446,7 +1443,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1517,7 +1514,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1532,7 +1529,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _exprIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1617,7 +1614,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBound
               _lhsOgUniq :: UID
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1632,7 +1629,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1709,16 +1706,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 84, column 17)
               _whatAbove =
                   ExprIsLam 0 Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 100, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 97, column 17)
               _lhsObindL =
                   [(cLevModule,acoreBind1Asp1 _lhsInm _cTrf)]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 119, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 116, column 33)
               _exprOappTrfIsOk =
                   AppNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 147, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 144, column 33)
               _exprOlamTrfIsOk =
                   LamNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 173, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 170, column 33)
               _exprOletTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1733,7 +1730,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _exprIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1897,16 +1894,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
               _hdOisTopTup =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 137, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 134, column 17)
               _hdOappTrfIsOk =
                   AppNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 163, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 160, column 17)
               _hdOlamTrfIsOk =
                   LamNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 189, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 186, column 17)
               _hdOletTrfIsOk =
                   False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   _hdIbindL ++ _tlIbindL
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -1921,7 +1918,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _hdIlevBindSq Seq.:++: _tlIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2019,7 +2016,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBoundL
               _lhsOgUniq :: UID
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 26)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 70, column 26)
               _lhsObindL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 50, column 42)
@@ -2034,7 +2031,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2786,16 +2783,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- self rule
@@ -2846,19 +2843,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2912,19 +2909,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2981,19 +2978,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -3047,19 +3044,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -3116,44 +3113,44 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 55, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 52, column 17)
               __tup2 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 55, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 52, column 17)
               (_lhsOgUniq,_) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 55, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 52, column 17)
               (_,_lUniq) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 229, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 226, column 33)
               _trfIsOk =
                   _lhsIappTrfIsOk == AppYesLet && _lhsIisTopApp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               __tup3 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm _cTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               (_lhsOcTrf,_) =
                   __tup3
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               (_,_levBindSq) =
                   __tup3
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _levBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -3283,16 +3280,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 10, column 17)
               _isGlobal =
                   _lhsIlev == cLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 59, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 56, column 17)
               __tup5 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 59, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 56, column 17)
               (_bindsOgUniq,_) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 59, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 56, column 17)
               (_,_lUniq) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 78, column 17)
               __tup6 =
                   let ((hl,_):_) = _bindsIbindL
                       b1  = _bindsIlevBindSq
@@ -3303,38 +3300,38 @@
                               CBindCateg_Rec -> b12 Seq.:++: b3
                               _              -> b1  Seq.:++: b2 Seq.:++: b3
                   in  (b,Seq.empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 78, column 17)
               (_hereBindSq,_) =
                   __tup6
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 78, column 17)
               (_,_remBindSq) =
                   __tup6
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 91, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 88, column 17)
               _lhsOlevBindSq =
                   _remBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 129, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 126, column 17)
               _bodyOappTrfIsOk =
                   AppNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 231, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 228, column 17)
               _trfIsOk =
                   _lhsIletTrfIsOk
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 244, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 241, column 17)
               __tup7 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm $ mkLetTrf _hereBindSq _bodyIcTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 244, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 241, column 17)
               (_lhsOcTrf,_) =
                   __tup7
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 244, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 241, column 17)
               (_,_levBindSq) =
                   __tup7
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3506,44 +3503,44 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
               _isGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 56, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 53, column 17)
               __tup8 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 56, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 53, column 17)
               (_funcOgUniq,_) =
                   __tup8
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 56, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 53, column 17)
               (_,_lUniq) =
                   __tup8
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 76, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 73, column 17)
               _lhsOlevBindSq =
                   _argIlevBindSq Seq.:++: _funcIlevBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 125, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 122, column 17)
               _funcOappTrfIsOk =
                   AppNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 123, column 17)
               _argOappTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 181, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 178, column 17)
               _letTrfIsOk =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 229, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 226, column 33)
               _trfIsOk =
                   _lhsIappTrfIsOk == AppYesLet && _lhsIisTopApp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               __tup9 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm _cTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               (_lhsOcTrf,_) =
                   __tup9
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               (_,_levBindSq) =
                   __tup9
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3732,51 +3729,51 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
               _isGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 57, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 54, column 17)
               __tup10 =
                   mkNewLevUID2 _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 57, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 54, column 17)
               (_bodyOgUniq,_,_) =
                   __tup10
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 57, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 54, column 17)
               (_,_lUniq,_) =
                   __tup10
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 57, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 54, column 17)
               (_,_,_lUniq2) =
                   __tup10
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 92, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 89, column 33)
               __tup11 =
                   (_bodyIlevBindSq,Seq.empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 92, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 89, column 33)
               (_hereBindSq,_) =
                   __tup11
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 92, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 89, column 33)
               (_,_remBindSq) =
                   __tup11
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 94, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 91, column 17)
               _lhsOlevBindSq =
                   _remBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 129, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 126, column 17)
               _bodyOappTrfIsOk =
                   AppNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 155, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 152, column 17)
               _bodyOlamTrfIsOk =
                   LamNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 196, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
               _trNm2 =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 230, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 227, column 17)
               _trfIsOk =
                   _lhsIlamTrfIsOk == LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 238, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
               __tup12 =
                   let mkTLB = mkTrf _trfIsOk _lhsIlev _levOf _trNm
                             . acoreLam1 _argNm
@@ -3784,10 +3781,10 @@
                   in  if cexprIsLam _bodyIcTrf && not (List.null (Seq.toList _hereBindSq))
                       then mkTLB (CExpr_Let CBindCateg_Plain [acoreBind1Cat CBindCateg_Plain _trNm2 _bodyIcTrf] (acoreVar _trNm2))
                       else mkTLB _bodyIcTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 238, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
               (_lhsOcTrf,_) =
                   __tup12
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 238, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
               (_,_levBindSq) =
                   __tup12
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3942,41 +3939,41 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               __tup13 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_exprOgUniq,_) =
                   __tup13
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_,_lUniq) =
                   __tup13
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 77, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 74, column 17)
               _lhsOlevBindSq =
                   _exprIlevBindSq Seq.:++: _altsIlevBindSq Seq.:++: _dfltIlevBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 229, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 226, column 33)
               _trfIsOk =
                   _lhsIappTrfIsOk == AppYesLet && _lhsIisTopApp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               __tup14 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm _cTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               (_lhsOcTrf,_) =
                   __tup14
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 237, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 234, column 17)
               (_,_levBindSq) =
                   __tup14
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4142,7 +4139,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _errorExprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _errorExprIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -4279,41 +4276,41 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               __tup15 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_exprOgUniq,_) =
                   __tup15
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_,_lUniq) =
                   __tup15
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 78, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 75, column 17)
               _lhsOlevBindSq =
                   _exprIlevBindSq Seq.:++: _offsetIlevBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 125, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 227, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 224, column 17)
               _trfIsOk =
                   _lhsIappTrfIsOk == AppYesLet && _lhsIisTopTup
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               __tup16 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm _cTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               (_lhsOcTrf,_) =
                   __tup16
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               (_,_levBindSq) =
                   __tup16
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4501,41 +4498,41 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               __tup17 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_exprOgUniq,_) =
                   __tup17
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_,_lUniq) =
                   __tup17
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 80, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 77, column 17)
               _lhsOlevBindSq =
                   _exprIlevBindSq Seq.:++: _offsetIlevBindSq Seq.:++: _fldExprIlevBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 125, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 151, column 17)
               _fldExprOlamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 177, column 17)
               _fldExprOletTrfIsOk =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 227, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 224, column 17)
               _trfIsOk =
                   _lhsIappTrfIsOk == AppYesLet && _lhsIisTopTup
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               __tup18 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm _cTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               (_lhsOcTrf,_) =
                   __tup18
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               (_,_levBindSq) =
                   __tup18
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4755,41 +4752,41 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               __tup19 =
                   mkNewUID _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_exprOgUniq,_) =
                   __tup19
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 61, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 58, column 17)
               (_,_lUniq) =
                   __tup19
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 80, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 77, column 17)
               _lhsOlevBindSq =
                   _exprIlevBindSq Seq.:++: _offsetIlevBindSq Seq.:++: _fldExprIlevBindSq Seq.:++: _levBindSq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 125, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 151, column 17)
               _fldExprOlamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 177, column 17)
               _fldExprOletTrfIsOk =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 193, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 190, column 17)
               _trNm =
                   hsnQualUniqify _lhsImodNm $
                   uidHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 227, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 224, column 17)
               _trfIsOk =
                   _lhsIappTrfIsOk == AppYesLet && _lhsIisTopTup
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               __tup20 =
                   mkTrf _trfIsOk _lhsIlev _levOf _trNm _cTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               (_lhsOcTrf,_) =
                   __tup20
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 235, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 232, column 17)
               (_,_levBindSq) =
                   __tup20
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4948,19 +4945,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5014,19 +5011,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5080,19 +5077,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5165,19 +5162,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bodyIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _bodyIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5268,19 +5265,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5353,19 +5350,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _funcIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _funcIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5476,19 +5473,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 128, column 17)
               _appTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 157, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 154, column 17)
               _lamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 183, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 180, column 17)
               _letTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bodyIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _bodyIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5598,7 +5595,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _annIfvS `Set.union` _exprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _annIlevBindSq Seq.:++: _exprIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5733,7 +5730,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5765,7 +5762,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5797,7 +5794,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5960,7 +5957,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -5998,7 +5995,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6036,7 +6033,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6074,7 +6071,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6173,7 +6170,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6211,7 +6208,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6250,7 +6247,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6289,7 +6286,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6328,7 +6325,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6426,7 +6423,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _x1IfvS `Set.union` _x2IfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _x1IlevBindSq Seq.:++: _x2IlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6571,19 +6568,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 102, column 17)
               _exprOevalCtx =
                   EvalCtx_Eval
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 114, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 111, column 17)
               _exprOappTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 142, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 139, column 17)
               _exprOlamTrfIsOk =
                   LamYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 168, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 165, column 17)
               _exprOletTrfIsOk =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _exprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _exprIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6710,7 +6707,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6775,7 +6772,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _restIfvS `Set.union` _bindsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _restIlevBindSq Seq.:++: _bindsIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6846,7 +6843,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6886,7 +6883,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -6926,7 +6923,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -7082,19 +7079,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 15, column 17)
               _bindOisGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 122, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 119, column 17)
               _offsetOappTrfIsOk =
                   AppYesLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 150, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 147, column 17)
               _offsetOlamTrfIsOk =
                   LamNoLet
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 176, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 173, column 17)
               _offsetOletTrfIsOk =
                   True
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _offsetIfvS `Set.union` _bindIfvS `Set.union` _fldAnnsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _offsetIlevBindSq Seq.:++: _bindIlevBindSq Seq.:++: _fldAnnsIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -7249,7 +7246,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _hdIfvS `Set.union` _tlIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   _hdIlevBindSq Seq.:++: _tlIlevBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -7322,7 +7319,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -7400,7 +7397,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -7432,7 +7429,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 72, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ANormal.ag"(line 69, column 32)
               _lhsOlevBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
diff --git a/src/UHC/Light/Compiler/Core/Trf/AnaRelevance.hs b/src/UHC/Light/Compiler/Core/Trf/AnaRelevance.hs
--- a/src/UHC/Light/Compiler/Core/Trf/AnaRelevance.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/AnaRelevance.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRe)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRe)
 module UHC.Light.Compiler.Core.Trf.AnaRelevance(cmodTrfAnaRelevance) where
 
 import UHC.Light.Compiler.Ty
@@ -18,6 +18,8 @@
 import qualified Data.Set as Set
 import Control.Applicative
 import UHC.Util.Utils
+import UHC.Util.Pretty
+import UHC.Light.Compiler.AnaDomain.Pretty
 import UHC.Light.Compiler.Foreign.Extract
 import UHC.Light.Compiler.AbstractCore
 import UHC.Light.Compiler.AnaDomain
@@ -26,9 +28,6 @@
 import UHC.Light.Compiler.Gam.DataGam
 import UHC.Light.Compiler.LamInfo
 import UHC.Light.Compiler.AnaDomain.Trf.Instantiate
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
-import UHC.Light.Compiler.AnaDomain.Pretty
 import UHC.Light.Compiler.CodeGen.BuiltinPrims
 import UHC.Light.Compiler.Foreign
 
@@ -51,8 +50,6 @@
 
 
 
-
-
 cmodTrfAnaRelevance
   :: EHCOpts
      -> DataGam
@@ -276,29 +273,29 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevAlt.ag"(line 2, column 17)
               _lev =
                   _lhsIlev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 168, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 165, column 17)
               _mbCTagEnv =
                   do { ct <- _patImbCTag
                      ; (argTyL,_) <- relevTyArgsFromCTag True ct Nothing (length _patIfldNmL) _lhsIdataGam _lUniq
                      ; return (gamFromAssocL $ zip _patIfldNmL argTyL, argTyL)
                      }
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 172, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 169, column 17)
               _patFldGivenTyL =
                   maybe (map freshLazy $ mkNewLevUIDL (length _patIfldNmL) _lUniq3)
                         snd _mbCTagEnv
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 172, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 169, column 17)
               _patFldUsedTyL =
                   map fresh $ mkNewLevUIDL (length _patIfldNmL) _lUniq2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 172, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 169, column 17)
               _patEnv =
                   gamFromAssocL $ zip _patIfldNmL _patFldUsedTyL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 178, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 175, column 17)
               _patOpatFldTyL =
                   zip _patFldGivenTyL _patFldUsedTyL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 179, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 176, column 17)
               _exprOenv =
                   gamAddGam _patEnv _lhsIenv
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
               -- -- generated by the unique rule mechanism.
@@ -319,7 +316,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _fvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _patIqualS `Set.union` _exprIqualS
               -- self rule
@@ -589,61 +586,61 @@
               _tlIqualS :: RelevQualS
               _tlIrvarMp :: RVarMp
               _tlIty :: RelevTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 228, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 225, column 17)
               _hdOknTy =
                   _altKnDwTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 277, column 33)
               __tup2 =
                   amsLE _lhsIrvarMp _altKnDwTy _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 277, column 33)
               (_amsoDw,_) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 277, column 33)
               (_,_amsDw) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 277, column 17)
               _rvarMpDw =
                   amsLocalVarMp _amsDw |+> _lhsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 280, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 277, column 17)
               _rvarMpUp =
                   _rvarMpDw
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 289, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 286, column 17)
               _altNr =
                   _tlIaltNr + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 298, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 295, column 17)
               _altKnUpTy =
                   fresh _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 300, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 297, column 17)
               _altKnDwTy =
                   fresh _lUniq2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 340, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 17)
               _hereAltCoe =
                   _hdIcoe <.> (_hdFinalRVarMp `varUpd` amsoCoe _amsoDw)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 369, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
               _lhsOty =
                   _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 387, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 384, column 17)
               _hdOrvarMp =
                   _rvarMpUp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 408, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 405, column 17)
               _hdFinalRVarMp =
                   _altSolveVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 406, column 17)
               _hdOfinalRVarMp =
                   _hdFinalRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 433, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 430, column 17)
               _lhsOaltQualSL =
                   Set.unions [_hdIqualS, amsGathQual _amsDw] : _tlIaltQualSL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 463, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 460, column 17)
               __tup3 =
                   hdAndTl' (panic "altSolveLVarMp") _lhsIaltSolveLVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 463, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 460, column 17)
               (_altSolveVarMp,_) =
                   __tup3
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 463, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 460, column 17)
               (_,_tlOaltSolveLVarMp) =
                   __tup3
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 624, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 621, column 17)
               _lhsOcTrf =
                   case _hdIcTrf of
                     CAlt_Alt p e -> CAlt_Alt p (annCoe _hereAltCoe e) : _tlIcTrf
@@ -662,7 +659,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _hdIfvS `Set.union` _tlIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _hdIqualS `Set.union` _tlIqualS
               -- self rule
@@ -792,19 +789,19 @@
               _lhsOaltNr :: Int
               _lhsOgUniq :: UID
               _lhsOrvarMp :: RVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 288, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 285, column 17)
               _altNr =
                   0
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 369, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
               _lhsOty =
                   _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 434, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 431, column 17)
               _lhsOaltQualSL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -968,28 +965,28 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 12, column 17)
               _lhsOnm =
                   nm_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 609, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 606, column 17)
               _cTrf =
                   CBind_Bind nm_ (_bindAspectsItyAspectL ++ _bindAspectsIvalAspectL ++ _bindAspectsIcTrf)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _bindAspectsIaltMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   _bindAspectsIbindLamMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   _bindAspectsIextraBindRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bindAspectsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   _bindAspectsIgathEnv
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   _bindAspectsIgathRecEnv
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _bindAspectsIqualS
               -- self rule
@@ -1132,7 +1129,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -1275,7 +1272,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   _hdInmL ++ _tlInmL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _hdIqualS `Set.union` _tlIqualS
               -- self rule
@@ -1400,7 +1397,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -1577,13 +1574,13 @@
               _tlIoTrf :: CBindL
               _tlIqualS :: RelevQualS
               _tlIrvarMp :: RVarMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _hdIaltMbScrutTy <|> _tlIaltMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   _hdIextraBindRVarMp |+> _tlIextraBindRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1592,16 +1589,16 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   _hdIgathEnv `gamUnion` _tlIgathEnv
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   _hdIgathRecEnv `gamUnion` _tlIgathRecEnv
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   _hdInmL ++ _tlInmL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _hdIqualS `Set.union` _tlIqualS
               -- self rule
@@ -1747,13 +1744,13 @@
               _lhsOoTrf :: CBindL
               _lhsOgUniq :: UID
               _lhsOrvarMp :: RVarMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   Nothing
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1762,16 +1759,16 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -2072,54 +2069,54 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 117, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 114, column 17)
               _doBindStrict =
                   WhatToRelevInfer_InstToBot `elem` _lhsIwhatTo
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 115, column 17)
               _lhsObindLamMp =
                   let l = [ (acbaspkeyDefaultRelevTy, LamInfoBindAsp_RelevTy _bindTy) ]
                   in  Map.singleton _lhsInm (emptyLamInfo {laminfoBindAspMp = Map.fromList l})
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 156, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 153, column 17)
               _exprOenv =
                   gamAddGam _exprEnv _lhsIenv
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 198, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 17)
               _gathEnv =
                   gamSingleton _lhsInm _quantTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 198, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 17)
               _gathRecEnv =
                   gamSingleton _lhsInm $ tup123to1 $ relevtyQuant [RelevTyQuantHow_Rec] emptyRVarMp Set.empty _ty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 207, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 204, column 17)
               _exprOknTy =
                   _exprKnTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 309, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 17)
               _lhsOaltMbScrutTy =
                   do v <- _exprImbVar
                      renvLookup v _lhsIenv Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 336, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 333, column 17)
               _hereBindCoe =
                   _exprIcoe <.> maybe RelevCoe_Id (_finalRVarMp `varUpd`) _mbBindCoe
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 334, column 25)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 378, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 375, column 17)
               _lhsOrvarMp =
                   _quantVarMp |+> _rvarMpExpr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 405, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 402, column 17)
               _finalRVarMp =
                   _lhsIfinalRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 17)
               _extraBindRVarMp =
                   if _doBindStrict then _strictVarMp else emptyRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 428, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 425, column 17)
               _lhsOqualS =
                   Set.unions [amsGathQual _amsBind, _exprIqualS]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 489, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 486, column 17)
               _exprOboundRelevTyVarS =
                   _exprBoundS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 33)
               __tup5 =
                   let noConstrain _ _ _ = (emptyAnaMatchState, Nothing)
                       strictConstrain m t knTy = (ams, Just $ amsoCoe amso)
@@ -2138,34 +2135,34 @@
                                 (_,u1,u2) = mkNewLevUID2 _lUniq
                                 eTy@(RelevTy_Ana eAna) = fresh u1
                                 bTy@(RelevTy_Ana bAna) = fresh u2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 33)
               (_ty,_,_,_,_) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 33)
               (_,_exprKnTy,_,_,_) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 33)
               (_,_,_exprEnv,_,_) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 33)
               (_,_,_,_exprBoundS,_) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 33)
               (_,_,_,_,_bindConstrain) =
                   __tup5
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 511, column 33)
               __tup6 =
                   _bindConstrain _exprIrvarMp _exprKnTy _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 511, column 33)
               (_amsBind,_) =
                   __tup6
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 511, column 33)
               (_,_mbBindCoe) =
                   __tup6
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
               _rvarMpExpr =
                   amsLocalVarMp _amsBind |+> _exprIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
               __tup7 =
                   case _ty of
                     t@(RelevTy_Fun _ _ _ _ _)
@@ -2175,19 +2172,19 @@
                                 | otherwise                                 = []
                     t -> (m `varUpd` t, m, q)
                       where (q,m) = assSolve _lhsIboundRelevTyVarS (Set.map (_rvarMpExpr `varUpd`) _exprIqualS)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
               (_quantTy,_,_) =
                   __tup7
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
               (_,_quantVarMp,_) =
                   __tup7
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 517, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 514, column 33)
               (_,_,_quantRemQualS) =
                   __tup7
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
               _bindTy =
                   _lhsIforQuantRVarMp `varUpd` _quantTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 527, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 524, column 33)
               __tup8 =
                   case _bindTy of
                     t@(RelevTy_Fun _ _ qs a r@(RelevTy_Ana (AnaEval_Var rv)))
@@ -2202,13 +2199,13 @@
                                              smpAssume2 (Set.fromList qs' `Set.union` rem1) (RelevTy_Fun RQuant_None [] [] (smpAssume2 `varUpd` a') r')
                     t -> (m `varUpd` t, m)
                       where (q,m) = assSolve Set.empty (Set.map (_lhsIforQuantRVarMp `varUpd`) _quantRemQualS)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 527, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 524, column 33)
               (_strictTy,_) =
                   __tup8
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 527, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 524, column 33)
               (_,_strictVarMp) =
                   __tup8
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
               _debugTy1 =
                   case _rvarMpExpr `varUpd` _ty of
                     RelevTy_Fun _ _ _ a r
@@ -2216,17 +2213,17 @@
                       where q = _rvarMpExpr `varUpd` Set.toList _exprIqualS
                             v = Set.toList $ Set.unions [varFreeSet q, varFreeSet a, varFreeSet r]
                     t -> t
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
               _debugTy2 =
                   case _lhsIfinalRVarMp `varUpd` _ty of
                     RelevTy_Fun _ _ _ a r
                       -> RelevTy_Fun RQuant_None [] q a r
                       where q = _lhsIfinalRVarMp `varUpd` Set.toList _exprIqualS
                     t -> t
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
               _strictTy2 =
                   _lhsIfinalRVarMp `varUpd` _strictTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 495, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
               _tyAspectL =
                   [ CBound_RelevTy acbaspkeyDefault _bindTy
                   ]
@@ -2234,12 +2231,12 @@
                       then [CBound_RelevTy acbaspkeyStrict _strictTy2]
                       else []
                      )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 604, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 601, column 17)
               _lhsOcTrf =
                   CBound_Bind _bindMetaIcTrf $
                   dbgBind _lhsIopts _lhsIfinalRVarMp _gathEnv $
                   annCoe _hereBindCoe _exprIcTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 633, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 630, column 17)
               _valAspectL =
                   [
                   ]
@@ -2252,7 +2249,7 @@
               -- -- generated by the unique rule mechanism.
               (_,_lUniq) =
                   __tup9
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   _extraBindRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2261,19 +2258,19 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   _gathEnv
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   _gathRecEnv
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   _tyAspectL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   _valAspectL
               -- self rule
@@ -2411,19 +2408,19 @@
               _cmetasIoTrf :: CMetas
               _cmetasIqualS :: RelevQualS
               _cmetasIrvarMp :: RVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 334, column 25)
               _lhsOcoe =
                   RelevCoe_Id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _altMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2432,22 +2429,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _cmetasIqualS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   []
               -- self rule
@@ -2542,19 +2539,19 @@
               _lhsOoTrf :: CBound
               _lhsOgUniq :: UID
               _lhsOrvarMp :: RVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 334, column 25)
               _lhsOcoe =
                   RelevCoe_Id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _altMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2563,22 +2560,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   []
               -- self rule
@@ -2682,16 +2679,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _altMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2700,22 +2697,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _exprIqualS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   []
               -- self rule
@@ -2828,19 +2825,19 @@
               _lhsOoTrf :: CBound
               _lhsOgUniq :: UID
               _lhsOrvarMp :: RVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 334, column 25)
               _lhsOcoe =
                   RelevCoe_Id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _altMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2849,22 +2846,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   []
               -- self rule
@@ -2989,19 +2986,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 21, column 17)
               _expEntNm =
                   forextractEnt _foreignEntInfo
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 337, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 334, column 25)
               _lhsOcoe =
                   RelevCoe_Id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _altMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3010,22 +3007,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _exprIqualS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   []
               -- self rule
@@ -3267,13 +3264,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
               _hdOisTopTup =
                   True
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   _hdIaltMbScrutTy <|> _tlIaltMbScrutTy
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   _hdIextraBindRVarMp |+> _tlIextraBindRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3282,22 +3279,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   _hdIgathEnv `gamUnion` _tlIgathEnv
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   _hdIgathRecEnv `gamUnion` _tlIgathRecEnv
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   _hdInmL ++ _tlInmL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _hdIqualS `Set.union` _tlIqualS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   _hdItyAspectL ++ _tlItyAspectL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   _hdIvalAspectL ++ _tlIvalAspectL
               -- self rule
@@ -3452,13 +3449,13 @@
               _lhsOoTrf :: CBoundL
               _lhsOgUniq :: UID
               _lhsOrvarMp :: RVarMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 306, column 33)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 303, column 33)
               _lhsOaltMbScrutTy =
                   Nothing
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 412, column 36)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 409, column 36)
               _lhsOextraBindRVarMp =
                   emptyRVarMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3467,22 +3464,22 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 194, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 191, column 32)
               _lhsOgathEnv =
                   emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 195, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 192, column 32)
               _lhsOgathRecEnv =
                   emptyGam
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 575, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 572, column 32)
               _lhsOtyAspectL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 576, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 573, column 32)
               _lhsOvalAspectL =
                   []
               -- self rule
@@ -4295,19 +4292,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 159, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 156, column 17)
               _mbEnvTy =
                   fmap (relevtyInst _lUniq) (renvLookup _nm _lhsIenv _lhsIlamMp)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 160, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 157, column 33)
               __tup10 =
                   maybe (top, Set.empty) id _mbEnvTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 160, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 157, column 33)
               (_envTy,_) =
                   __tup10
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 160, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 157, column 33)
               (_,_envQualS) =
                   __tup10
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 234, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 33)
               __tup11 =
                   let mk envTy knTy
                         = case (envTy,knTy) of
@@ -4328,31 +4325,31 @@
                           | otherwise     -> mk envTy _lhsIknTy
                           where o@(amso,ams) = amsLE _lhsIrvarMp envTy _lhsIknTy
                         _                 -> mk (fresh _lUniq3) _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 234, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 33)
               (_amso,_) =
                   __tup11
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 234, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 33)
               (_,_ams) =
                   __tup11
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 316, column 17)
               _lhsOcoe =
                   _lhsIfinalRVarMp `varUpd` amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 347, column 17)
               _lhsOfunCoe =
                   last $ relevCoeToComposeList $ amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 359, column 17)
               _lhsOty =
                   amsoHi _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 379, column 17)
               _lhsOrvarMp =
                   amsLocalVarMp _ams |+> _lhsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 421, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 17)
               _lhsOqualS =
                   Set.union _envQualS (amsGathQual _ams)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 594, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 591, column 17)
               _dbg =
                   dbg     _lhsIopts _envTy _lhsIknTy _amso _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 610, column 17)
               _lhsOcTrf =
                   _cTrf
               -- -- generated by the unique rule mechanism.
@@ -4465,37 +4462,37 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 228, column 17)
               _litTy =
                   bot
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 229, column 33)
               __tup13 =
                   amsLE _lhsIrvarMp _litTy _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 229, column 33)
               (_amso,_) =
                   __tup13
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 229, column 33)
               (_,_ams) =
                   __tup13
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 316, column 17)
               _lhsOcoe =
                   _lhsIfinalRVarMp `varUpd` amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 347, column 17)
               _lhsOfunCoe =
                   last $ relevCoeToComposeList $ amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 359, column 17)
               _lhsOty =
                   amsoHi _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 379, column 17)
               _lhsOrvarMp =
                   amsLocalVarMp _ams |+> _lhsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 424, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 421, column 17)
               _lhsOqualS =
                   amsGathQual _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 595, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 592, column 17)
               _dbg =
                   dbg     _lhsIopts _litTy _lhsIknTy _amso _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 610, column 17)
               _lhsOcTrf =
                   _cTrf
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4596,37 +4593,37 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 231, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 228, column 17)
               _litTy =
                   bot
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 229, column 33)
               __tup14 =
                   amsLE _lhsIrvarMp _litTy _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 229, column 33)
               (_amso,_) =
                   __tup14
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 232, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 229, column 33)
               (_,_ams) =
                   __tup14
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 316, column 17)
               _lhsOcoe =
                   _lhsIfinalRVarMp `varUpd` amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 347, column 17)
               _lhsOfunCoe =
                   last $ relevCoeToComposeList $ amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 359, column 17)
               _lhsOty =
                   amsoHi _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 379, column 17)
               _lhsOrvarMp =
                   amsLocalVarMp _ams |+> _lhsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 424, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 421, column 17)
               _lhsOqualS =
                   amsGathQual _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 595, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 592, column 17)
               _dbg =
                   dbg     _lhsIopts _litTy _lhsIknTy _amso _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 610, column 17)
               _lhsOcTrf =
                   _cTrf
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4724,19 +4721,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -4837,19 +4834,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -4955,46 +4952,46 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 255, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 252, column 33)
               __tup15 =
                   let r = fresh _lUniq2
                       arity = whatExprAppArity _lhsIwhatAbove
                   in  maybe (RelevTy_Err "CExpr.Tup.tupTy", Set.empty) (\(a,qs) -> (RelevTy_Fun RQuant_None [] [] a r, qs))
                       $ relevTyArgsFromCTag False tag_ (Just r) arity _lhsIdataGam _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 255, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 252, column 33)
               (_tupTy,_) =
                   __tup15
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 255, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 252, column 33)
               (_,_tupQualS) =
                   __tup15
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 259, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 256, column 33)
               __tup16 =
                   amsLE _lhsIrvarMp _tupTy _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 259, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 256, column 33)
               (_amso,_) =
                   __tup16
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 259, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 256, column 33)
               (_,_ams) =
                   __tup16
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 316, column 17)
               _lhsOcoe =
                   _lhsIfinalRVarMp `varUpd` amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 347, column 17)
               _lhsOfunCoe =
                   last $ relevCoeToComposeList $ amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 359, column 17)
               _lhsOty =
                   amsoHi _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 379, column 17)
               _lhsOrvarMp =
                   amsLocalVarMp _ams |+> _lhsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 423, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 420, column 17)
               _lhsOqualS =
                   Set.union _tupQualS (amsGathQual _ams)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 596, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 593, column 17)
               _dbg =
                   dbg     _lhsIopts _tupTy _lhsIknTy _amso _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 610, column 17)
               _lhsOcTrf =
                   _cTrf
               -- -- generated by the unique rule mechanism.
@@ -5187,52 +5184,52 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 10, column 17)
               _isGlobal =
                   _lhsIlev == cLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 164, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 161, column 17)
               _bindsOenv =
                   gamAddGam _bindsIgathRecEnv _lhsIenv
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 165, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 162, column 17)
               _bodyOenv =
                   gamAddGam _bindsIgathEnv    _lhsIenv
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 384, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 381, column 17)
               _bodyOrvarMp =
                   _bindsIextraBindRVarMp |+> _bindsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 392, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 389, column 17)
               _bindsOforQuantRVarMp =
                   _bindsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 464, column 17)
               _bindsCanParticpateInOuterSolving =
                   categ_ == CBindCateg_Strict
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 464, column 17)
               _bindsQualSSubs =
                   Set.map (_bindsIrvarMp `varUpd`) _bindsIqualS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 464, column 17)
               _bindsQualSOuter =
                   if _bindsCanParticpateInOuterSolving then _bindsQualSSubs else Set.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 467, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 464, column 17)
               _bindsQualSSolv1 =
                   if _bindsCanParticpateInOuterSolving
                   then (Set.empty, emptyRVarMp)
                   else let (q,m) = assSolve _lhsIboundRelevTyVarS _bindsQualSSubs
                        in  (Set.map (m `varUpd`) q, m)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 480, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 477, column 17)
               _bindsQualSSolv2 =
                   let (q,m) = _bindsQualSSolv1
                       m2 = m |+> _lhsIfinalRVarMp
                       (q',m3) = assSolve Set.empty (Set.map (m2 `varUpd`) q)
                   in  (Set.map (m3 `varUpd`) q', m3 |+> m2)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 480, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 477, column 17)
               _bindsSolveVarMp =
                   snd _bindsQualSSolv2
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _fvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _bindsIqualS `Set.union` _bodyIqualS
               -- self rule
@@ -5517,66 +5514,66 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
               _isGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 210, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 207, column 17)
               _argOknTy =
                   _argTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 211, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 208, column 17)
               _funcOknTy =
                   case _lhsIknTy of
                     RelevTy_Fun q v qs as r -> RelevTy_Fun q           v  qs (fresh _lUniq : as) r
                     t                       -> RelevTy_Fun RQuant_None [] [] [fresh _lUniq     ] t
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 270, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 267, column 17)
               _funTy =
                   case _funcIty of
                     t@(RelevTy_Fun _ _ _ (_:_) _) -> t
                     _                             -> anaMkBotFun 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 270, column 33)
               __tup18 =
                   case _funTy of
                     RelevTy_Fun q v qs (a:as) r -> (a,r,RelevTy_Fun q v qs as r)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 270, column 33)
               (_argTy,_,_) =
                   __tup18
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 270, column 33)
               (_,_resTy,_) =
                   __tup18
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 273, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 270, column 33)
               (_,_,_resFunTy) =
                   __tup18
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 320, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 317, column 17)
               _lhsOcoe =
                   if _lhsIisTopApp
                   then _lhsIfinalRVarMp `varUpd` _resCoe
                   else RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 327, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
               _hereArgCoe =
                   _argIcoe <.> (_lhsIfinalRVarMp `varUpd` _argCoe)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 327, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
               _hereFunCoe =
                   case _funcIwhatBelow of
                     ExprIsApp _ _ -> RelevCoe_Id
                     _             -> _funcIcoe
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 348, column 17)
               __tup19 =
                   case _funcIfunCoe of
                     RelevCoe_Fun (a:as) r -> (a,r,RelevCoe_Fun as r)
                     _                     -> (RelevCoe_Err "CExpr.App.a", RelevCoe_Err "CExpr.App.r", RelevCoe_Err "CExpr.App.f")
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 348, column 17)
               (_argCoe,_,_) =
                   __tup19
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 348, column 17)
               (_,_resCoe,_) =
                   __tup19
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 351, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 348, column 17)
               (_,_,_lhsOfunCoe) =
                   __tup19
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 360, column 17)
               _lhsOty =
                   if _lhsIisTopApp then _resTy else _resFunTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 394, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 391, column 33)
               _forQuantRVarMp =
                   emptyRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 616, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
               _lhsOcTrf =
                   let a =
                           maybe _argIcTrf (\((a,_,_),e) -> acoreBound1AspkeyVal a (annCoe _hereArgCoe e)) $ acoreBoundMbVal _argIcTrf
@@ -5594,7 +5591,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _fvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _funcIqualS `Set.union` _argIqualS
               -- self rule
@@ -5872,30 +5869,30 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
               _isGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 331, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 328, column 17)
               _hereBodyCoe =
                   case _bodyIwhatBelow of
                     ExprIsLam _ _ -> RelevCoe_Id
                     _             -> _bodyIcoe
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 394, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 391, column 33)
               _forQuantRVarMp =
                   emptyRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 615, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 612, column 17)
               _lhsOcTrf =
                   acoreLam1 _argNm $ annCoe _hereBodyCoe _bodyIcTrf
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _fvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _bindIqualS `Set.union` _bodyIqualS
               -- self rule
@@ -6198,62 +6195,62 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 215, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 212, column 17)
               _exprOknTy =
                   _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 225, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 222, column 17)
               _altsOknTyCase =
                   _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 293, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 290, column 17)
               _altsOaltNrMax =
                   _altsIaltNr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 293, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 290, column 17)
               _altsOaltId =
                   _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 364, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 361, column 17)
               _lhsOty =
                   _altsIty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 383, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 380, column 17)
               _lhsOrvarMp =
                   _altsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 425, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 422, column 17)
               _lhsOqualS =
                   Set.unions [_exprIqualS, _altQualSIntersect]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 434, column 17)
               _altQualSLSubs =
                   map (Set.map (_altsIrvarMp `varUpd`)) _altsIaltQualSL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 434, column 17)
               _altQualSLSolv1 =
                   let bnd = _lhsIboundRelevTyVarS
                       s q = (Set.map (m `varUpd`) q', m)
                           where (q',m) = assSolve bnd q
                   in  map s _altQualSLSubs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 434, column 17)
               _altQualSLSolv =
                   map fst _altQualSLSolv1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 437, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 434, column 17)
               _altQualSIntersect =
                   foldr1 Set.intersection _altQualSLSolv
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 452, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 449, column 17)
               _altQualSLSolv2 =
                   let s (q,m) = (Set.map (m3 `varUpd`) q', m4)
                               where m2 = m |+> _lhsIfinalRVarMp
                                     (q',m3) = assSolve Set.empty (Set.map (m2 `varUpd`) q)
                                     m4 = m3 |+> m2
                   in  map s _altQualSLSolv1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 452, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 449, column 17)
               _altSolveLVarMp =
                   map snd _altQualSLSolv2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 598, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 595, column 17)
               _dbg =
                   dbgCase _lhsIopts _lhsIboundRelevTyVarS _altQualSLSubs _altQualSLSolv _altQualSIntersect
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 620, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 617, column 17)
               _lhsOcTrf =
                   _cTrf
               -- -- generated by the unique rule mechanism.
@@ -6519,13 +6516,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _errorExprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _errorExprIqualS
               -- self rule
@@ -6782,19 +6779,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _exprIfvS `Set.union` _offsetIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _exprIqualS `Set.union` _offsetIqualS
               -- self rule
@@ -7113,19 +7110,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _exprIqualS `Set.union` _offsetIqualS `Set.union` _fldExprIqualS
               -- self rule
@@ -7494,19 +7491,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _exprIqualS `Set.union` _offsetIqualS `Set.union` _fldExprIqualS
               -- self rule
@@ -7798,45 +7795,45 @@
                        , impEnt_
                        , _argTyL
                        )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 260, column 33)
               __tup22 =
                   let (r@(RelevTy_Ana re) ,qr) = (fresh _lUniq, [])
                       (as,qa) = relevTyArgs (const fresh) (\(RelevTy_Ana x) (RelevTy_Ana y) -> [RelevQual_SubEval x y]) _lUniq2 (take (length _argTyL) _primArgNeedsEvalL) r
                   in  (RelevTy_Fun RQuant_None [] [] as r, Set.fromList $ qr ++ qa)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 260, column 33)
               (_ffiTy,_) =
                   __tup22
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 260, column 33)
               (_,_ffiQualS) =
                   __tup22
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 266, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
               __tup23 =
                   amsLE _lhsIrvarMp _ffiTy _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 266, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
               (_amso,_) =
                   __tup23
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 266, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 263, column 33)
               (_,_ams) =
                   __tup23
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 319, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 316, column 17)
               _lhsOcoe =
                   _lhsIfinalRVarMp `varUpd` amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 350, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 347, column 17)
               _lhsOfunCoe =
                   last $ relevCoeToComposeList $ amsoCoe _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 362, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 359, column 17)
               _lhsOty =
                   amsoHi _amso
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 382, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 379, column 17)
               _lhsOrvarMp =
                   amsLocalVarMp _ams |+> _lhsIrvarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 422, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 419, column 17)
               _lhsOqualS =
                   Set.union _ffiQualS (amsGathQual _ams)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 597, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 594, column 17)
               _dbg =
                   dbg     _lhsIopts _ffiTy _lhsIknTy _amso _ams
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 613, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 610, column 17)
               _lhsOcTrf =
                   _cTrf
               -- -- generated by the unique rule mechanism.
@@ -7943,19 +7940,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -8056,19 +8053,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -8208,19 +8205,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bodyIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _bodyIqualS
               -- self rule
@@ -8370,19 +8367,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -8522,19 +8519,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _funcIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _funcIqualS
               -- self rule
@@ -8724,19 +8721,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonFFI.ag"(line 43, column 17)
               _lhsOmbFFIApp =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 356, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 353, column 17)
               _lhsOfunCoe =
                   RelevCoe_Err "CExpr.unimpl"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 366, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 363, column 17)
               _lhsOty =
                   RelevTy_Err "unimpl"
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bodyIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _bodyIqualS
               -- self rule
@@ -8908,13 +8905,13 @@
               _exprIrvarMp :: RVarMp
               _exprIty :: RelevTy
               _exprIwhatBelow :: WhatExpr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 324, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 321, column 17)
               _lhsOcoe =
                   RelevCoe_Id
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _annIfvS `Set.union` _exprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _annIqualS `Set.union` _exprIqualS
               -- self rule
@@ -9134,7 +9131,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9179,7 +9176,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9224,7 +9221,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9410,7 +9407,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9454,7 +9451,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9498,7 +9495,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9542,7 +9539,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9658,7 +9655,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9702,7 +9699,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9747,7 +9744,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9792,7 +9789,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9837,7 +9834,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -9964,7 +9961,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _x1IfvS `Set.union` _x2IfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _x1IqualS `Set.union` _x2IqualS
               -- self rule
@@ -10179,19 +10176,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 102, column 17)
               _exprOevalCtx =
                   EvalCtx_Eval
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 204, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 201, column 17)
               _exprOknTy =
                   RelevTy_None
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 492, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 489, column 17)
               _exprOboundRelevTyVarS =
                   Set.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _exprIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _exprIqualS
               -- self rule
@@ -10372,7 +10369,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -10478,7 +10475,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _restIfvS `Set.union` _bindsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _restIqualS `Set.union` _bindsIqualS
               -- self rule
@@ -10620,7 +10617,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -10683,7 +10680,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -10746,7 +10743,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -10979,41 +10976,41 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 15, column 17)
               _bindOisGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 188, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 185, column 17)
               __tup25 =
                   hdAndTl' (panic $ "patFldTyL: " ++ show _fldNm) _lhsIpatFldTyL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 188, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 185, column 17)
               (_patFldTy,_) =
                   __tup25
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 188, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 185, column 17)
               (_,_lhsOpatFldTyL) =
                   __tup25
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 189, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 186, column 17)
               _fldCoe =
                   let (tgiven,tused) = _patFldTy
                   in  RelevCoe_CastTy tgiven tused
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 219, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 216, column 17)
               _offsetOknTy =
                   _lhsIknTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 313, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 310, column 17)
               _altMbScrutTy =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 343, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 340, column 17)
               _hereOffCoe =
                   _lhsIfinalRVarMp `varUpd` _offsetIcoe
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 343, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 340, column 17)
               _hereFldCoe =
                   _lhsIfinalRVarMp `varUpd` _fldCoe
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 397, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 394, column 25)
               _bindOforQuantRVarMp =
                   emptyRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 628, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 625, column 17)
               _lhsOcTrf =
                   CPatFld_Fld lbl_ (annCoe _hereOffCoe _offsetIcTrf) _bindIcTrf [CBindAnn_Coe _hereFldCoe]
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _offsetIfvS `Set.union` _bindIfvS `Set.union` _fldAnnsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _offsetIqualS `Set.union` _bindIqualS `Set.union` _fldAnnsIqualS
               -- self rule
@@ -11279,7 +11276,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   _hdInmL ++ _tlInmL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   _hdIqualS `Set.union` _tlIqualS
               -- self rule
@@ -11419,7 +11416,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -11527,7 +11524,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -11576,7 +11573,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 418, column 28)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 415, column 28)
               _lhsOqualS =
                   Set.empty
               -- self rule
@@ -11670,28 +11667,28 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 4, column 17)
               _moduleOlev =
                   cLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 104, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 101, column 17)
               _whatTo =
                   case optimizeOptionStictnessAnalysisQuant (ehcOptOptimizeOptionMp _lhsIopts) of
                     OptimizeOptionValue_StrictnessAnalysis_NoQuant          -> [                                                    ]
                     OptimizeOptionValue_StrictnessAnalysis_QuantInstantiate -> [ WhatToRelevInfer_Quant, WhatToRelevInfer_InstToBot ]
                     _                                                       -> [ WhatToRelevInfer_Quant                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 110, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 107, column 17)
               _howUnionGathLamInfo =
                   id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 114, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 111, column 17)
               _howMergeLamInfo =
                   (\(LamInfo {laminfoBindAspMp=m}) i -> i {laminfoBindAspMp = m `Map.union` laminfoBindAspMp i})
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 146, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 143, column 17)
               _gUniq =
                   uidStart
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 153, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 150, column 17)
               _env =
                   emptyGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 375, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 372, column 17)
               _rvarMp =
                   emptyRVarMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 402, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnaRelevance.ag"(line 399, column 17)
               _moduleOfinalRVarMp =
                   _moduleIrvarMp
               -- copy rule (up)
diff --git a/src/UHC/Light/Compiler/Core/Trf/AnnBasedSimplify.hs b/src/UHC/Light/Compiler/Core/Trf/AnnBasedSimplify.hs
--- a/src/UHC/Light/Compiler/Core/Trf/AnnBasedSimplify.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/AnnBasedSimplify.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnnBa)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/AnnBa)
 module UHC.Light.Compiler.Core.Trf.AnnBasedSimplify(cmodTrfAnnBasedSimplify) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
diff --git a/src/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.hs b/src/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.hs
--- a/src/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGl)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGl)
 module UHC.Light.Compiler.Core.Trf.CAFGlobalAsArg(cmodTrfCAFGlobalAsArg) where
 
 import UHC.Util.Utils
@@ -15,8 +15,6 @@
 import UHC.Light.Compiler.Core.Utils
 import UHC.Light.Compiler.AbstractCore
 import qualified UHC.Util.FastSeq as Seq
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import Debug.Trace
 
 
@@ -31,8 +29,6 @@
 
 
 
-
-
 cmodTrfCAFGlobalAsArg :: CModule -> CModule
 cmodTrfCAFGlobalAsArg cmod
   =  let  t = wrap_CodeAGItf  (sem_CodeAGItf (CodeAGItf_AGItf cmod))
@@ -554,13 +550,13 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
               _lhsOfvS =
                   _bindAspectsIfvS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   _bindAspectsIlamBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
               _lhsOlevOf =
                   _bindAspectsIlevOf
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   _bindAspectsIvarBindSq
               -- self rule
@@ -1021,7 +1017,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   _hdIlamBindSq `Seq.union` _tlIlamBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1030,7 +1026,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   _hdInmL ++ _tlInmL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   _hdIvarBindSq `Seq.union` _tlIvarBindSq
               -- self rule
@@ -1156,7 +1152,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1165,7 +1161,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   Seq.empty
               -- self rule
@@ -1399,19 +1395,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 63, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 59, column 17)
               _lUniq1 =
                   _lhsIgUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 63, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 59, column 17)
               _lUniq2 =
                   _lUniq1 + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 65, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 61, column 17)
               _exprOgUniq =
                   _lUniq2 + Map.size _argMpNew
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 90, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 86, column 17)
               _exprOargMp =
                   _argMpNew `Map.union` _lhsIargMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 93, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 89, column 33)
               __tup2 =
                   if _isClosurableBind
                   then  let  mbvs      = Map.lookup _lhsInm _lhsIfvSCafMp
@@ -1419,36 +1415,36 @@
                              argLevL   = fvLAsArg _lhsIintroCVarIntroMp vs
                         in   fvLArgRepl _lUniq2 argLevL
                   else  ([], [], Map.empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 93, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 89, column 33)
               (_argOldL,_,_) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 93, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 89, column 33)
               (_,_argNewL,_) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 93, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 89, column 33)
               (_,_,_argMpNew) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 106, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 17)
               _nmLam =
                   mkFvNm _lUniq1 _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 106, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 17)
               _cTrfVar =
                   acoreBind1MetasTy _lhsInm _bindMetaIcTrf (acoreTyErr "CAFGlobalAsArg.CBound.Bind.cTrfVar")
                   $ acoreApp (acoreVar _nmLam)
                   $ map (\(n,cvi) -> (fvVarRepl _lhsIargMp n)) _argOldL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 106, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 17)
               _cTrfLam =
                   acoreBind1CatTy CBindCateg_Plain _nmLam (acoreTyErr "CAFGlobalAsArg.CBound.Bind.cTrfLam")
                   $ acoreLam [(n) | (n,cvi) <- _argNewL] _exprIcTrf
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 112, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 108, column 33)
               __tup3 =
                   if null _argNewL
                   then (Seq.singleton (acoreBind1Asp1 _lhsInm _cTrf   ) , Seq.empty             )
                   else (Seq.singleton                         _cTrfVar  , Seq.singleton _cTrfLam)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 112, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 108, column 33)
               (_lhsOvarBindSq,_) =
                   __tup3
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 112, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 108, column 33)
               (_,_lhsOlamBindSq) =
                   __tup3
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1586,7 +1582,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1595,7 +1591,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   Seq.empty
               -- self rule
@@ -1682,7 +1678,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1691,7 +1687,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   Seq.empty
               -- self rule
@@ -1779,7 +1775,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1788,7 +1784,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   Seq.empty
               -- self rule
@@ -1887,7 +1883,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1896,7 +1892,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   Seq.empty
               -- self rule
@@ -1972,7 +1968,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 84, column 17)
               _whatAbove =
                   ExprIsLam 0 Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 114, column 17)
               _lhsOvarBindSq =
                   Seq.singleton (acoreBind1Asp1 _lhsInm _cTrf)
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -1993,7 +1989,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2204,7 +2200,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   _hdIlamBindSq `Seq.union` _tlIlamBindSq
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2213,7 +2209,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   _hdInmL ++ _tlInmL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   _hdIvarBindSq `Seq.union` _tlIvarBindSq
               -- self rule
@@ -2346,7 +2342,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 102, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 98, column 32)
               _lhsOlamBindSq =
                   Seq.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2355,7 +2351,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 16, column 31)
               _lhsOnmL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 101, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 97, column 32)
               _lhsOvarBindSq =
                   Seq.empty
               -- self rule
@@ -3017,7 +3013,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 121, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 117, column 17)
               _lhsOcTrf =
                   fvVarRepl _lhsIargMp _nm
               -- self rule
@@ -3533,7 +3529,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 10, column 17)
               _isGlobal =
                   _lhsIlev == cLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 74, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 70, column 17)
               _fvSCafMp =
                   (let  start varS = fvsClosure _bindsIbindVarS Set.empty varS _lhsIfvSCafMp _bindsIfvSMp
                    in   case categ_ of
@@ -3544,7 +3540,7 @@
                             where (m,_)   = start _lhsIvarS
                   )
                   `Map.union` _lhsIfvSCafMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 122, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 118, column 17)
               _lhsOcTrf =
                   acoreLet CBindCateg_Plain (Seq.toList _bindsIlamBindSq)
                   $ acoreLet categ_ (Seq.toList _bindsIvarBindSq)
@@ -7889,13 +7885,13 @@
          -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 4, column 17)
          _moduleOlev =
              cLevModule
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 60, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 56, column 17)
          _moduleOgUniq =
              0
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 71, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 67, column 17)
          _moduleOfvSCafMp =
              Map.empty
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 87, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CAFGlobalAsArg.ag"(line 83, column 17)
          _moduleOargMp =
              Map.empty
          -- copy rule (up)
diff --git a/src/UHC/Light/Compiler/Core/Trf/ConstProp.hs b/src/UHC/Light/Compiler/Core/Trf/ConstProp.hs
--- a/src/UHC/Light/Compiler/Core/Trf/ConstProp.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/ConstProp.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Const)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Const)
 module UHC.Light.Compiler.Core.Trf.ConstProp(cmodTrfConstProp) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
diff --git a/src/UHC/Light/Compiler/Core/Trf/ElimNonCodegenConstructs.hs b/src/UHC/Light/Compiler/Core/Trf/ElimNonCodegenConstructs.hs
--- a/src/UHC/Light/Compiler/Core/Trf/ElimNonCodegenConstructs.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/ElimNonCodegenConstructs.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ElimN)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ElimN)
 module UHC.Light.Compiler.Core.Trf.ElimNonCodegenConstructs(cmodTrfElimNonCodegenConstructs) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
diff --git a/src/UHC/Light/Compiler/Core/Trf/ElimTrivApp.hs b/src/UHC/Light/Compiler/Core/Trf/ElimTrivApp.hs
--- a/src/UHC/Light/Compiler/Core/Trf/ElimTrivApp.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/ElimTrivApp.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ElimT)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ElimT)
 module UHC.Light.Compiler.Core.Trf.ElimTrivApp(cmodTrfElimTrivApp) where
 
 import Data.Maybe
diff --git a/src/UHC/Light/Compiler/Core/Trf/EraseExtractTysigCore.hs b/src/UHC/Light/Compiler/Core/Trf/EraseExtractTysigCore.hs
--- a/src/UHC/Light/Compiler/Core/Trf/EraseExtractTysigCore.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/EraseExtractTysigCore.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Erase)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Erase)
 module UHC.Light.Compiler.Core.Trf.EraseExtractTysigCore(cmodTrfEraseExtractTysigCore, cmodTrfEraseTyCore) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
diff --git a/src/UHC/Light/Compiler/Core/Trf/EtaRed.hs b/src/UHC/Light/Compiler/Core/Trf/EtaRed.hs
--- a/src/UHC/Light/Compiler/Core/Trf/EtaRed.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/EtaRed.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/EtaRe)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/EtaRe)
 module UHC.Light.Compiler.Core.Trf.EtaRed(cmodTrfEtaRed) where
 
 import Data.Maybe
diff --git a/src/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.hs b/src/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.hs
--- a/src/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Expli)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Expli)
 module UHC.Light.Compiler.Core.Trf.ExplicitStackTrace(cmodTrfExplicitStackTrace) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
diff --git a/src/UHC/Light/Compiler/Core/Trf/FixAfterParse.hs b/src/UHC/Light/Compiler/Core/Trf/FixAfterParse.hs
--- a/src/UHC/Light/Compiler/Core/Trf/FixAfterParse.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/FixAfterParse.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/FixAf)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/FixAf)
 module UHC.Light.Compiler.Core.Trf.FixAfterParse(cmodTrfFixAfterParse) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
diff --git a/src/UHC/Light/Compiler/Core/Trf/FloatToGlobal.hs b/src/UHC/Light/Compiler/Core/Trf/FloatToGlobal.hs
--- a/src/UHC/Light/Compiler/Core/Trf/FloatToGlobal.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/FloatToGlobal.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Float)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Float)
 module UHC.Light.Compiler.Core.Trf.FloatToGlobal(cmodTrfFloatToGlobal) where
 
 import UHC.Util.Utils
@@ -14,11 +14,7 @@
 import qualified Data.Map as Map
 import Data.List (partition)
 import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import Debug.Trace
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Core/Trf/InlineLetAlias.hs b/src/UHC/Light/Compiler/Core/Trf/InlineLetAlias.hs
--- a/src/UHC/Light/Compiler/Core/Trf/InlineLetAlias.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/InlineLetAlias.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Inlin)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Inlin)
 module UHC.Light.Compiler.Core.Trf.InlineLetAlias(cmodTrfInlineLetAlias) where
 
 import Data.Maybe
diff --git a/src/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.hs b/src/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.hs
--- a/src/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGl)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGl)
 module UHC.Light.Compiler.Core.Trf.LamGlobalAsArg(cmodTrfLamGlobalAsArg) where
 
 import UHC.Util.Utils
@@ -14,8 +14,6 @@
 import UHC.Light.Compiler.Ty
 import UHC.Light.Compiler.Core.Utils
 import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import Debug.Trace
 
 
@@ -30,8 +28,6 @@
 
 
 
-
-
 cmodTrfLamGlobalAsArg :: CModule -> CModule
 cmodTrfLamGlobalAsArg cmod
   =  let  t = wrap_CodeAGItf  (sem_CodeAGItf (CodeAGItf_AGItf cmod))
@@ -195,10 +191,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevAlt.ag"(line 2, column 17)
               _lev =
                   _lhsIlev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 188, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 184, column 10)
               _exprOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 189, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 185, column 10)
               _exprOisDictClass =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -598,10 +594,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 12, column 17)
               _lhsOnm =
                   nm_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 92, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 88, column 25)
               _aspBindLamArgMp =
                   _bindAspectsIgathAspBindLamArgMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _bindAspectsIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -616,7 +612,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   _bindAspectsIcvarIntroExprMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   _bindAspectsIenvUp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1091,7 +1087,7 @@
               _tlIgUniq :: Int
               _tlIlevOf :: Int
               _tlInmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _hdIbindLamArgMp `Map.union` _tlIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -1106,7 +1102,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   _hdIcvarIntroExprMp `Map.union` _tlIcvarIntroExprMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   _hdIenvUp `Map.union` _tlIenvUp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1233,7 +1229,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBindL
               _lhsOgUniq :: Int
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -1248,7 +1244,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1508,57 +1504,57 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 58, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 54, column 17)
               _exprOgUniq =
                   _lhsIgUniq + Map.size _argMpNew
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 83, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 79, column 17)
               _exprOargMp =
                   _argMpNew `Map.union` _lhsIargMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 96, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 92, column 25)
               _lhsOgathAspBindLamArgMp =
                   Map.singleton acbaspkeyDefault
                             ( _exprIbindLamArgMp
                             , _exprIenvUp
                             )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 136, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 132, column 33)
               __tup2 =
                   if                                    isJust _exprImbLam
                   then  let  argLevL = fvLAsArg _lhsIintroCVarIntroMp $ panicJust "LamGlobalAsArg.CBind.Bind.argLevL" $ Map.lookup _lhsInm $ _lhsIlamFvSMp
                              (argOL,argNL,argONMp) = fvLArgRepl _lhsIgUniq $ argLevL
                         in   (argNL, argONMp, _lhsInm `Map.singleton` argOL)
                   else  ([],Map.empty, Map.empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 136, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 132, column 33)
               (_argNewL,_,_) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 136, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 132, column 33)
               (_,_argMpNew,_) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 136, column 33)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 132, column 33)
               (_,_,_bindLamArgMp) =
                   __tup2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 144, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 140, column 17)
               _lhsOcTrf =
                   (acoreBoundVal1Metas _lhsInm _bindMetaIcTrf $ acoreLam [(n) | (n,cvi) <- _argNewL] _exprIcTrf)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 148, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 144, column 17)
               _bindMetaObindLamArgMp =
                   _exprIbindLamArgMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 196, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 192, column 11)
               _exprOmbCtxCount =
                   if _bindMetaIisDictInstance
                   then Just 0
                   else Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 199, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 195, column 11)
               _exprOisDictClass =
                   _bindMetaIisDictClass
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 230, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 226, column 11)
               _bindMetaOenvFinal =
                   _exprIenvUp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 236, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 232, column 12)
               _lhsOenvUp =
                   maybe (Map.empty)
                         (\t -> Map.singleton _lhsInm t)
                         _bindMetaImbTrack
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _bindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1693,16 +1689,16 @@
               _cmetasIlevOf :: Int
               _cmetasImbTrack :: (Maybe Track)
               _cmetasIself :: CMetas
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 114, column 49)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 49)
               __tup3 =
                   panicJust "LamGlobalAsArg.CBound.Meta.aspBindLamArgMp" $ Map.lookup acbaspkeyDefault _lhsIaspBindLamArgMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 114, column 49)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 49)
               (_cmetasObindLamArgMp,_) =
                   __tup3
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 114, column 49)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 49)
               (_,_cmetasOenvFinal) =
                   __tup3
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -1717,7 +1713,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1726,7 +1722,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1809,7 +1805,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBound
               _lhsOgUniq :: Int
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -1824,7 +1820,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1833,7 +1829,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -1918,13 +1914,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 83, column 17)
               _whatAbove =
                   ExprIsBind _lhsInm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 200, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 196, column 11)
               _exprOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 201, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 197, column 11)
               _exprOisDictClass =
                   False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -1939,7 +1935,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   _exprIenvUp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -1948,7 +1944,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2043,7 +2039,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBound
               _lhsOgUniq :: Int
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -2058,7 +2054,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2067,7 +2063,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2158,13 +2154,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 84, column 17)
               _whatAbove =
                   ExprIsLam 0 Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 184, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 180, column 10)
               _exprOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 185, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 181, column 10)
               _exprOisDictClass =
                   False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -2179,7 +2175,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   _exprIenvUp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2188,7 +2184,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2400,13 +2396,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
               _hdOisTopTup =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 180, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 176, column 10)
               _hdOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 181, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 177, column 10)
               _hdOisDictClass =
                   False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _hdIbindLamArgMp `Map.union` _tlIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -2421,7 +2417,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   _hdIcvarIntroExprMp `Map.union` _tlIcvarIntroExprMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   _hdIenvUp `Map.union` _tlIenvUp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2430,7 +2426,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   _hdIfvSMp `Map.union` _tlIfvSMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   _hdIgathAspBindLamArgMp `Map.union` _tlIgathAspBindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -2566,7 +2562,7 @@
               _lhsOnmL :: ([HsName])
               _lhsOcTrf :: CBoundL
               _lhsOgUniq :: Int
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonGlobalAsArg.ag"(line 3, column 39)
@@ -2581,7 +2577,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 73, column 36)
               _lhsOcvarIntroExprMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 233, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 229, column 32)
               _lhsOenvUp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -2590,7 +2586,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 2, column 26)
               _lhsOfvSMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 89, column 95)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 85, column 95)
               _lhsOgathAspBindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonLev.ag"(line 56, column 28)
@@ -3267,17 +3263,17 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 152, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 148, column 17)
               _lhsOcTrf =
                   let  r n = fvVarRepl _lhsIargMp n
                        v1 = r _nm
                        mk as = acoreApp v1 $ [(r a) | (a,cvi) <- as]
                        v2 = maybe v1 mk $ Map.lookup _nm $ _lhsIlamArgMp
                   in   v2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- self rule
@@ -3344,10 +3340,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3420,10 +3416,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3499,10 +3495,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3575,10 +3571,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3654,10 +3650,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -3834,7 +3830,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 10, column 17)
               _isGlobal =
                   _lhsIlev == cLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 67, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 63, column 17)
               _lamFvSMp =
                   (let  start varS = fvsClosure _bindsIbindLamS _lhsIlamS varS _lhsIlamFvSMp _bindsIfvSMp
                    in   case categ_ of
@@ -3845,19 +3841,19 @@
                             where (m,_)   = start _lhsIvarS
                   )
                   `Map.union` _lhsIlamFvSMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 124, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 120, column 17)
               _lamArgMp =
                   _bindsIbindLamArgMp `Map.union` _lhsIlamArgMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 207, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 203, column 11)
               _bodyOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 208, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 204, column 11)
               _bodyOisDictClass =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 241, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 237, column 12)
               _lhsOenvUp =
                   Map.union _bindsIenvUp _bodyIenvUp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _bindsIbindLamArgMp `Map.union` _bodyIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4080,13 +4076,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
               _isGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 103, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 99, column 25)
               _argOaspBindLamArgMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _funcIbindLamArgMp `Map.union` _argIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4337,12 +4333,12 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
               _isGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 204, column 11)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 200, column 11)
               _bodyOmbCtxCount =
                   do { n <- _lhsImbCtxCount
                      ; return (n+1)
                      }
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 242, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 238, column 12)
               _lhsOenvUp =
                   maybe (if _lhsIisDictClass
                          then Map.insert _argNm TrackSelf _bodyIenvUp
@@ -4350,7 +4346,7 @@
                         )
                         (\n -> Map.insert _argNm (TrackCtx n) _bodyIenvUp)
                         _lhsImbCtxCount
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _bindIbindLamArgMp `Map.union` _bodyIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4568,10 +4564,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp `Map.union` _dfltIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4784,10 +4780,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _errorExprIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -4975,10 +4971,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp `Map.union` _offsetIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -5227,10 +5223,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp `Map.union` _offsetIbindLamArgMp `Map.union` _fldExprIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -5526,10 +5522,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp `Map.union` _offsetIbindLamArgMp `Map.union` _fldExprIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -5743,10 +5739,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -5819,10 +5815,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -5895,10 +5891,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -5997,10 +5993,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _bodyIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -6119,10 +6115,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   Map.empty
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -6221,10 +6217,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _funcIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -6370,10 +6366,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
               _whatAbove =
                   ExprIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _bodyIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -6509,10 +6505,10 @@
               _exprImbLam :: (Maybe [HsName])
               _exprImbVar :: (Maybe HsName)
               _exprIwhatBelow :: WhatExpr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 12)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 245, column 12)
               _lhsOenvUp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 110, column 39)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 106, column 39)
               _lhsObindLamArgMp =
                   _exprIbindLamArgMp
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -7155,16 +7151,16 @@
               _lhsOcTrf :: CMetaVal
               _lhsOself :: CMetaVal
               _lhsOgUniq :: Int
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 130, column 21)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 126, column 21)
               _lhsOisInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 215, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 211, column 20)
               _lhsOisDictClass =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 217, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 213, column 20)
               _lhsOisDictInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 227, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 223, column 20)
               _lhsOmbTrack =
                   Nothing
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -7211,16 +7207,16 @@
               _lhsOcTrf :: CMetaVal
               _lhsOself :: CMetaVal
               _lhsOgUniq :: Int
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 130, column 21)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 126, column 21)
               _lhsOisInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 215, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 211, column 20)
               _lhsOisDictClass =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 217, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 213, column 20)
               _lhsOisDictInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 227, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 223, column 20)
               _lhsOmbTrack =
                   Nothing
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -7268,19 +7264,19 @@
               _lhsOlevOf :: Int
               _lhsOself :: CMetaVal
               _lhsOgUniq :: Int
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 130, column 21)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 126, column 21)
               _lhsOisInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 214, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 210, column 20)
               _lhsOisDictClass =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 217, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 213, column 20)
               _lhsOisDictInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 227, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 223, column 20)
               _lhsOmbTrack =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 253, column 22)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 249, column 22)
               _lhsOcTrf =
                   CMetaVal_DictClass    (map (metaExtendTrack _lhsIbindLamArgMp _lhsIenvFinal) tracks_)
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -7325,19 +7321,19 @@
               _lhsOlevOf :: Int
               _lhsOself :: CMetaVal
               _lhsOgUniq :: Int
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 129, column 21)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 125, column 21)
               _lhsOisInstance =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 215, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 211, column 20)
               _lhsOisDictClass =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 216, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 212, column 20)
               _lhsOisDictInstance =
                   True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 227, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 223, column 20)
               _lhsOmbTrack =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 254, column 22)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 250, column 22)
               _lhsOcTrf =
                   CMetaVal_DictInstance (map (metaExtendTrack _lhsIbindLamArgMp _lhsIenvFinal) tracks_)
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -7382,16 +7378,16 @@
               _lhsOcTrf :: CMetaVal
               _lhsOself :: CMetaVal
               _lhsOgUniq :: Int
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 130, column 21)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 126, column 21)
               _lhsOisInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 215, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 211, column 20)
               _lhsOisDictClass =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 217, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 213, column 20)
               _lhsOisDictInstance =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 226, column 20)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 222, column 20)
               _lhsOmbTrack =
                   Just track_
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -7729,10 +7725,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 102, column 17)
               _exprOevalCtx =
                   EvalCtx_Eval
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 176, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 172, column 10)
               _exprOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 177, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 173, column 10)
               _exprOisDictClass =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -8309,10 +8305,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 15, column 17)
               _bindOisGlobal =
                   False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 192, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 188, column 10)
               _offsetOmbCtxCount =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 193, column 10)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 189, column 10)
               _offsetOisDictClass =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/CommonFv.ag"(line 1, column 26)
@@ -8808,16 +8804,16 @@
          -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 4, column 17)
          _moduleOlev =
              cLevModule
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 55, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 51, column 17)
          _moduleOgUniq =
              0
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 64, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 60, column 17)
          _moduleOlamFvSMp =
              Map.empty
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 80, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 76, column 17)
          _moduleOargMp =
              Map.empty
-         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 121, column 17)
+         -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LamGlobalAsArg.ag"(line 117, column 17)
          _moduleOlamArgMp =
              Map.empty
          -- copy rule (up)
diff --git a/src/UHC/Light/Compiler/Core/Trf/LetDefBeforeUse.hs b/src/UHC/Light/Compiler/Core/Trf/LetDefBeforeUse.hs
--- a/src/UHC/Light/Compiler/Core/Trf/LetDefBeforeUse.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/LetDefBeforeUse.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LetDe)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LetDe)
 module UHC.Light.Compiler.Core.Trf.LetDefBeforeUse(cmodTrfLetDefBeforeUse) where
 
 import Data.Maybe
@@ -10,11 +10,7 @@
 import UHC.Light.Compiler.AbstractCore
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import UHC.Light.Compiler.Base.Debug
-import UHC.Light.Compiler.Base.HsName.Builtin
 import UHC.Util.Utils (scc)
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Core/Trf/LetFlattenStrict.hs b/src/UHC/Light/Compiler/Core/Trf/LetFlattenStrict.hs
--- a/src/UHC/Light/Compiler/Core/Trf/LetFlattenStrict.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/LetFlattenStrict.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LetFl)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LetFl)
 module UHC.Light.Compiler.Core.Trf.LetFlattenStrict(cmodTrfLetFlattenStrict) where
 
 import UHC.Light.Compiler.Base.Common
diff --git a/src/UHC/Light/Compiler/Core/Trf/LetUnrec.hs b/src/UHC/Light/Compiler/Core/Trf/LetUnrec.hs
--- a/src/UHC/Light/Compiler/Core/Trf/LetUnrec.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/LetUnrec.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LetUn)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/LetUn)
 module UHC.Light.Compiler.Core.Trf.LetUnrec(cmodTrfLetUnrec) where
 
 import UHC.Light.Compiler.Base.Common
@@ -8,7 +8,6 @@
 import UHC.Light.Compiler.Core
 import UHC.Light.Compiler.Ty
 import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.Base.Debug
 import UHC.Util.Utils (scc)
 import Data.Maybe
 import qualified Data.Map as Map
diff --git a/src/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.hs b/src/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.hs
--- a/src/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Optim)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Optim)
 module UHC.Light.Compiler.Core.Trf.OptimizeStrictness(cmodTrfOptimizeStrictness) where
 
 import Data.Maybe
@@ -15,8 +15,6 @@
 import Data.Maybe
 import UHC.Util.Utils
 import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.Base.Debug
-import UHC.Light.Compiler.Base.HsName.Builtin
 
 
 
@@ -30,8 +28,6 @@
 
 
 
-
-
 cmodTrfOptimizeStrictness
   :: EHCOpts
      -> LamMp
@@ -102,7 +98,7 @@
               _exprIgathLamMp :: LamMp
               _exprImbLam :: (Maybe [HsName])
               _exprImbVar :: (Maybe HsName)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 121, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 117, column 17)
               _lamArgAnaEvalL =
                   []
               -- self rule
@@ -271,13 +267,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 12, column 17)
               _lhsOnm =
                   nm_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 102, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 98, column 17)
               _mbStrictArgsRes =
                   case _bindAspectsIgathStrictTyL of
                     [t@(RelevTy_Fun _ _ _ a r)]
                       -> Just (t, map relevtyAnaEval a, relevtyAnaEval r)
                     _ -> Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 153, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 149, column 17)
               _lhsOcTrf =
                   CBind_Bind nm_ _bindAspectsIcTrfBoundL
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
@@ -610,13 +606,13 @@
               _exprIgathLamMp :: LamMp
               _exprImbLam :: (Maybe [HsName])
               _exprImbVar :: (Maybe HsName)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 111, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 107, column 17)
               _doWorkerWrapper =
                   isJust _lhsImbStrictArgsRes
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 116, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 112, column 17)
               (_exprOlamArgAnaEvalL,_exprOanaEvalCtxt) =
                   maybe ([],top) tup123to23 _lhsImbStrictArgsRes
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 127, column 17)
               _wrapper =
                   case (_exprImbLam,_lhsImbStrictArgsRes) of
                     (Just as, Just (_,evs,_))
@@ -631,19 +627,19 @@
                                where a' = hsnUniqify HsNameUniqifier_Evaluated a
                             mk a _            = (a, a , id                             )
                     _ -> []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 127, column 17)
               _worker =
                   if _doWorkerWrapper then [CBound_Val acbaspkeyStrict 0 CLbl_None _exprIcTrf] else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 131, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 127, column 17)
               _oldbinding =
                   if _doWorkerWrapper then [] else [_cTrf]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 146, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 142, column 17)
               _lhsOcTrfBoundL =
                   _worker ++ _wrapper ++ _oldbinding
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   []
               -- self rule
@@ -686,19 +682,19 @@
               _cmetasOlamMp :: LamMp
               _cmetasOopts :: EHCOpts
               _cmetasIcTrf :: CMetas
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 77, column 17)
               _anaEvalCtxt =
                   top
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 114, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 150, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 146, column 17)
               _lhsOcTrfBoundL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   []
               -- self rule
@@ -730,24 +726,24 @@
               _lhsObindLamMp :: LamMp
               _lhsOgathStrictTyL :: ([RelevTy])
               _lhsOcTrf :: CBound
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 77, column 17)
               _anaEvalCtxt =
                   top
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 95, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 91, column 17)
               _gathStrictTyL =
                   if aspectKeyS_ == acbaspkeyStrict
                   then [relevTy_]
                   else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 114, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 150, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 146, column 17)
               _lhsOcTrfBoundL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   _gathStrictTyL
               -- self rule
@@ -784,19 +780,19 @@
               _exprIgathLamMp :: LamMp
               _exprImbLam :: (Maybe [HsName])
               _exprImbVar :: (Maybe HsName)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 77, column 17)
               _anaEvalCtxt =
                   top
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 114, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 150, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 146, column 17)
               _lhsOcTrfBoundL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   []
               -- self rule
@@ -834,19 +830,19 @@
               _lhsObindLamMp :: LamMp
               _lhsOgathStrictTyL :: ([RelevTy])
               _lhsOcTrf :: CBound
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 77, column 17)
               _anaEvalCtxt =
                   top
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 114, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 150, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 146, column 17)
               _lhsOcTrfBoundL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   []
               -- self rule
@@ -883,19 +879,19 @@
               _exprIgathLamMp :: LamMp
               _exprImbLam :: (Maybe [HsName])
               _exprImbVar :: (Maybe HsName)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 81, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 77, column 17)
               _anaEvalCtxt =
                   top
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 118, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 114, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 147, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 143, column 17)
               _lhsOcTrfBoundL =
                   [_cTrf]
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   []
               -- self rule
@@ -984,16 +980,16 @@
               _tlIcTrf :: CBoundL
               _tlIcTrfBoundL :: ([CBound])
               _tlIgathStrictTyL :: ([RelevTy])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 78, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 74, column 17)
               _anaEvalCtxt =
                   top
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 128, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 124, column 32)
               _lhsOcTrfBoundL =
                   _hdIcTrfBoundL ++ _tlIcTrfBoundL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   _hdIgathStrictTyL ++ _tlIgathStrictTyL
               -- self rule
@@ -1047,10 +1043,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
               _lhsObindLamMp =
                   Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 128, column 32)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 124, column 32)
               _lhsOcTrfBoundL =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 92, column 35)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 88, column 35)
               _lhsOgathStrictTyL =
                   []
               -- self rule
@@ -1570,22 +1566,22 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 156, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 152, column 17)
               _strictRef =
                   acbrefAspAnd acbaspkeyStrict ref_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 156, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 152, column 17)
               _mbStrict =
                   case fmap libindaspRelevTy $ lamMpLookupAsp2 _strictRef _lhsIlamMp of
                     Just (t@(RelevTy_Fun _ _ _ a r))
                       -> Just (t, map relevtyAnaEval a, relevtyAnaEval r)
                     _ -> Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 163, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 159, column 17)
               _lhsOcTrf =
                   CExpr_Var $ maybe ref_ (const _strictRef) _mbStrict
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 169, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 165, column 17)
               (_lhsOappArgAnaEvalL,_lhsOappResAnaEval) =
                   maybe ([],top) tup123to23 _mbStrict
               -- self rule
@@ -1621,13 +1617,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -1663,13 +1659,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -1705,13 +1701,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -1747,13 +1743,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -1789,13 +1785,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -1848,13 +1844,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 7, column 17)
               _lhsOgathLamMp =
                   _bindsIbindLamMp `Map.union` _bodyIgathLamMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -1936,13 +1932,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 108, column 25)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 104, column 25)
               _argOmbStrictArgsRes =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 171, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 167, column 17)
               (_argOanaEvalCtxt,_lhsOappArgAnaEvalL) =
                   hdAndTl' top _funcIappArgAnaEvalL
               -- self rule
@@ -2026,13 +2022,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLamInfo.ag"(line 7, column 17)
               _bodyOlamMp =
                   Map.delete _argNm _lhsIlamMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 124, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 120, column 17)
               (_argAnaEval,_bodyOlamArgAnaEvalL) =
                   hdAndTl' top _lhsIlamArgAnaEvalL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2112,13 +2108,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2193,13 +2189,13 @@
               _errorExprIgathLamMp :: LamMp
               _errorExprImbLam :: (Maybe [HsName])
               _errorExprImbVar :: (Maybe HsName)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2286,13 +2282,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2393,13 +2389,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2514,13 +2510,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2601,13 +2597,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2643,13 +2639,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2685,13 +2681,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2739,13 +2735,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2794,13 +2790,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2848,13 +2844,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -2916,13 +2912,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
               _lhsOgathLamMp =
                   Map.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 126, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 122, column 17)
               _lamArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappArgAnaEvalL =
                   []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 174, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 170, column 17)
               _lhsOappResAnaEval =
                   top
               -- self rule
@@ -3484,10 +3480,10 @@
               _exprIgathLamMp :: LamMp
               _exprImbLam :: (Maybe [HsName])
               _exprImbVar :: (Maybe HsName)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 84, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 80, column 17)
               _anaEvalCtxt =
                   top
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 121, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 117, column 17)
               _lamArgAnaEvalL =
                   []
               -- self rule
@@ -3746,10 +3742,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 28, column 17)
               _lhsOfldNmL =
                   [_fldNm]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 87, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 83, column 17)
               _anaEvalCtxt =
                   bot
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 121, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 117, column 17)
               _lamArgAnaEvalL =
                   []
               -- self rule
@@ -3979,10 +3975,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 16, column 17)
               _moduleOlamMp =
                   _howUnionGathLamInfo _lhsIlamMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 68, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 64, column 17)
               _howUnionGathLamInfo =
                   Map.union _gathLamMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 72, column 17)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/OptimizeStrictness.ag"(line 68, column 17)
               _howMergeLamInfo =
                   (\(LamInfo {laminfoBindAspMp=m}) i -> i {laminfoBindAspMp = m `Map.union` laminfoBindAspMp i})
               -- copy rule (up)
diff --git a/src/UHC/Light/Compiler/Core/Trf/RenUniq.hs b/src/UHC/Light/Compiler/Core/Trf/RenUniq.hs
--- a/src/UHC/Light/Compiler/Core/Trf/RenUniq.hs
+++ b/src/UHC/Light/Compiler/Core/Trf/RenUniq.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/RenUn)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/RenUn)
 module UHC.Light.Compiler.Core.Trf.RenUniq(RenUniqOpts (..), emptyRenUniqOpts
 , cmodTrfRenUniq) where
 
@@ -14,10 +14,6 @@
 import UHC.Light.Compiler.Core
 import UHC.Light.Compiler.Ty
 import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Core/UsedModNms.hs b/src/UHC/Light/Compiler/Core/UsedModNms.hs
--- a/src/UHC/Light/Compiler/Core/UsedModNms.hs
+++ b/src/UHC/Light/Compiler/Core/UsedModNms.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/UsedModNm)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/UsedModNm)
 module UHC.Light.Compiler.Core.UsedModNms(cmodUsedModNms) where
 
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/Core/Utils.hs b/src/UHC/Light/Compiler/Core/Utils.hs
--- a/src/UHC/Light/Compiler/Core/Utils.hs
+++ b/src/UHC/Light/Compiler/Core/Utils.hs
@@ -27,8 +27,6 @@
 import Data.List
 import qualified Data.Map as Map
 import UHC.Util.Utils
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import Control.Monad.State
 import Data.Array
 import qualified UHC.Util.FastSeq as Seq
diff --git a/src/UHC/Light/Compiler/CoreRun.hs b/src/UHC/Light/Compiler/CoreRun.hs
--- a/src/UHC/Light/Compiler/CoreRun.hs
+++ b/src/UHC/Light/Compiler/CoreRun.hs
@@ -1,28 +1,29 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun.ag)
 module UHC.Light.Compiler.CoreRun(module UHC.Light.Compiler.CoreRun.Prim
 , AGItf (..)
 , Mod (..), SExp (..), Exp (..), MbExp, Alt (..), Pat (..)
-, Meta (..), MetaL, DataCon (..), DataConL, Import (..), ImportL
+, Meta (..), MetaL, DataCon (..), DataConL, Import (..), ImportL, Export (..), ExportL
 , CRArray, CRMArray, emptyCRArray, crarrayToList, crarrayFromList, craLength, craAssocs, craAssocs', craReverseAssocs'
 , Bind
 , dbgs, dbg
 , mbSExpr
 , exp2sexp
 , RRef (..), noRRef
+, rrefResolve
 , rrefToDif
 , Ref2Nm
 , Nm2RefMp, emptyNm2RefMp, nm2refUnion, nm2RefMpInverse, nm2refLookup
 , ref2nmEmpty, ref2nmUnion, ref2nmLookup
-, mkLocLevRef, mkLocDifRef, mkGlobRef, mkImpRef, mkModRef
+, mkLocLevRef, mkLocDifRef, mkGlobRef, mkImpRef, mkExpRef, mkModRef
 , mkExp, mkVar, mkVar', mkInt, mkInt', mkChar, mkChar', mkString, mkString'
 , mkDbg, mkDbg'
 , mkApp, mkApp', mkTup, mkTup', mkEval, mkTail, mkCase, mkLam, mkLam', mkLet, mkLet', mkFFI, mkFFI'
 , mkImport
 , mkMetaDataCon, mkMetaDataType
-, mkMod, mkMod', mkModWithMetas, mkModWithImportsMetas
-, rrefToImp, rrefToExp
+, mkMod, mkMod', mkModWithMetas, mkModWithImportsMetas, mkModWithImportsExportsMetas
+, rrefToImp, rrefToExp, rrefResolveUnr
 , mkInteger, mkInteger') where
 
 import UHC.Light.Compiler.Base.Common
@@ -151,7 +152,7 @@
 
 -- | Identifier references for use during running CoreRun
 data RRef
-  -- | global reference to module and its entry, will become obsolete, to be replaced by 'RRef_Mod' and 'RRef_Glb'
+  -- | global reference to module and its entry, will become obsolete, to be replaced by 'RRef_Mod', 'RRef_Exp', and RRef_Imp
   = RRef_Glb
       { rrefMod         :: !Int     -- ^ module
       , rrefEntry       :: !Int     -- ^ entry inside module
@@ -160,6 +161,10 @@
   | RRef_Mod
       { rrefEntry       :: !Int     -- ^ entry inside module, in its frame
       }
+  -- | Unresolved entry, to be resolved to a RRef_Imp (most likely)
+  | RRef_Unr
+      { rrefNm       	:: !HsName	-- ^ module name, to be looked up in a module specific import list for an index
+      }
   -- | exported entry of module reference, only used internally to be later resolved to a 'RRef_Imp'
   | RRef_Exp
       { rrefModNm       :: !HsName	-- ^ module name, to be looked up in a module specific import list for an index
@@ -208,10 +213,22 @@
 
 
 
+-- | Resolve as far as possible
+rrefResolve :: Maybe Int -> Maybe (HsName -> Maybe Int) -> Nm2RefMp -> HsName -> RRef
+rrefResolve mbLev mbImpNmLkup nm2ref nm = maybe
+  (RRef_Unr nm)
+  ( maybe id rrefToDif mbLev
+  . maybe id rrefToImp mbImpNmLkup
+  )
+  $ nm2refLookup nm nm2ref
+
+
+
 -- | Convert to RRef_Exp to RRef_Imp, i.e. named module to indexed module ref
 rrefToImp :: (HsName -> Maybe Int) -> RRef -> RRef
 rrefToImp lkup = mapRRef f
-  where f r@(RRef_Exp n o) = maybe (RRef_Dbg n) (flip RRef_Imp o) $ lkup $ panicJust "rrefToImp" $ hsnQualifier n
+  where f r@(RRef_Exp n o) = fromMaybe r $ {- hsnQualifier n >>= -} lkup n >>= (return . flip RRef_Imp o)
+                             -- maybe r (flip RRef_Imp o) $ lkup $ panicJust "CoreRun.rrefToImp" $ hsnQualifier n
         f r                = r
 
 -- | Convert to RRef_Mod to RRef_Exp, i.e. local module ref to exported
@@ -220,8 +237,14 @@
   where f r@(RRef_Mod o) = RRef_Exp nm o
         f r              = r
 
+-- | Resolve RRef_Unr
+rrefResolveUnr :: Maybe (HsName -> Maybe Int) -> Nm2RefMp -> RRef -> RRef
+rrefResolveUnr mbImpNmLkup nm2ref = mapRRef f
+  where f r@(RRef_Unr n) = rrefResolve Nothing mbImpNmLkup nm2ref n
+        f r              = r
 
 
+
 -- | Convert to RRef_Loc to RRef_LDf, i.e. absolute level to relative (to current) level
 rrefToDif :: Int -> RRef -> RRef
 rrefToDif curlev = mapRRef f
@@ -285,8 +308,8 @@
 
 
 instance Binary Mod where
-  put (Mod_Mod a b c d e f g h) = put a >> put b >> put c >> put d >> put e >> put f >> put g >> put h
-  get = liftM8 Mod_Mod get get get get get get get get
+  put (Mod_Mod a b c d e f g h i) = put a >> put b >> put c >> put d >> put e >> put f >> put g >> put h >> put i
+  get = liftM9 Mod_Mod get get get get get get get get get
 
 instance Serialize Mod where
   sput = sputPlain
@@ -304,6 +327,12 @@
            case t of
              0 -> -} liftM  Import_Import get
 
+instance Binary Export where
+  put (Export_Export a b) = {- putWord8 0 >> -} put a >> put b
+  get = {- do t <- getWord8
+           case t of
+             0 -> -} liftM2 Export_Export get get
+
 instance Binary DataCon where
   put (DataCon_Con a b) = {- putWord8 0 >> -} put a >> put b
   get = {- do t <- getWord8
@@ -374,6 +403,7 @@
   put (RRef_Mod 		a  			) = putWord8 6 >> put a
   put (RRef_Imp 		a b			) = putWord8 7 >> put a >> put b
   put (RRef_Exp 		a b			) = putWord8 8 >> put a >> put b
+  put (RRef_Unr 		a  			) = putWord8 9 >> put a
   get = do t <- getWord8
            case t of
              0 -> liftM2 RRef_Glb 		get get
@@ -385,6 +415,7 @@
              6 -> liftM  RRef_Mod 		get
              7 -> liftM2 RRef_Imp 		get get
              8 -> liftM2 RRef_Exp 		get get
+             9 -> liftM  RRef_Unr 		get
 
 instance Binary a => Binary (CRArray a) where
   put = put . crarrayToList
@@ -412,6 +443,10 @@
 mkImpRef :: Int -> Int -> RRef
 mkImpRef = RRef_Imp
 
+-- | 'RRef' to global from module, using module name and offset
+mkExpRef :: HsName -> Int -> RRef
+mkExpRef = RRef_Exp
+
 -- | 'RRef' to global from current module, using offset
 mkModRef :: Int -> RRef
 mkModRef = RRef_Mod
@@ -601,21 +636,34 @@
 -- **************************************
 
 -- | Module, with imports, with meta info
+mkModWithImportsExportsMetas
+  :: HsName				-- ^ module name
+     -> Maybe Int		-- ^ module number, possibly (to become obsolete)
+     -> Int				-- ^ total stack size, including globals of module, their setup (see semantics), and the main startup part kicking of evaluation
+     -> [Import]		-- ^ imports
+     -> [Export]		-- ^ exports
+     -> [Meta]			-- ^ meta info
+     -> CRArray Bind	-- ^ bound expressions
+     -> Maybe Exp		-- ^ body of main, absence of main indicated by Nothing
+     -> Mod
+mkModWithImportsExportsMetas modNm modNr stkDepth imports exports metas binds body = Mod_Mod ref2nmEmpty modNm modNr stkDepth imports exports metas binds body
+
+-- | Module, with imports, with meta info
 mkModWithImportsMetas
   :: HsName				-- ^ module name
-     -> Int				-- ^ module number
+     -> Maybe Int		-- ^ module number, possibly (to become obsolete)
      -> Int				-- ^ total stack size, including globals of module, their setup (see semantics), and the main startup part kicking of evaluation
      -> [Import]		-- ^ imports
      -> [Meta]			-- ^ meta info
      -> CRArray Bind	-- ^ bound expressions
      -> Maybe Exp		-- ^ body of main, absence of main indicated by Nothing
      -> Mod
-mkModWithImportsMetas modNm modNr stkDepth imports metas binds body = Mod_Mod ref2nmEmpty modNm modNr stkDepth imports metas binds body
+mkModWithImportsMetas modNm modNr stkDepth imports metas binds body = mkModWithImportsExportsMetas modNm modNr stkDepth imports [] metas binds body
 
 -- | Module, with meta info
 mkModWithMetas
   :: HsName				-- ^ module name
-     -> Int				-- ^ module number
+     -> Maybe Int		-- ^ module number, possibly (to become obsolete)
      -> Int				-- ^ total stack size, including globals of module, their setup (see semantics), and the main startup part kicking of evaluation
      -> [Meta]			-- ^ meta info
      -> CRArray Bind	-- ^ bound expressions
@@ -626,7 +674,7 @@
 -- | Module
 mkMod'
   :: HsName				-- ^ module name
-     -> Int				-- ^ module number
+     -> Maybe Int		-- ^ module number, possibly (to become obsolete)
      -> Int				-- ^ total stack size, including globals of module, their setup (see semantics), and the main startup part kicking of evaluation
      -> CRArray Bind	-- ^ bound expressions
      -> Exp				-- ^ body of main
@@ -636,7 +684,7 @@
 -- | Module
 mkMod
   :: HsName				-- ^ module name
-     -> Int				-- ^ module number
+     -> Maybe Int		-- ^ module number, possibly (to become obsolete)
      -> Int				-- ^ total stack size, including globals of module, their setup (see semantics), and the main startup part kicking of evaluation
      -> [Bind]			-- ^ bound expressions
      -> Exp				-- ^ body of main
@@ -661,6 +709,10 @@
          | Exp_Tail {expr_Exp_Tail :: !(Exp)}
          | Exp_Case {expr_Exp_Case :: !(SExp),alts_Exp_Case :: !((CRArray Alt))}
          | Exp_FFI {prim_Exp_FFI :: !(RunPrim),args_Exp_FFI :: !((CRArray SExp))}
+-- Export ------------------------------------------------------
+data Export = Export_Export {nm_Export_Export :: !(HsName),offset_Export_Export :: !(Int)}
+-- ExportL -----------------------------------------------------
+type ExportL = [Export]
 -- Import ------------------------------------------------------
 data Import = Import_Import {nm_Import_Import :: !(HsName)}
 -- ImportL -----------------------------------------------------
@@ -672,7 +724,7 @@
 -- MetaL -------------------------------------------------------
 type MetaL = [Meta]
 -- Mod ---------------------------------------------------------
-data Mod = Mod_Mod {ref2nm_Mod_Mod :: !(Ref2Nm),moduleNm_Mod_Mod :: !(HsName),moduleNr_Mod_Mod :: !(Int),stkDepth_Mod_Mod :: !(Int),imports_Mod_Mod :: !(ImportL),metas_Mod_Mod :: !(MetaL),binds_Mod_Mod :: !((CRArray Bind)),mbbody_Mod_Mod :: !(MbExp)}
+data Mod = Mod_Mod {ref2nm_Mod_Mod :: !(Ref2Nm),moduleNm_Mod_Mod :: !(HsName),moduleNr_Mod_Mod :: !((Maybe Int)),stkDepth_Mod_Mod :: !(Int),imports_Mod_Mod :: !(ImportL),exports_Mod_Mod :: !(ExportL),metas_Mod_Mod :: !(MetaL),binds_Mod_Mod :: !((CRArray Bind)),mbbody_Mod_Mod :: !(MbExp)}
 -- Pat ---------------------------------------------------------
 data Pat = Pat_Con {tag_Pat_Con :: !(Int)}
 -- SExp --------------------------------------------------------
diff --git a/src/UHC/Light/Compiler/CoreRun/API.hs b/src/UHC/Light/Compiler/CoreRun/API.hs
--- a/src/UHC/Light/Compiler/CoreRun/API.hs
+++ b/src/UHC/Light/Compiler/CoreRun/API.hs
@@ -33,6 +33,7 @@
   , mkLocDifRef
   , mkGlobRef
   , mkImpRef
+  , mkExpRef
   , mkModRef
 
   -- ** Expressions
diff --git a/src/UHC/Light/Compiler/CoreRun/Check.hs b/src/UHC/Light/Compiler/CoreRun/Check.hs
--- a/src/UHC/Light/Compiler/CoreRun/Check.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Check.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun/Check.)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun/Check.)
 module UHC.Light.Compiler.CoreRun.Check(crmodCheck', Inh_AGItf (..), Syn_AGItf (..)) where
 
 import UHC.Light.Compiler.Base.Common
@@ -8,6 +8,9 @@
 import UHC.Light.Compiler.Error
 import UHC.Light.Compiler.CoreRun
 import qualified UHC.Util.Rel as Rel
+import qualified UHC.Util.RelMap as RelMap
+import qualified Data.Vector as V
+import Data.List
 import qualified UHC.Light.Compiler.Module.ImportExport as ModImpExp
 
 
@@ -21,6 +24,23 @@
 
 
 
+
+
+chkExp'' :: InhChk -> Exp -> Exp
+chkExp'' inhchk x = crr_Syn_Exp $ wrap_Exp (sem_Exp x) (Inh_Exp {inhchk_Inh_Exp=inhchk})
+
+chkSExp'' :: InhChk -> SExp -> SExp
+chkSExp'' inhchk x = crr_Syn_SExp $ wrap_SExp (sem_SExp x) (Inh_SExp {inhchk_Inh_SExp=inhchk})
+
+chkAlt'' :: InhChk -> Alt -> Alt
+chkAlt'' inhchk x = crr_Syn_Alt $ wrap_Alt (sem_Alt x) (Inh_Alt {inhchk_Inh_Alt=inhchk})
+
+
+
+deriving instance Typeable Syn_AGItf
+
+
+
 crmodCheck'
   :: Inh_AGItf
      -> Mod
@@ -32,17 +52,24 @@
               inh
 
 
+
+
+-- | Not all AST datatypes are expressed as AG, inherited info therefore implemented manually
+data InhChk
+  = InhChk
+      { nm2refInhChk	:: Nm2RefMp		-- ^ name to ref mapping
+      , impNmLkupInhChk :: Maybe (HsName -> Maybe Int)
+      }
+
 -- AGItf -------------------------------------------------------
 {-
    visit 0:
       inherited attributes:
-         moduleNm             : HsName
-         opts                 : EHCOpts
+         moduleNr             : Maybe Int
+         nm2ref               : Nm2RefMp
       synthesized attributes:
-         hasMain              : Bool
-         impModNmL            : [HsName]
-         mod                  : ModImpExp.Mod
-         realModuleNm         : HsName
+         crr                  : Mod 
+         nm2refGath           : Nm2RefMp
    alternatives:
       alternative AGItf:
          child module         : Mod 
@@ -53,43 +80,46 @@
 sem_AGItf (AGItf_AGItf _module) =
     (sem_AGItf_AGItf (sem_Mod _module))
 -- semantic domain
-type T_AGItf = HsName ->
-               EHCOpts ->
-               ( Bool,([HsName]),(ModImpExp.Mod),HsName)
-data Inh_AGItf = Inh_AGItf {moduleNm_Inh_AGItf :: !(HsName),opts_Inh_AGItf :: !(EHCOpts)}
-data Syn_AGItf = Syn_AGItf {hasMain_Syn_AGItf :: !(Bool),impModNmL_Syn_AGItf :: !(([HsName])),mod_Syn_AGItf :: !((ModImpExp.Mod)),realModuleNm_Syn_AGItf :: !(HsName)}
+type T_AGItf = (Maybe Int) ->
+               Nm2RefMp ->
+               ( Mod,Nm2RefMp)
+data Inh_AGItf = Inh_AGItf {moduleNr_Inh_AGItf :: !((Maybe Int)),nm2ref_Inh_AGItf :: !(Nm2RefMp)}
+data Syn_AGItf = Syn_AGItf {crr_Syn_AGItf :: !(Mod),nm2refGath_Syn_AGItf :: !(Nm2RefMp)}
 wrap_AGItf :: T_AGItf ->
               Inh_AGItf ->
               Syn_AGItf
-wrap_AGItf sem (Inh_AGItf _lhsImoduleNm _lhsIopts) =
-    (let ( _lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOrealModuleNm) = sem _lhsImoduleNm _lhsIopts
-     in  (Syn_AGItf _lhsOhasMain _lhsOimpModNmL _lhsOmod _lhsOrealModuleNm))
+wrap_AGItf sem (Inh_AGItf _lhsImoduleNr _lhsInm2ref) =
+    (let ( _lhsOcrr,_lhsOnm2refGath) = sem _lhsImoduleNr _lhsInm2ref
+     in  (Syn_AGItf _lhsOcrr _lhsOnm2refGath))
 sem_AGItf_AGItf :: T_Mod ->
                    T_AGItf
 sem_AGItf_AGItf module_ =
-    (\ _lhsImoduleNm
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _moduleOopts ->
-          (case (_lhsImoduleNm) of
-           { _moduleOmoduleNm ->
-           (case (module_ _moduleOmoduleNm _moduleOopts) of
-            { ( _moduleIhasMain,_moduleIimpModNmL,_moduleImod,_moduleIrealModuleNm) ->
-                (case (_moduleIhasMain) of
-                 { _lhsOhasMain ->
-                 (case (_moduleIimpModNmL) of
-                  { _lhsOimpModNmL ->
-                  (case (_moduleImod) of
-                   { _lhsOmod ->
-                   (case (_moduleIrealModuleNm) of
-                    { _lhsOrealModuleNm ->
-                    ( _lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOrealModuleNm) }) }) }) }) }) }) }))
+    (\ _lhsImoduleNr
+       _lhsInm2ref ->
+         (case (_lhsInm2ref) of
+          { _moduleOnm2ref ->
+          (case (_lhsImoduleNr) of
+           { _moduleOmoduleNr ->
+           (case (module_ _moduleOmoduleNr _moduleOnm2ref) of
+            { ( _moduleIcrr,_moduleInm2refGath) ->
+                (case (_moduleIcrr) of
+                 { _lhsOcrr ->
+                 (case (_moduleInm2refGath) of
+                  { _lhsOnm2refGath ->
+                  ( _lhsOcrr,_lhsOnm2refGath) }) }) }) }) }))
 -- Alt ---------------------------------------------------------
 {-
+   visit 0:
+      inherited attribute:
+         inhchk               : InhChk
+      synthesized attribute:
+         crr                  : Alt 
    alternatives:
       alternative Alt:
          child ref2nm         : {Ref2Nm}
          child expr           : Exp 
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_Alt :: Alt ->
@@ -97,18 +127,41 @@
 sem_Alt (Alt_Alt _ref2nm _expr) =
     (sem_Alt_Alt _ref2nm (sem_Exp _expr))
 -- semantic domain
-type T_Alt = ( )
+type T_Alt = InhChk ->
+             ( Alt)
+data Inh_Alt = Inh_Alt {inhchk_Inh_Alt :: !(InhChk)}
+data Syn_Alt = Syn_Alt {crr_Syn_Alt :: !(Alt)}
+wrap_Alt :: T_Alt ->
+            Inh_Alt ->
+            Syn_Alt
+wrap_Alt sem (Inh_Alt _lhsIinhchk) =
+    (let ( _lhsOcrr) = sem _lhsIinhchk
+     in  (Syn_Alt _lhsOcrr))
 sem_Alt_Alt :: Ref2Nm ->
                T_Exp ->
                T_Alt
 sem_Alt_Alt ref2nm_ expr_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _exprOinhchk ->
+          (case (expr_ _exprOinhchk) of
+           { ( _exprIcrr) ->
+               (case (Alt_Alt ref2nm_ _exprIcrr) of
+                { _crr ->
+                (case (_crr) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 -- DataCon -----------------------------------------------------
 {-
+   visit 0:
+      synthesized attribute:
+         crr                  : DataCon 
    alternatives:
       alternative Con:
          child conNm          : {HsName}
          child tagNr          : {Int}
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_DataCon :: DataCon ->
@@ -116,19 +169,30 @@
 sem_DataCon (DataCon_Con _conNm _tagNr) =
     (sem_DataCon_Con _conNm _tagNr)
 -- semantic domain
-type T_DataCon = ( )
+type T_DataCon = ( DataCon)
 sem_DataCon_Con :: HsName ->
                    Int ->
                    T_DataCon
 sem_DataCon_Con conNm_ tagNr_ =
-    ( )
+    (case (DataCon_Con conNm_ tagNr_) of
+     { _crr ->
+     (case (_crr) of
+      { _lhsOcrr ->
+      ( _lhsOcrr) }) })
 -- DataConL ----------------------------------------------------
 {-
+   visit 0:
+      synthesized attribute:
+         crr                  : DataConL 
    alternatives:
       alternative Cons:
          child hd             : DataCon 
          child tl             : DataConL 
+         visit 0:
+            local crr         : _
       alternative Nil:
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_DataConL :: DataConL ->
@@ -136,47 +200,82 @@
 sem_DataConL list =
     (Prelude.foldr sem_DataConL_Cons sem_DataConL_Nil (Prelude.map sem_DataCon list))
 -- semantic domain
-type T_DataConL = ( )
+type T_DataConL = ( DataConL)
 sem_DataConL_Cons :: T_DataCon ->
                      T_DataConL ->
                      T_DataConL
 sem_DataConL_Cons hd_ tl_ =
-    ( )
+    (case (tl_) of
+     { ( _tlIcrr) ->
+         (case (hd_) of
+          { ( _hdIcrr) ->
+              (case ((:) _hdIcrr _tlIcrr) of
+               { _crr ->
+               (case (_crr) of
+                { _lhsOcrr ->
+                ( _lhsOcrr) }) }) }) })
 sem_DataConL_Nil :: T_DataConL
 sem_DataConL_Nil =
-    ( )
+    (case ([]) of
+     { _crr ->
+     (case (_crr) of
+      { _lhsOcrr ->
+      ( _lhsOcrr) }) })
 -- Exp ---------------------------------------------------------
 {-
+   visit 0:
+      inherited attribute:
+         inhchk               : InhChk
+      synthesized attribute:
+         crr                  : Exp 
    alternatives:
       alternative SExp:
          child sexpr          : SExp 
+         visit 0:
+            local crr         : _
       alternative Tup:
          child tag            : {Int}
          child args           : {CRArray SExp}
+         visit 0:
+            local crr         : _
       alternative Let:
          child firstOff       : {Int}
          child ref2nm         : {Ref2Nm}
          child binds          : {CRArray Bind}
          child body           : Exp 
+         visit 0:
+            local crr         : _
       alternative App:
          child func           : Exp 
          child args           : {CRArray SExp}
+         visit 0:
+            local crr         : _
       alternative Lam:
          child mbNm           : {Maybe HsName}
          child nrArgs         : {Int}
          child stkDepth       : {Int}
          child ref2nm         : {Ref2Nm}
          child body           : Exp 
+         visit 0:
+            local crr         : _
       alternative Force:
          child expr           : Exp 
+         visit 0:
+            local crr         : _
       alternative Tail:
          child expr           : Exp 
+         visit 0:
+            local crr         : _
       alternative Case:
          child expr           : SExp 
          child alts           : {CRArray Alt}
+         visit 0:
+            local crr         : _
       alternative FFI:
          child prim           : {RunPrim}
          child args           : {CRArray SExp}
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_Exp :: Exp ->
@@ -200,28 +299,69 @@
 sem_Exp (Exp_FFI _prim _args) =
     (sem_Exp_FFI _prim _args)
 -- semantic domain
-type T_Exp = ( )
+type T_Exp = InhChk ->
+             ( Exp)
+data Inh_Exp = Inh_Exp {inhchk_Inh_Exp :: !(InhChk)}
+data Syn_Exp = Syn_Exp {crr_Syn_Exp :: !(Exp)}
+wrap_Exp :: T_Exp ->
+            Inh_Exp ->
+            Syn_Exp
+wrap_Exp sem (Inh_Exp _lhsIinhchk) =
+    (let ( _lhsOcrr) = sem _lhsIinhchk
+     in  (Syn_Exp _lhsOcrr))
 sem_Exp_SExp :: T_SExp ->
                 T_Exp
 sem_Exp_SExp sexpr_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _sexprOinhchk ->
+          (case (sexpr_ _sexprOinhchk) of
+           { ( _sexprIcrr) ->
+               (case (Exp_SExp _sexprIcrr) of
+                { _crr ->
+                (case (_crr) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_Tup :: Int ->
                (CRArray SExp) ->
                T_Exp
 sem_Exp_Tup tag_ args_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (Exp_Tup tag_ args_) of
+          { _crr ->
+          (case (_crr {args_Exp_Tup = V.map (chkSExp'' _lhsIinhchk) args_}) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 sem_Exp_Let :: Int ->
                Ref2Nm ->
                (CRArray Bind) ->
                T_Exp ->
                T_Exp
 sem_Exp_Let firstOff_ ref2nm_ binds_ body_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _bodyOinhchk ->
+          (case (body_ _bodyOinhchk) of
+           { ( _bodyIcrr) ->
+               (case (Exp_Let firstOff_ ref2nm_ binds_ _bodyIcrr) of
+                { _crr ->
+                (case (_crr {binds_Exp_Let = V.map (chkExp'' _lhsIinhchk) binds_}) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_App :: T_Exp ->
                (CRArray SExp) ->
                T_Exp
 sem_Exp_App func_ args_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _funcOinhchk ->
+          (case (func_ _funcOinhchk) of
+           { ( _funcIcrr) ->
+               (case (Exp_App _funcIcrr args_) of
+                { _crr ->
+                (case (_crr {args_Exp_App = V.map (chkSExp'' _lhsIinhchk) args_}) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_Lam :: (Maybe HsName) ->
                Int ->
                Int ->
@@ -229,34 +369,179 @@
                T_Exp ->
                T_Exp
 sem_Exp_Lam mbNm_ nrArgs_ stkDepth_ ref2nm_ body_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _bodyOinhchk ->
+          (case (body_ _bodyOinhchk) of
+           { ( _bodyIcrr) ->
+               (case (Exp_Lam mbNm_ nrArgs_ stkDepth_ ref2nm_ _bodyIcrr) of
+                { _crr ->
+                (case (_crr) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_Force :: T_Exp ->
                  T_Exp
 sem_Exp_Force expr_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _exprOinhchk ->
+          (case (expr_ _exprOinhchk) of
+           { ( _exprIcrr) ->
+               (case (Exp_Force _exprIcrr) of
+                { _crr ->
+                (case (_crr) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_Tail :: T_Exp ->
                 T_Exp
 sem_Exp_Tail expr_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _exprOinhchk ->
+          (case (expr_ _exprOinhchk) of
+           { ( _exprIcrr) ->
+               (case (Exp_Tail _exprIcrr) of
+                { _crr ->
+                (case (_crr) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_Case :: T_SExp ->
                 (CRArray Alt) ->
                 T_Exp
 sem_Exp_Case expr_ alts_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _exprOinhchk ->
+          (case (expr_ _exprOinhchk) of
+           { ( _exprIcrr) ->
+               (case (Exp_Case _exprIcrr alts_) of
+                { _crr ->
+                (case (_crr {alts_Exp_Case = V.map (chkAlt'' _lhsIinhchk) alts_}) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_Exp_FFI :: RunPrim ->
                (CRArray SExp) ->
                T_Exp
 sem_Exp_FFI prim_ args_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (Exp_FFI prim_ args_) of
+          { _crr ->
+          (case (_crr {args_Exp_FFI = V.map (chkSExp'' _lhsIinhchk) args_}) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
+-- Export ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         moduleNm             : HsName
+         moduleNr             : Maybe Int
+      synthesized attributes:
+         crr                  : Export 
+         nm2refGath           : Nm2RefMp
+   alternatives:
+      alternative Export:
+         child nm             : {HsName}
+         child offset         : {Int}
+         visit 0:
+            local crr         : _
+-}
+-- cata
+sem_Export :: Export ->
+              T_Export
+sem_Export (Export_Export _nm _offset) =
+    (sem_Export_Export _nm _offset)
+-- semantic domain
+type T_Export = HsName ->
+                (Maybe Int) ->
+                ( Export,Nm2RefMp)
+sem_Export_Export :: HsName ->
+                     Int ->
+                     T_Export
+sem_Export_Export nm_ offset_ =
+    (\ _lhsImoduleNm
+       _lhsImoduleNr ->
+         (case (Export_Export nm_ offset_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           (case (RelMap.singleton nm_                                           (RRef_Exp _lhsImoduleNm offset_)) of
+            { _lhsOnm2refGath ->
+            ( _lhsOcrr,_lhsOnm2refGath) }) }) }))
+-- ExportL -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         moduleNm             : HsName
+         moduleNr             : Maybe Int
+      synthesized attributes:
+         crr                  : ExportL 
+         nm2refGath           : Nm2RefMp
+   alternatives:
+      alternative Cons:
+         child hd             : Export 
+         child tl             : ExportL 
+         visit 0:
+            local crr         : _
+      alternative Nil:
+         visit 0:
+            local crr         : _
+-}
+-- cata
+sem_ExportL :: ExportL ->
+               T_ExportL
+sem_ExportL list =
+    (Prelude.foldr sem_ExportL_Cons sem_ExportL_Nil (Prelude.map sem_Export list))
+-- semantic domain
+type T_ExportL = HsName ->
+                 (Maybe Int) ->
+                 ( ExportL,Nm2RefMp)
+sem_ExportL_Cons :: T_Export ->
+                    T_ExportL ->
+                    T_ExportL
+sem_ExportL_Cons hd_ tl_ =
+    (\ _lhsImoduleNm
+       _lhsImoduleNr ->
+         (case (_lhsImoduleNr) of
+          { _tlOmoduleNr ->
+          (case (_lhsImoduleNm) of
+           { _tlOmoduleNm ->
+           (case (tl_ _tlOmoduleNm _tlOmoduleNr) of
+            { ( _tlIcrr,_tlInm2refGath) ->
+                (case (_lhsImoduleNr) of
+                 { _hdOmoduleNr ->
+                 (case (_lhsImoduleNm) of
+                  { _hdOmoduleNm ->
+                  (case (hd_ _hdOmoduleNm _hdOmoduleNr) of
+                   { ( _hdIcrr,_hdInm2refGath) ->
+                       (case ((:) _hdIcrr _tlIcrr) of
+                        { _crr ->
+                        (case (_crr) of
+                         { _lhsOcrr ->
+                         (case (_hdInm2refGath `nm2refUnion` _tlInm2refGath) of
+                          { _lhsOnm2refGath ->
+                          ( _lhsOcrr,_lhsOnm2refGath) }) }) }) }) }) }) }) }) }))
+sem_ExportL_Nil :: T_ExportL
+sem_ExportL_Nil =
+    (\ _lhsImoduleNm
+       _lhsImoduleNr ->
+         (case ([]) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           (case (emptyNm2RefMp) of
+            { _lhsOnm2refGath ->
+            ( _lhsOcrr,_lhsOnm2refGath) }) }) }))
 -- Import ------------------------------------------------------
 {-
    visit 0:
       synthesized attributes:
-         impModNmL            : [HsName]
-         modImpL              : [ModImpExp.ModImp]
+         crr                  : Import 
+         impNmL               : [HsName]
    alternatives:
       alternative Import:
          child nm             : {HsName}
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_Import :: Import ->
@@ -264,26 +549,32 @@
 sem_Import (Import_Import _nm) =
     (sem_Import_Import _nm)
 -- semantic domain
-type T_Import = ( ([HsName]),([ModImpExp.ModImp]))
+type T_Import = ( Import,([HsName]))
 sem_Import_Import :: HsName ->
                      T_Import
 sem_Import_Import nm_ =
-    (case ([nm_]) of
-     { _lhsOimpModNmL ->
-     (case ([ModImpExp.ModImp True nm_ nm_ False [] emptyRange]) of
-      { _lhsOmodImpL ->
-      ( _lhsOimpModNmL,_lhsOmodImpL) }) })
+    (case (Import_Import nm_) of
+     { _crr ->
+     (case (_crr) of
+      { _lhsOcrr ->
+      (case ([nm_]) of
+       { _lhsOimpNmL ->
+       ( _lhsOcrr,_lhsOimpNmL) }) }) })
 -- ImportL -----------------------------------------------------
 {-
    visit 0:
       synthesized attributes:
-         impModNmL            : [HsName]
-         modImpL              : [ModImpExp.ModImp]
+         crr                  : ImportL 
+         impNmL               : [HsName]
    alternatives:
       alternative Cons:
          child hd             : Import 
          child tl             : ImportL 
+         visit 0:
+            local crr         : _
       alternative Nil:
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_ImportL :: ImportL ->
@@ -291,38 +582,46 @@
 sem_ImportL list =
     (Prelude.foldr sem_ImportL_Cons sem_ImportL_Nil (Prelude.map sem_Import list))
 -- semantic domain
-type T_ImportL = ( ([HsName]),([ModImpExp.ModImp]))
+type T_ImportL = ( ImportL,([HsName]))
 sem_ImportL_Cons :: T_Import ->
                     T_ImportL ->
                     T_ImportL
 sem_ImportL_Cons hd_ tl_ =
     (case (tl_) of
-     { ( _tlIimpModNmL,_tlImodImpL) ->
+     { ( _tlIcrr,_tlIimpNmL) ->
          (case (hd_) of
-          { ( _hdIimpModNmL,_hdImodImpL) ->
-              (case (_hdIimpModNmL ++ _tlIimpModNmL) of
-               { _lhsOimpModNmL ->
-               (case (_hdImodImpL ++ _tlImodImpL) of
-                { _lhsOmodImpL ->
-                ( _lhsOimpModNmL,_lhsOmodImpL) }) }) }) })
+          { ( _hdIcrr,_hdIimpNmL) ->
+              (case ((:) _hdIcrr _tlIcrr) of
+               { _crr ->
+               (case (_crr) of
+                { _lhsOcrr ->
+                (case (_hdIimpNmL ++ _tlIimpNmL) of
+                 { _lhsOimpNmL ->
+                 ( _lhsOcrr,_lhsOimpNmL) }) }) }) }) })
 sem_ImportL_Nil :: T_ImportL
 sem_ImportL_Nil =
     (case ([]) of
-     { _lhsOimpModNmL ->
-     (case ([]) of
-      { _lhsOmodImpL ->
-      ( _lhsOimpModNmL,_lhsOmodImpL) }) })
+     { _crr ->
+     (case (_crr) of
+      { _lhsOcrr ->
+      (case ([]) of
+       { _lhsOimpNmL ->
+       ( _lhsOcrr,_lhsOimpNmL) }) }) })
 -- MbExp -------------------------------------------------------
 {-
    visit 0:
       inherited attribute:
-         opts                 : EHCOpts
+         inhchk               : InhChk
       synthesized attribute:
-         isJust               : Bool
+         crr                  : MbExp 
    alternatives:
       alternative Just:
          child just           : Exp 
+         visit 0:
+            local crr         : _
       alternative Nothing:
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_MbExp :: MbExp ->
@@ -332,27 +631,40 @@
 sem_MbExp Prelude.Nothing =
     sem_MbExp_Nothing
 -- semantic domain
-type T_MbExp = EHCOpts ->
-               ( Bool)
+type T_MbExp = InhChk ->
+               ( MbExp)
 sem_MbExp_Just :: T_Exp ->
                   T_MbExp
 sem_MbExp_Just just_ =
-    (\ _lhsIopts ->
-         (case (True) of
-          { _lhsOisJust ->
-          ( _lhsOisJust) }))
+    (\ _lhsIinhchk ->
+         (case (_lhsIinhchk) of
+          { _justOinhchk ->
+          (case (just_ _justOinhchk) of
+           { ( _justIcrr) ->
+               (case (Just _justIcrr) of
+                { _crr ->
+                (case (_crr) of
+                 { _lhsOcrr ->
+                 ( _lhsOcrr) }) }) }) }))
 sem_MbExp_Nothing :: T_MbExp
 sem_MbExp_Nothing =
-    (\ _lhsIopts ->
-         (case (False) of
-          { _lhsOisJust ->
-          ( _lhsOisJust) }))
+    (\ _lhsIinhchk ->
+         (case (Nothing) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 -- Meta --------------------------------------------------------
 {-
+   visit 0:
+      synthesized attribute:
+         crr                  : Meta 
    alternatives:
       alternative Data:
          child tyNm           : {HsName}
          child dataCons       : DataConL 
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_Meta :: Meta ->
@@ -360,19 +672,32 @@
 sem_Meta (Meta_Data _tyNm _dataCons) =
     (sem_Meta_Data _tyNm (sem_DataConL _dataCons))
 -- semantic domain
-type T_Meta = ( )
+type T_Meta = ( Meta)
 sem_Meta_Data :: HsName ->
                  T_DataConL ->
                  T_Meta
 sem_Meta_Data tyNm_ dataCons_ =
-    ( )
+    (case (dataCons_) of
+     { ( _dataConsIcrr) ->
+         (case (Meta_Data tyNm_ _dataConsIcrr) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }) })
 -- MetaL -------------------------------------------------------
 {-
+   visit 0:
+      synthesized attribute:
+         crr                  : MetaL 
    alternatives:
       alternative Cons:
          child hd             : Meta 
          child tl             : MetaL 
+         visit 0:
+            local crr         : _
       alternative Nil:
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_MetaL :: MetaL ->
@@ -380,86 +705,116 @@
 sem_MetaL list =
     (Prelude.foldr sem_MetaL_Cons sem_MetaL_Nil (Prelude.map sem_Meta list))
 -- semantic domain
-type T_MetaL = ( )
+type T_MetaL = ( MetaL)
 sem_MetaL_Cons :: T_Meta ->
                   T_MetaL ->
                   T_MetaL
 sem_MetaL_Cons hd_ tl_ =
-    ( )
+    (case (tl_) of
+     { ( _tlIcrr) ->
+         (case (hd_) of
+          { ( _hdIcrr) ->
+              (case ((:) _hdIcrr _tlIcrr) of
+               { _crr ->
+               (case (_crr) of
+                { _lhsOcrr ->
+                ( _lhsOcrr) }) }) }) })
 sem_MetaL_Nil :: T_MetaL
 sem_MetaL_Nil =
-    ( )
+    (case ([]) of
+     { _crr ->
+     (case (_crr) of
+      { _lhsOcrr ->
+      ( _lhsOcrr) }) })
 -- Mod ---------------------------------------------------------
 {-
    visit 0:
       inherited attributes:
-         moduleNm             : HsName
-         opts                 : EHCOpts
+         moduleNr             : Maybe Int
+         nm2ref               : Nm2RefMp
       synthesized attributes:
-         hasMain              : Bool
-         impModNmL            : [HsName]
-         mod                  : ModImpExp.Mod
-         realModuleNm         : HsName
+         crr                  : Mod 
+         nm2refGath           : Nm2RefMp
    alternatives:
       alternative Mod:
          child ref2nm         : {Ref2Nm}
          child moduleNm       : {HsName}
-         child moduleNr       : {Int}
+         child moduleNr       : {Maybe Int}
          child stkDepth       : {Int}
          child imports        : ImportL 
+         child exports        : ExportL 
          child metas          : MetaL 
          child binds          : {CRArray Bind}
          child mbbody         : MbExp 
          visit 0:
-            local realModuleNm : _
+            local inhchk      : _
+            local crr         : _
 -}
 -- cata
 sem_Mod :: Mod ->
            T_Mod
-sem_Mod (Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth _imports _metas _binds _mbbody) =
-    (sem_Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth (sem_ImportL _imports) (sem_MetaL _metas) _binds (sem_MbExp _mbbody))
+sem_Mod (Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth _imports _exports _metas _binds _mbbody) =
+    (sem_Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth (sem_ImportL _imports) (sem_ExportL _exports) (sem_MetaL _metas) _binds (sem_MbExp _mbbody))
 -- semantic domain
-type T_Mod = HsName ->
-             EHCOpts ->
-             ( Bool,([HsName]),(ModImpExp.Mod),HsName)
+type T_Mod = (Maybe Int) ->
+             Nm2RefMp ->
+             ( Mod,Nm2RefMp)
+data Inh_Mod = Inh_Mod {moduleNr_Inh_Mod :: !((Maybe Int)),nm2ref_Inh_Mod :: !(Nm2RefMp)}
+data Syn_Mod = Syn_Mod {crr_Syn_Mod :: !(Mod),nm2refGath_Syn_Mod :: !(Nm2RefMp)}
+wrap_Mod :: T_Mod ->
+            Inh_Mod ->
+            Syn_Mod
+wrap_Mod sem (Inh_Mod _lhsImoduleNr _lhsInm2ref) =
+    (let ( _lhsOcrr,_lhsOnm2refGath) = sem _lhsImoduleNr _lhsInm2ref
+     in  (Syn_Mod _lhsOcrr _lhsOnm2refGath))
 sem_Mod_Mod :: Ref2Nm ->
                HsName ->
-               Int ->
+               (Maybe Int) ->
                Int ->
                T_ImportL ->
+               T_ExportL ->
                T_MetaL ->
                (CRArray Bind) ->
                T_MbExp ->
                T_Mod
-sem_Mod_Mod ref2nm_ moduleNm_ moduleNr_ stkDepth_ imports_ metas_ binds_ mbbody_ =
-    (\ _lhsImoduleNm
-       _lhsIopts ->
-         (case (_lhsIopts) of
-          { _mbbodyOopts ->
-          (case (mbbody_ _mbbodyOopts) of
-           { ( _mbbodyIisJust) ->
-               (case (_mbbodyIisJust) of
-                { _lhsOhasMain ->
-                (case (imports_) of
-                 { ( _importsIimpModNmL,_importsImodImpL) ->
-                     (case (_importsIimpModNmL) of
-                      { _lhsOimpModNmL ->
-                      (case (moduleNm_) of
-                       { _realModuleNm ->
-                       (case (ModImpExp.Mod
-                                  _realModuleNm (Just _realModuleNm) Nothing _importsImodImpL
-                                  Rel.empty
-                                  Rel.empty
-                                  []) of
-                        { _lhsOmod ->
-                        (case (_realModuleNm) of
-                         { _lhsOrealModuleNm ->
-                         ( _lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOrealModuleNm) }) }) }) }) }) }) }) }))
+sem_Mod_Mod ref2nm_ moduleNm_ moduleNr_ stkDepth_ imports_ exports_ metas_ binds_ mbbody_ =
+    (\ _lhsImoduleNr
+       _lhsInm2ref ->
+         (case (imports_) of
+          { ( _importsIcrr,_importsIimpNmL) ->
+              (case (InhChk _lhsInm2ref (Just $ \n -> elemIndex n _importsIimpNmL)) of
+               { _inhchk ->
+               (case (_inhchk) of
+                { _mbbodyOinhchk ->
+                (case (mbbody_ _mbbodyOinhchk) of
+                 { ( _mbbodyIcrr) ->
+                     (case (metas_) of
+                      { ( _metasIcrr) ->
+                          (case (_lhsImoduleNr) of
+                           { _exportsOmoduleNr ->
+                           (case (moduleNm_) of
+                            { _exportsOmoduleNm ->
+                            (case (exports_ _exportsOmoduleNm _exportsOmoduleNr) of
+                             { ( _exportsIcrr,_exportsInm2refGath) ->
+                                 (case (Mod_Mod ref2nm_ moduleNm_ moduleNr_ stkDepth_ _importsIcrr _exportsIcrr _metasIcrr binds_ _mbbodyIcrr) of
+                                  { _crr ->
+                                  (case (_crr {moduleNr_Mod_Mod = _lhsImoduleNr, binds_Mod_Mod = V.map (chkExp'' _inhchk) binds_}) of
+                                   { _lhsOcrr ->
+                                   (case (_exportsInm2refGath) of
+                                    { _lhsOnm2refGath ->
+                                    ( _lhsOcrr,_lhsOnm2refGath) }) }) }) }) }) }) }) }) }) }) }))
 -- Pat ---------------------------------------------------------
 {-
+   visit 0:
+      inherited attribute:
+         inhchk               : InhChk
+      synthesized attribute:
+         crr                  : Pat 
    alternatives:
       alternative Con:
          child tag            : {Int}
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_Pat :: Pat ->
@@ -467,26 +822,49 @@
 sem_Pat (Pat_Con _tag) =
     (sem_Pat_Con _tag)
 -- semantic domain
-type T_Pat = ( )
+type T_Pat = InhChk ->
+             ( Pat)
 sem_Pat_Con :: Int ->
                T_Pat
 sem_Pat_Con tag_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (Pat_Con tag_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 -- SExp --------------------------------------------------------
 {-
+   visit 0:
+      inherited attribute:
+         inhchk               : InhChk
+      synthesized attribute:
+         crr                  : SExp 
    alternatives:
       alternative Var:
          child ref            : {RRef}
+         visit 0:
+            local crr         : _
       alternative Int:
          child int            : {Int}
+         visit 0:
+            local crr         : _
       alternative Char:
          child char           : {Char}
+         visit 0:
+            local crr         : _
       alternative String:
          child str            : {String}
+         visit 0:
+            local crr         : _
       alternative Integer:
          child integer        : {Integer}
+         visit 0:
+            local crr         : _
       alternative Dbg:
          child msg            : {String}
+         visit 0:
+            local crr         : _
 -}
 -- cata
 sem_SExp :: SExp ->
@@ -504,28 +882,67 @@
 sem_SExp (SExp_Dbg _msg) =
     (sem_SExp_Dbg _msg)
 -- semantic domain
-type T_SExp = ( )
+type T_SExp = InhChk ->
+              ( SExp)
+data Inh_SExp = Inh_SExp {inhchk_Inh_SExp :: !(InhChk)}
+data Syn_SExp = Syn_SExp {crr_Syn_SExp :: !(SExp)}
+wrap_SExp :: T_SExp ->
+             Inh_SExp ->
+             Syn_SExp
+wrap_SExp sem (Inh_SExp _lhsIinhchk) =
+    (let ( _lhsOcrr) = sem _lhsIinhchk
+     in  (Syn_SExp _lhsOcrr))
 sem_SExp_Var :: RRef ->
                 T_SExp
 sem_SExp_Var ref_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (SExp_Var ref_) of
+          { _crr ->
+          (case (_crr {ref_SExp_Var = rrefResolveUnr (impNmLkupInhChk _lhsIinhchk) (nm2refInhChk _lhsIinhchk) ref_}) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 sem_SExp_Int :: Int ->
                 T_SExp
 sem_SExp_Int int_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (SExp_Int int_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 sem_SExp_Char :: Char ->
                  T_SExp
 sem_SExp_Char char_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (SExp_Char char_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 sem_SExp_String :: String ->
                    T_SExp
 sem_SExp_String str_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (SExp_String str_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 sem_SExp_Integer :: Integer ->
                     T_SExp
 sem_SExp_Integer integer_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (SExp_Integer integer_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
 sem_SExp_Dbg :: String ->
                 T_SExp
 sem_SExp_Dbg msg_ =
-    ( )
+    (\ _lhsIinhchk ->
+         (case (SExp_Dbg msg_) of
+          { _crr ->
+          (case (_crr) of
+           { _lhsOcrr ->
+           ( _lhsOcrr) }) }))
diff --git a/src/UHC/Light/Compiler/CoreRun/ModImpExp.hs b/src/UHC/Light/Compiler/CoreRun/ModImpExp.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/CoreRun/ModImpExp.hs
@@ -0,0 +1,565 @@
+
+
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun/ModImp)
+module UHC.Light.Compiler.CoreRun.ModImpExp(crmodImpExp', Inh_AGItf (..), Syn_AGItf (..)) where
+
+import UHC.Light.Compiler.Base.Common
+import UHC.Light.Compiler.Opts
+import UHC.Light.Compiler.Error
+import UHC.Light.Compiler.CoreRun
+import qualified UHC.Util.Rel as Rel
+import qualified UHC.Util.RelMap as RelMap
+import qualified UHC.Light.Compiler.Module.ImportExport as ModImpExp
+
+
+
+
+
+
+
+
+
+
+
+
+deriving instance Typeable Syn_AGItf
+
+
+
+crmodImpExp'
+  :: Inh_AGItf
+     -> Mod
+     -> Syn_AGItf
+crmodImpExp' inh crmod
+  = t
+  where t = wrap_AGItf
+              (sem_AGItf (AGItf_AGItf crmod))
+              inh
+
+
+-- AGItf -------------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         moduleNm             : HsName
+      synthesized attributes:
+         hasMain              : Bool
+         impModNmL            : [HsName]
+         mod                  : ModImpExp.Mod
+         realModuleNm         : HsName
+   alternatives:
+      alternative AGItf:
+         child module         : Mod 
+-}
+-- cata
+sem_AGItf :: AGItf ->
+             T_AGItf
+sem_AGItf (AGItf_AGItf _module) =
+    (sem_AGItf_AGItf (sem_Mod _module))
+-- semantic domain
+type T_AGItf = HsName ->
+               ( Bool,([HsName]),(ModImpExp.Mod),HsName)
+data Inh_AGItf = Inh_AGItf {moduleNm_Inh_AGItf :: !(HsName)}
+data Syn_AGItf = Syn_AGItf {hasMain_Syn_AGItf :: !(Bool),impModNmL_Syn_AGItf :: !(([HsName])),mod_Syn_AGItf :: !((ModImpExp.Mod)),realModuleNm_Syn_AGItf :: !(HsName)}
+wrap_AGItf :: T_AGItf ->
+              Inh_AGItf ->
+              Syn_AGItf
+wrap_AGItf sem (Inh_AGItf _lhsImoduleNm) =
+    (let ( _lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOrealModuleNm) = sem _lhsImoduleNm
+     in  (Syn_AGItf _lhsOhasMain _lhsOimpModNmL _lhsOmod _lhsOrealModuleNm))
+sem_AGItf_AGItf :: T_Mod ->
+                   T_AGItf
+sem_AGItf_AGItf module_ =
+    (\ _lhsImoduleNm ->
+         (case (_lhsImoduleNm) of
+          { _moduleOmoduleNm ->
+          (case (module_ _moduleOmoduleNm) of
+           { ( _moduleIhasMain,_moduleIimpModNmL,_moduleImod,_moduleIrealModuleNm) ->
+               (case (_moduleIhasMain) of
+                { _lhsOhasMain ->
+                (case (_moduleIimpModNmL) of
+                 { _lhsOimpModNmL ->
+                 (case (_moduleImod) of
+                  { _lhsOmod ->
+                  (case (_moduleIrealModuleNm) of
+                   { _lhsOrealModuleNm ->
+                   ( _lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOrealModuleNm) }) }) }) }) }) }))
+-- Alt ---------------------------------------------------------
+{-
+   alternatives:
+      alternative Alt:
+         child ref2nm         : {Ref2Nm}
+         child expr           : Exp 
+-}
+-- cata
+sem_Alt :: Alt ->
+           T_Alt
+sem_Alt (Alt_Alt _ref2nm _expr) =
+    (sem_Alt_Alt _ref2nm (sem_Exp _expr))
+-- semantic domain
+type T_Alt = ( )
+sem_Alt_Alt :: Ref2Nm ->
+               T_Exp ->
+               T_Alt
+sem_Alt_Alt ref2nm_ expr_ =
+    ( )
+-- DataCon -----------------------------------------------------
+{-
+   alternatives:
+      alternative Con:
+         child conNm          : {HsName}
+         child tagNr          : {Int}
+-}
+-- cata
+sem_DataCon :: DataCon ->
+               T_DataCon
+sem_DataCon (DataCon_Con _conNm _tagNr) =
+    (sem_DataCon_Con _conNm _tagNr)
+-- semantic domain
+type T_DataCon = ( )
+sem_DataCon_Con :: HsName ->
+                   Int ->
+                   T_DataCon
+sem_DataCon_Con conNm_ tagNr_ =
+    ( )
+-- DataConL ----------------------------------------------------
+{-
+   alternatives:
+      alternative Cons:
+         child hd             : DataCon 
+         child tl             : DataConL 
+      alternative Nil:
+-}
+-- cata
+sem_DataConL :: DataConL ->
+                T_DataConL
+sem_DataConL list =
+    (Prelude.foldr sem_DataConL_Cons sem_DataConL_Nil (Prelude.map sem_DataCon list))
+-- semantic domain
+type T_DataConL = ( )
+sem_DataConL_Cons :: T_DataCon ->
+                     T_DataConL ->
+                     T_DataConL
+sem_DataConL_Cons hd_ tl_ =
+    ( )
+sem_DataConL_Nil :: T_DataConL
+sem_DataConL_Nil =
+    ( )
+-- Exp ---------------------------------------------------------
+{-
+   alternatives:
+      alternative SExp:
+         child sexpr          : SExp 
+      alternative Tup:
+         child tag            : {Int}
+         child args           : {CRArray SExp}
+      alternative Let:
+         child firstOff       : {Int}
+         child ref2nm         : {Ref2Nm}
+         child binds          : {CRArray Bind}
+         child body           : Exp 
+      alternative App:
+         child func           : Exp 
+         child args           : {CRArray SExp}
+      alternative Lam:
+         child mbNm           : {Maybe HsName}
+         child nrArgs         : {Int}
+         child stkDepth       : {Int}
+         child ref2nm         : {Ref2Nm}
+         child body           : Exp 
+      alternative Force:
+         child expr           : Exp 
+      alternative Tail:
+         child expr           : Exp 
+      alternative Case:
+         child expr           : SExp 
+         child alts           : {CRArray Alt}
+      alternative FFI:
+         child prim           : {RunPrim}
+         child args           : {CRArray SExp}
+-}
+-- cata
+sem_Exp :: Exp ->
+           T_Exp
+sem_Exp (Exp_SExp _sexpr) =
+    (sem_Exp_SExp (sem_SExp _sexpr))
+sem_Exp (Exp_Tup _tag _args) =
+    (sem_Exp_Tup _tag _args)
+sem_Exp (Exp_Let _firstOff _ref2nm _binds _body) =
+    (sem_Exp_Let _firstOff _ref2nm _binds (sem_Exp _body))
+sem_Exp (Exp_App _func _args) =
+    (sem_Exp_App (sem_Exp _func) _args)
+sem_Exp (Exp_Lam _mbNm _nrArgs _stkDepth _ref2nm _body) =
+    (sem_Exp_Lam _mbNm _nrArgs _stkDepth _ref2nm (sem_Exp _body))
+sem_Exp (Exp_Force _expr) =
+    (sem_Exp_Force (sem_Exp _expr))
+sem_Exp (Exp_Tail _expr) =
+    (sem_Exp_Tail (sem_Exp _expr))
+sem_Exp (Exp_Case _expr _alts) =
+    (sem_Exp_Case (sem_SExp _expr) _alts)
+sem_Exp (Exp_FFI _prim _args) =
+    (sem_Exp_FFI _prim _args)
+-- semantic domain
+type T_Exp = ( )
+sem_Exp_SExp :: T_SExp ->
+                T_Exp
+sem_Exp_SExp sexpr_ =
+    ( )
+sem_Exp_Tup :: Int ->
+               (CRArray SExp) ->
+               T_Exp
+sem_Exp_Tup tag_ args_ =
+    ( )
+sem_Exp_Let :: Int ->
+               Ref2Nm ->
+               (CRArray Bind) ->
+               T_Exp ->
+               T_Exp
+sem_Exp_Let firstOff_ ref2nm_ binds_ body_ =
+    ( )
+sem_Exp_App :: T_Exp ->
+               (CRArray SExp) ->
+               T_Exp
+sem_Exp_App func_ args_ =
+    ( )
+sem_Exp_Lam :: (Maybe HsName) ->
+               Int ->
+               Int ->
+               Ref2Nm ->
+               T_Exp ->
+               T_Exp
+sem_Exp_Lam mbNm_ nrArgs_ stkDepth_ ref2nm_ body_ =
+    ( )
+sem_Exp_Force :: T_Exp ->
+                 T_Exp
+sem_Exp_Force expr_ =
+    ( )
+sem_Exp_Tail :: T_Exp ->
+                T_Exp
+sem_Exp_Tail expr_ =
+    ( )
+sem_Exp_Case :: T_SExp ->
+                (CRArray Alt) ->
+                T_Exp
+sem_Exp_Case expr_ alts_ =
+    ( )
+sem_Exp_FFI :: RunPrim ->
+               (CRArray SExp) ->
+               T_Exp
+sem_Exp_FFI prim_ args_ =
+    ( )
+-- Export ------------------------------------------------------
+{-
+   alternatives:
+      alternative Export:
+         child nm             : {HsName}
+         child offset         : {Int}
+-}
+-- cata
+sem_Export :: Export ->
+              T_Export
+sem_Export (Export_Export _nm _offset) =
+    (sem_Export_Export _nm _offset)
+-- semantic domain
+type T_Export = ( )
+sem_Export_Export :: HsName ->
+                     Int ->
+                     T_Export
+sem_Export_Export nm_ offset_ =
+    ( )
+-- ExportL -----------------------------------------------------
+{-
+   alternatives:
+      alternative Cons:
+         child hd             : Export 
+         child tl             : ExportL 
+      alternative Nil:
+-}
+-- cata
+sem_ExportL :: ExportL ->
+               T_ExportL
+sem_ExportL list =
+    (Prelude.foldr sem_ExportL_Cons sem_ExportL_Nil (Prelude.map sem_Export list))
+-- semantic domain
+type T_ExportL = ( )
+sem_ExportL_Cons :: T_Export ->
+                    T_ExportL ->
+                    T_ExportL
+sem_ExportL_Cons hd_ tl_ =
+    ( )
+sem_ExportL_Nil :: T_ExportL
+sem_ExportL_Nil =
+    ( )
+-- Import ------------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         impModNmL            : [HsName]
+         modImpL              : [ModImpExp.ModImp]
+   alternatives:
+      alternative Import:
+         child nm             : {HsName}
+-}
+-- cata
+sem_Import :: Import ->
+              T_Import
+sem_Import (Import_Import _nm) =
+    (sem_Import_Import _nm)
+-- semantic domain
+type T_Import = ( ([HsName]),([ModImpExp.ModImp]))
+sem_Import_Import :: HsName ->
+                     T_Import
+sem_Import_Import nm_ =
+    (case ([nm_]) of
+     { _lhsOimpModNmL ->
+     (case ([ModImpExp.ModImp True nm_ nm_ False [] emptyRange]) of
+      { _lhsOmodImpL ->
+      ( _lhsOimpModNmL,_lhsOmodImpL) }) })
+-- ImportL -----------------------------------------------------
+{-
+   visit 0:
+      synthesized attributes:
+         impModNmL            : [HsName]
+         modImpL              : [ModImpExp.ModImp]
+   alternatives:
+      alternative Cons:
+         child hd             : Import 
+         child tl             : ImportL 
+      alternative Nil:
+-}
+-- cata
+sem_ImportL :: ImportL ->
+               T_ImportL
+sem_ImportL list =
+    (Prelude.foldr sem_ImportL_Cons sem_ImportL_Nil (Prelude.map sem_Import list))
+-- semantic domain
+type T_ImportL = ( ([HsName]),([ModImpExp.ModImp]))
+sem_ImportL_Cons :: T_Import ->
+                    T_ImportL ->
+                    T_ImportL
+sem_ImportL_Cons hd_ tl_ =
+    (case (tl_) of
+     { ( _tlIimpModNmL,_tlImodImpL) ->
+         (case (hd_) of
+          { ( _hdIimpModNmL,_hdImodImpL) ->
+              (case (_hdIimpModNmL ++ _tlIimpModNmL) of
+               { _lhsOimpModNmL ->
+               (case (_hdImodImpL ++ _tlImodImpL) of
+                { _lhsOmodImpL ->
+                ( _lhsOimpModNmL,_lhsOmodImpL) }) }) }) })
+sem_ImportL_Nil :: T_ImportL
+sem_ImportL_Nil =
+    (case ([]) of
+     { _lhsOimpModNmL ->
+     (case ([]) of
+      { _lhsOmodImpL ->
+      ( _lhsOimpModNmL,_lhsOmodImpL) }) })
+-- MbExp -------------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         isJust               : Bool
+   alternatives:
+      alternative Just:
+         child just           : Exp 
+      alternative Nothing:
+-}
+-- cata
+sem_MbExp :: MbExp ->
+             T_MbExp
+sem_MbExp (Prelude.Just x) =
+    (sem_MbExp_Just (sem_Exp x))
+sem_MbExp Prelude.Nothing =
+    sem_MbExp_Nothing
+-- semantic domain
+type T_MbExp = ( Bool)
+sem_MbExp_Just :: T_Exp ->
+                  T_MbExp
+sem_MbExp_Just just_ =
+    (case (True) of
+     { _lhsOisJust ->
+     ( _lhsOisJust) })
+sem_MbExp_Nothing :: T_MbExp
+sem_MbExp_Nothing =
+    (case (False) of
+     { _lhsOisJust ->
+     ( _lhsOisJust) })
+-- Meta --------------------------------------------------------
+{-
+   alternatives:
+      alternative Data:
+         child tyNm           : {HsName}
+         child dataCons       : DataConL 
+-}
+-- cata
+sem_Meta :: Meta ->
+            T_Meta
+sem_Meta (Meta_Data _tyNm _dataCons) =
+    (sem_Meta_Data _tyNm (sem_DataConL _dataCons))
+-- semantic domain
+type T_Meta = ( )
+sem_Meta_Data :: HsName ->
+                 T_DataConL ->
+                 T_Meta
+sem_Meta_Data tyNm_ dataCons_ =
+    ( )
+-- MetaL -------------------------------------------------------
+{-
+   alternatives:
+      alternative Cons:
+         child hd             : Meta 
+         child tl             : MetaL 
+      alternative Nil:
+-}
+-- cata
+sem_MetaL :: MetaL ->
+             T_MetaL
+sem_MetaL list =
+    (Prelude.foldr sem_MetaL_Cons sem_MetaL_Nil (Prelude.map sem_Meta list))
+-- semantic domain
+type T_MetaL = ( )
+sem_MetaL_Cons :: T_Meta ->
+                  T_MetaL ->
+                  T_MetaL
+sem_MetaL_Cons hd_ tl_ =
+    ( )
+sem_MetaL_Nil :: T_MetaL
+sem_MetaL_Nil =
+    ( )
+-- Mod ---------------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         moduleNm             : HsName
+      synthesized attributes:
+         hasMain              : Bool
+         impModNmL            : [HsName]
+         mod                  : ModImpExp.Mod
+         realModuleNm         : HsName
+   alternatives:
+      alternative Mod:
+         child ref2nm         : {Ref2Nm}
+         child moduleNm       : {HsName}
+         child moduleNr       : {Maybe Int}
+         child stkDepth       : {Int}
+         child imports        : ImportL 
+         child exports        : ExportL 
+         child metas          : MetaL 
+         child binds          : {CRArray Bind}
+         child mbbody         : MbExp 
+         visit 0:
+            local realModuleNm : _
+-}
+-- cata
+sem_Mod :: Mod ->
+           T_Mod
+sem_Mod (Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth _imports _exports _metas _binds _mbbody) =
+    (sem_Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth (sem_ImportL _imports) (sem_ExportL _exports) (sem_MetaL _metas) _binds (sem_MbExp _mbbody))
+-- semantic domain
+type T_Mod = HsName ->
+             ( Bool,([HsName]),(ModImpExp.Mod),HsName)
+sem_Mod_Mod :: Ref2Nm ->
+               HsName ->
+               (Maybe Int) ->
+               Int ->
+               T_ImportL ->
+               T_ExportL ->
+               T_MetaL ->
+               (CRArray Bind) ->
+               T_MbExp ->
+               T_Mod
+sem_Mod_Mod ref2nm_ moduleNm_ moduleNr_ stkDepth_ imports_ exports_ metas_ binds_ mbbody_ =
+    (\ _lhsImoduleNm ->
+         (case (mbbody_) of
+          { ( _mbbodyIisJust) ->
+              (case (_mbbodyIisJust) of
+               { _lhsOhasMain ->
+               (case (imports_) of
+                { ( _importsIimpModNmL,_importsImodImpL) ->
+                    (case (_importsIimpModNmL) of
+                     { _lhsOimpModNmL ->
+                     (case (moduleNm_) of
+                      { _realModuleNm ->
+                      (case (ModImpExp.Mod
+                                 _realModuleNm (Just _realModuleNm) Nothing _importsImodImpL
+                                 Rel.empty
+                                 Rel.empty
+                                 []) of
+                       { _lhsOmod ->
+                       (case (_realModuleNm) of
+                        { _lhsOrealModuleNm ->
+                        ( _lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOrealModuleNm) }) }) }) }) }) }) }))
+-- Pat ---------------------------------------------------------
+{-
+   alternatives:
+      alternative Con:
+         child tag            : {Int}
+-}
+-- cata
+sem_Pat :: Pat ->
+           T_Pat
+sem_Pat (Pat_Con _tag) =
+    (sem_Pat_Con _tag)
+-- semantic domain
+type T_Pat = ( )
+sem_Pat_Con :: Int ->
+               T_Pat
+sem_Pat_Con tag_ =
+    ( )
+-- SExp --------------------------------------------------------
+{-
+   alternatives:
+      alternative Var:
+         child ref            : {RRef}
+      alternative Int:
+         child int            : {Int}
+      alternative Char:
+         child char           : {Char}
+      alternative String:
+         child str            : {String}
+      alternative Integer:
+         child integer        : {Integer}
+      alternative Dbg:
+         child msg            : {String}
+-}
+-- cata
+sem_SExp :: SExp ->
+            T_SExp
+sem_SExp (SExp_Var _ref) =
+    (sem_SExp_Var _ref)
+sem_SExp (SExp_Int _int) =
+    (sem_SExp_Int _int)
+sem_SExp (SExp_Char _char) =
+    (sem_SExp_Char _char)
+sem_SExp (SExp_String _str) =
+    (sem_SExp_String _str)
+sem_SExp (SExp_Integer _integer) =
+    (sem_SExp_Integer _integer)
+sem_SExp (SExp_Dbg _msg) =
+    (sem_SExp_Dbg _msg)
+-- semantic domain
+type T_SExp = ( )
+sem_SExp_Var :: RRef ->
+                T_SExp
+sem_SExp_Var ref_ =
+    ( )
+sem_SExp_Int :: Int ->
+                T_SExp
+sem_SExp_Int int_ =
+    ( )
+sem_SExp_Char :: Char ->
+                 T_SExp
+sem_SExp_Char char_ =
+    ( )
+sem_SExp_String :: String ->
+                   T_SExp
+sem_SExp_String str_ =
+    ( )
+sem_SExp_Integer :: Integer ->
+                    T_SExp
+sem_SExp_Integer integer_ =
+    ( )
+sem_SExp_Dbg :: String ->
+                T_SExp
+sem_SExp_Dbg msg_ =
+    ( )
diff --git a/src/UHC/Light/Compiler/CoreRun/Parser.hs b/src/UHC/Light/Compiler/CoreRun/Parser.hs
--- a/src/UHC/Light/Compiler/CoreRun/Parser.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Parser.hs
@@ -32,17 +32,23 @@
 -- | Parse module 'Mod'
 pMod :: EHCOpts -> CRParser Mod
 pMod _
-  = (\nm nr sz main is ms bs -> mkModWithImportsMetas nm nr sz is ms (crarrayFromList bs) main)
-    <$  pMODULE <*> pMaybe (mkHNm "Main") id pDollNm <*> pInt <* pCOMMA <*> pInt <*> pMb (pRARROW *> pExp) <* pSEMI
+  = (\nm {- nr -} sz main is es ms bs -> mkModWithImportsExportsMetas nm Nothing {- nr -} sz is es ms (crarrayFromList bs) main)
+    <$  pMODULE <*> pMaybe (mkHNm "Main") id pDollNm <*> {- pMb (pInt <* pCOMMA) <*> -} pInt <*> pMb (pRARROW *> pExp) <* pSEMI
     <*> pList (pImport <* pSEMI)
+    <*> pList (pExport <* pSEMI)
     <*> pList (pMeta <* pSEMI)
     <*> pList (pExp <* pSEMI)
 
 -- | Parse 'Import'
 pImport :: CRParser Import
 pImport
-  = Import_Import <$ pIMPORT <*> pDollNm
+  = Import_Import <$ pIMPORT <*> pDifficultNm
 
+-- | Parse 'Export'
+pExport :: CRParser Export
+pExport
+  = Export_Export <$ pEXPORT <*> pDifficultNm <* pEQUAL <*> pInt
+
 -- | Parse 'Meta'
 pMeta :: CRParser Meta
 pMeta
@@ -59,6 +65,7 @@
   <|> (mkChar' . head) <$> pChar
   <|> mkString' <$> pString
   <|> mkVar' <$> pRRef
+  <|> mkDbg' <$ pKeyTk "dbg" <*> pString
 
 -- | Parse expression 'Exp'
 pExp :: CRParser Exp
@@ -72,7 +79,6 @@
                <|> mkTup <$ pKeyTk "alloc" <*> pInt
                <|> mkFFI <$ pKeyTk "ffi"   <*> pString
                ) <*> pParens (pListSep pCOMMA pSExp)
-           <|> dbg <$ pKeyTk "dbg" <*> pString
            <|> mkCase <$ pCASE <*> pSExp <* pOF <*> pList1 (pRARROW *> pE <* pSEMI)
            <|> mkLet  <$ pLET  <*> pInt  <* pRARROW <*> pList1 (pE <* pSEMI) <* pIN <*> pE
            <|> mkLam  <$ pLAM  <*> pInt  <* pCOMMA <*> pInt <* pRARROW <*> pE
@@ -88,6 +94,10 @@
                  ) <* pDOT <*> pInt <* pDOT <*> pInt
                )
            <|> ( mkModRef <$ pKeyTk "m" <* pDOT <*> pInt
+               )
+           <|> ( mkExpRef <$ pKeyTk "e" <* pDOT <*> pDifficultNm <* pDOT <*> pInt
+               )
+           <|> ( RRef_Unr <$ pKeyTk "u" <* pDOT <*> pDifficultNm
                )
         pS = pDOT
               *> (   RRef_Tag <$ pKeyTk "tag"
diff --git a/src/UHC/Light/Compiler/CoreRun/Pretty.hs b/src/UHC/Light/Compiler/CoreRun/Pretty.hs
--- a/src/UHC/Light/Compiler/CoreRun/Pretty.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Pretty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun/Pretty)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/CoreRun/Pretty)
 module UHC.Light.Compiler.CoreRun.Pretty(ppMod', ppExp') where
 
 import UHC.Util.Pretty
@@ -51,7 +51,9 @@
 
 -- | PP using InhPP
 ppRRef :: InhPP -> RRef -> PP_Doc
-ppRRef inhpp r = ppMbPost ppCurly (ref2nmLookup r $ r2nInhPP inhpp) r
+-- ppRRef inhpp r = ppMbPost ppCurly (ref2nmLookup r $ r2nInhPP inhpp) r
+-- ppRRef inhpp r = {- ppMbPost ppCurly (ref2nmLookup r $ r2nInhPP inhpp) -} pp r
+ppRRef inhpp r = ppCmtExtra inhpp (maybe (pp "?") pp $ ref2nmLookup r $ r2nInhPP inhpp) $ pp r
 
 
 
@@ -131,7 +133,8 @@
 instance PP RRef where
   pp (RRef_Glb m e) = ppDots [pp "g", pp m, pp e]
   pp (RRef_Imp m e) = ppDots [pp "i", pp m, pp e]
-  pp (RRef_Exp m e) = ppDots [pp m, pp e]
+  pp (RRef_Exp m e) = ppDots [pp "e", ppDifficultNm m, pp e]
+  pp (RRef_Unr n  ) = ppDots [pp "u", ppDifficultNm n]
   pp (RRef_Mod e  ) = ppDots [pp "m", pp e]
   pp (RRef_Loc l e) = ppDots [pp "l", pp l, pp e]
   pp (RRef_LDf l e) = ppDots [pp "d", pp l, pp e]
@@ -145,7 +148,7 @@
 ppBindItems bs = vlist [ ppSemi b | b <- bs ]
 
 ppBinds''' :: InhPP -> (Int -> PP_Doc) -> Int -> AssocL Int PP_Doc -> PP_Doc
-ppBinds''' inhpp mkr off bs = ppBindItems [ ppCmtExtra inhpp ((mkr $ off+i)) e | (i,e) <- bs ]
+ppBinds''' inhpp mkr off bs = ppBindItems [ ppCmtExtra inhpp (mkr $ off+i) e | (i,e) <- bs ]
 
 ppBinds'' :: InhPP -> (Int -> RRef) -> Int -> CRArray Bind -> PP_Doc
 ppBinds'' inhpp mkr off bs = ppBinds''' inhpp (ppRRef inhpp . mkr) off [ (i, ppExp'' inhpp e) | (i,e) <- craAssocs bs ]
@@ -467,6 +470,82 @@
          (case ("ffi" >#< show (showRunPrim prim_) >|< ppParensCommas (map (ppSExp'' _lhsIinhpp) $ V.toList args_)) of
           { _lhsOpp ->
           ( _lhsOpp) }))
+-- Export ------------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         inhpp                : InhPP
+      synthesized attribute:
+         pp                   : PP_Doc
+   alternatives:
+      alternative Export:
+         child nm             : {HsName}
+         child offset         : {Int}
+-}
+-- cata
+sem_Export :: Export ->
+              T_Export
+sem_Export (Export_Export _nm _offset) =
+    (sem_Export_Export _nm _offset)
+-- semantic domain
+type T_Export = InhPP ->
+                ( PP_Doc)
+sem_Export_Export :: HsName ->
+                     Int ->
+                     T_Export
+sem_Export_Export nm_ offset_ =
+    (\ _lhsIinhpp ->
+         (case ("export" >#< ppDifficultNm nm_ >#< "=" >#< offset_) of
+          { _lhsOpp ->
+          ( _lhsOpp) }))
+-- ExportL -----------------------------------------------------
+{-
+   visit 0:
+      inherited attribute:
+         inhpp                : InhPP
+      synthesized attributes:
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+   alternatives:
+      alternative Cons:
+         child hd             : Export 
+         child tl             : ExportL 
+      alternative Nil:
+-}
+-- cata
+sem_ExportL :: ExportL ->
+               T_ExportL
+sem_ExportL list =
+    (Prelude.foldr sem_ExportL_Cons sem_ExportL_Nil (Prelude.map sem_Export list))
+-- semantic domain
+type T_ExportL = InhPP ->
+                 ( PP_Doc,([PP_Doc]))
+sem_ExportL_Cons :: T_Export ->
+                    T_ExportL ->
+                    T_ExportL
+sem_ExportL_Cons hd_ tl_ =
+    (\ _lhsIinhpp ->
+         (case (_lhsIinhpp) of
+          { _tlOinhpp ->
+          (case (tl_ _tlOinhpp) of
+           { ( _tlIpp,_tlIppL) ->
+               (case (_lhsIinhpp) of
+                { _hdOinhpp ->
+                (case (hd_ _hdOinhpp) of
+                 { ( _hdIpp) ->
+                     (case (_hdIpp >-< _tlIpp) of
+                      { _lhsOpp ->
+                      (case (_hdIpp : _tlIppL) of
+                       { _lhsOppL ->
+                       ( _lhsOpp,_lhsOppL) }) }) }) }) }) }))
+sem_ExportL_Nil :: T_ExportL
+sem_ExportL_Nil =
+    (\ _lhsIinhpp ->
+         (case (empty) of
+          { _lhsOpp ->
+          (case ([]) of
+           { _lhsOppL ->
+           ( _lhsOpp,_lhsOppL) }) }))
 -- Import ------------------------------------------------------
 {-
    visit 0:
@@ -490,7 +569,7 @@
                      T_Import
 sem_Import_Import nm_ =
     (\ _lhsIinhpp ->
-         (case ("import" >#< ppCoreNm nm_) of
+         (case ("import" >#< ppDifficultNm nm_) of
           { _lhsOpp ->
           ( _lhsOpp) }))
 -- ImportL -----------------------------------------------------
@@ -676,9 +755,10 @@
       alternative Mod:
          child ref2nm         : {Ref2Nm}
          child moduleNm       : {HsName}
-         child moduleNr       : {Int}
+         child moduleNr       : {Maybe Int}
          child stkDepth       : {Int}
          child imports        : ImportL 
+         child exports        : ExportL 
          child metas          : MetaL 
          child binds          : {CRArray Bind}
          child mbbody         : MbExp 
@@ -688,8 +768,8 @@
 -- cata
 sem_Mod :: Mod ->
            T_Mod
-sem_Mod (Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth _imports _metas _binds _mbbody) =
-    (sem_Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth (sem_ImportL _imports) (sem_MetaL _metas) _binds (sem_MbExp _mbbody))
+sem_Mod (Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth _imports _exports _metas _binds _mbbody) =
+    (sem_Mod_Mod _ref2nm _moduleNm _moduleNr _stkDepth (sem_ImportL _imports) (sem_ExportL _exports) (sem_MetaL _metas) _binds (sem_MbExp _mbbody))
 -- semantic domain
 type T_Mod = InhPP ->
              ( PP_Doc)
@@ -703,14 +783,15 @@
      in  (Syn_Mod _lhsOpp))
 sem_Mod_Mod :: Ref2Nm ->
                HsName ->
-               Int ->
+               (Maybe Int) ->
                Int ->
                T_ImportL ->
+               T_ExportL ->
                T_MetaL ->
                (CRArray Bind) ->
                T_MbExp ->
                T_Mod
-sem_Mod_Mod ref2nm_ moduleNm_ moduleNr_ stkDepth_ imports_ metas_ binds_ mbbody_ =
+sem_Mod_Mod ref2nm_ moduleNm_ moduleNr_ stkDepth_ imports_ exports_ metas_ binds_ mbbody_ =
     (\ _lhsIinhpp ->
          (case (r2nAdd ref2nm_ _lhsIinhpp) of
           { _inhpp ->
@@ -723,15 +804,20 @@
                  (case (metas_ _metasOinhpp) of
                   { ( _metasIpp,_metasIppL) ->
                       (case (_inhpp) of
-                       { _importsOinhpp ->
-                       (case (imports_ _importsOinhpp) of
-                        { ( _importsIpp,_importsIppL) ->
-                            (case ((ppSemi $ "module" >#< ppCoreNm moduleNm_ >#< ppCommas [moduleNr_, stkDepth_] >|< maybe empty (" ->" >#<) _mbbodyIppMb)
-                                   >-< ppBindItems _importsIppL
-                                   >-< ppBindItems _metasIppL
-                                   >-< ppBinds'' _inhpp (RRef_Glb moduleNr_) 0 binds_) of
-                             { _lhsOpp ->
-                             ( _lhsOpp) }) }) }) }) }) }) }) }))
+                       { _exportsOinhpp ->
+                       (case (exports_ _exportsOinhpp) of
+                        { ( _exportsIpp,_exportsIppL) ->
+                            (case (_inhpp) of
+                             { _importsOinhpp ->
+                             (case (imports_ _importsOinhpp) of
+                              { ( _importsIpp,_importsIppL) ->
+                                  (case ((ppSemi $ "module" >#< ppCoreNm moduleNm_ >#<                                           stkDepth_ >|< maybe empty (" ->" >#<) _mbbodyIppMb)
+                                         >-< ppBindItems _importsIppL
+                                         >-< ppBindItems _exportsIppL
+                                         >-< ppBindItems _metasIppL
+                                         >-< ppBinds'' _inhpp RRef_Mod 0 binds_) of
+                                   { _lhsOpp ->
+                                   ( _lhsOpp) }) }) }) }) }) }) }) }) }) }))
 -- Pat ---------------------------------------------------------
 {-
    visit 0:
diff --git a/src/UHC/Light/Compiler/CoreRun/Run.hs b/src/UHC/Light/Compiler/CoreRun/Run.hs
--- a/src/UHC/Light/Compiler/CoreRun/Run.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Run.hs
@@ -1,12 +1,12 @@
 module UHC.Light.Compiler.CoreRun.Run
-( module Control.Monad.RWS.Strict, module Control.Monad, module Control.Monad.Error
+( module Control.Monad.RWS.Strict, module Control.Monad, module UHC.Util.Error
 , RunRd (..), emptyRunRd
 , RunSt (..), emptyRunSt
 , RunSem (..)
 , rsemTopUpd
 , RunT', RunT
 , err
-, runCoreRun
+, runCoreRun, runCoreRun2
 , modifyIORefM )
 where
 import UHC.Light.Compiler.Base.HsName.Builtin
@@ -16,19 +16,23 @@
 import UHC.Light.Compiler.Error
 import UHC.Light.Compiler.Gam
 import UHC.Light.Compiler.Gam.DataGam
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.CoreRun as CR
 import UHC.Light.Compiler.CoreRun.Prim
 import qualified UHC.Util.FastSeq as Seq
 import qualified Data.Map as Map
+import qualified Data.Set as Set
 import UHC.Util.Pretty
 import Data.Maybe
 import Data.Monoid
 import Data.IORef
+import System.IO
+import Control.Exception
 import Control.Monad
-import Control.Monad.Error
+import UHC.Util.Error
 import Control.Monad.RWS.Strict
 
-{-# LINE 39 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 46 "src/ehc/CoreRun/Run.chs" #-}
 data RunRd
   = RunRd
       {- cenvLamMp       :: LamMp
@@ -37,7 +41,7 @@
 emptyRunRd
   = RunRd
 
-{-# LINE 63 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 70 "src/ehc/CoreRun/Run.chs" #-}
 data RunSt
   = RunSt
       {- cenvLamMp       :: LamMp
@@ -46,7 +50,7 @@
 emptyRunSt
   = RunSt
 
-{-# LINE 73 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 80 "src/ehc/CoreRun/Run.chs" #-}
 -- | Factored out stuff, not much in it but intended to accomodate variability in running
 class (Monad m, MonadIO m, Functor m) => RunSem r s v m a
     --- | r -> a s
@@ -70,6 +74,10 @@
   rsemSetTrace :: Bool -> Bool -> RunT' r s v m ()
   rsemSetTrace _ _ = return ()
 
+  -- | On what is being traced
+  rsemTraceOnS :: RunT' r s v m (Set.Set TraceOn)
+  rsemTraceOnS = return Set.empty
+
   -- | Exp
   rsemExp :: Exp -> RunT' r s v m a
 
@@ -112,23 +120,23 @@
   rsemGcLeaveRootLevel = return ()
   {-# INLINE rsemGcLeaveRootLevel #-}
 
-{-# LINE 140 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 151 "src/ehc/CoreRun/Run.chs" #-}
 -- | Update the top value of the maintained stack
 rsemTopUpd :: RunSem r s v m a => (v -> v) -> a -> RunT' r s v m a
 rsemTopUpd upd x = rsemPop x >>= (rsemPush . upd)
 
-{-# LINE 146 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 157 "src/ehc/CoreRun/Run.chs" #-}
 -- type RunT' s m a = ErrorT Err (RWST r w s m) a
 -- type RunT        m a = RunT' RunRd RunWr RunSt m a
 -- type RunT' s m a = ErrorT Err (StateT s m) a
 type RunT' r s v m a = ErrorT Err (RWST r () s m) a
 type RunT      v m a = RunT' RunRd RunSt v m a
 
-{-# LINE 158 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 169 "src/ehc/CoreRun/Run.chs" #-}
 err :: (RunSem r s v m a, PP msg) => msg -> RunT' r s v m b
 err msg = throwError $ rngLift emptyRange Err_PP $ pp msg
 
-{-# LINE 168 "src/ehc/CoreRun/Run.chs" #-}
+{-# LINE 179 "src/ehc/CoreRun/Run.chs" #-}
 runCoreRun
   :: forall r s v m a .
      (RunSem r s v m a)
@@ -149,7 +157,31 @@
             r s
   return e
 
-{-# LINE 194 "src/ehc/CoreRun/Run.chs" #-}
+runCoreRun2
+  :: forall r s v m a .
+     (RunSem r s v IO a)
+  => EHCOpts
+     -> [Mod]
+     -> Mod
+     -> RunT' r s v IO a
+     -> IO (Either Err v) -- RunT' r s v m a
+runCoreRun2 opts modImpL mod m = do
+  (r, s, _ :: a) <- rsemInitial
+  -- let s = error "runCoreRun.RWS"
+  --     r = error "runCoreRun.Reader"
+  res <- flip catch (\(e :: SomeException) -> do
+      hFlush stdout >> (return $ Left $ strMsg $ "runCoreRun2: " ++ show e)
+    ) $ do
+    (e, _, _) <-
+      runRWST (runErrorT $ do
+                r' <- rsemSetup opts modImpL mod
+                local (const r') $
+                  (m >>= rsemPop >>= rsemDeref >>= rsemPop))
+              r s
+    return e
+  return res
+
+{-# LINE 229 "src/ehc/CoreRun/Run.chs" #-}
 modifyIORefM :: IORef a -> (a -> IO a) -> IO ()
 modifyIORefM r m = readIORef r >>= m >>= writeIORef r
 {-# INLINE modifyIORefM #-}
diff --git a/src/UHC/Light/Compiler/CoreRun/Run/Val.hs b/src/UHC/Light/Compiler/CoreRun/Run/Val.hs
--- a/src/UHC/Light/Compiler/CoreRun/Run/Val.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Run/Val.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE MagicHash #-}
-{-# LANGUAGE DefaultSignatures, TypeOperators, KindSignatures #-}
+{-# LANGUAGE DefaultSignatures, TypeOperators, KindSignatures, TemplateHaskell #-}
 -- {-# OPTIONS_GHC -O3 #-}
 
 module UHC.Light.Compiler.CoreRun.Run.Val
@@ -21,7 +21,7 @@
 , RValEnv (..), newRValEnv
 , renvResolveModNames
 , renvTopFramePtrM, renvTopFramePtrAndFrameM, renvTopFrameM
-, dumpEnvM
+, dumpEnvM'
 , RValT
 , HSMarshall (..)
 , vecReverseForM_
@@ -31,16 +31,19 @@
 , updTopFrameM
 , renvFrStkPush1, renvFrStkReversePushMV
 , renvFrStkPop1, renvFrStkPopMV, renvFrStkReversePopMV, renvFrStkReversePopInMV
-, rsemTr', rsemTr )
+, rsemTr''
+, rcxtTraceOnS )
 where
 import UHC.Light.Compiler.Base.HsName.Builtin
 import UHC.Light.Compiler.Base.Common
 import UHC.Light.Compiler.Error
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.CoreRun
 import UHC.Light.Compiler.CoreRun.Run
 import UHC.Light.Compiler.CoreRun.Pretty
 import UHC.Util.Pretty as PP
 import UHC.Util.Utils
+import UHC.Util.Lens
 import Control.Monad.Primitive
 import qualified Data.Vector as V
 import qualified Data.Vector.Mutable as MV
@@ -57,9 +60,10 @@
 import GHC.Generics
 import Control.Applicative
 import qualified Data.Map as Map
+import qualified Data.Set as Set
 import Data.Maybe
 
-{-# LINE 71 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 74 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Runtime context: module + enclosing lambda. Note/TBD: reduces performance quite a bit...
 data RCxt
   = RCxt
@@ -70,7 +74,7 @@
 instance Show RCxt where
   show _ = "RCxt"
 
-{-# LINE 83 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 86 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Make fresh 'RCxt' from module and enclosing frame ptr
 mkRCxt :: HpPtr -> HpPtr -> IO RCxt
 mkRCxt m f = liftM2 RCxt (newIORef m) (newIORef f)
@@ -88,7 +92,7 @@
   return $ cx {rcxtSlRef = f'}
 {-# INLINE rcxtCloneWithNewFrame #-}
 
-{-# LINE 106 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 109 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Representation of run value
 data RVal
   =
@@ -227,7 +231,7 @@
 instance PP RVal where
   pp rval = unsafePerformIO (ppRVal rval)
 
-{-# LINE 246 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 249 "src/ehc/CoreRun/Run/Val.chs" #-}
 mkTuple :: (RunSem RValCxt RValEnv RVal m a) => [RVal] -> RValT m a
 mkTuple vs = liftIO (mvecAllocFillFromV $ crarrayFromList vs) >>= rsemNode 0 >>= rsemPush
 {-# INLINE mkTuple #-}
@@ -236,35 +240,36 @@
 mkUnit = mkTuple []
 {-# INLINE mkUnit #-}
 
-{-# LINE 256 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 259 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- Vector of RVal
 type RValV = CRArray RVal
 
 -- Mutable vector of RVal
 type RValMV = CRMArray RVal
 
-{-# LINE 268 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 271 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Environment: context/reader
 data RValCxt
   = RValCxt
       { rcxtInRet		:: !Bool						-- ^ in returning context, True by default
       , rcxtCallCxt		:: [Maybe HsName]				-- ^ calling context stack, for debugging only
       , rcxtDatatypeMp	:: RValDatatypeMp				-- ^ dataype info for ffi
+      , _rcxtTraceOnS	:: !(Set.Set TraceOn)			-- ^ on what to trace
       }
-      deriving Show
+      deriving (Show, Typeable)
 
 emptyRValCxt :: RValCxt
-emptyRValCxt = RValCxt True [] m
+emptyRValCxt = RValCxt True [] m Set.empty
   where m = rvalDatatypeMpUnions1
               [ Map.singleton n (emptyRValDataconstrInfo {rdciNm2Tg = Map.singleton n 0, rdciTg2Nm = crarrayFromList [n]})
               | tuparity <- [2..15], let n = "(" ++ replicate (tuparity-1) ',' ++ ")"
               ]
 
-{-# LINE 286 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 290 "src/ehc/CoreRun/Run/Val.chs" #-}
 rvalTrEnterLam :: RunSem RValCxt RValEnv RVal m x => Maybe HsName -> RValT m a -> RValT m a
 rvalTrEnterLam s = local (\r -> r {rcxtCallCxt = s : rcxtCallCxt r})
 
-{-# LINE 291 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 295 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Set return context to True
 mustReturn :: RunSem RValCxt RValEnv RVal m x => RValT m a -> RValT m a
 mustReturn = local (\r -> r {rcxtInRet = True})
@@ -285,7 +290,7 @@
 rvalPrimargEvl x = rvalRetEvl x >>= rsemPop >>= rsemDeref
 {-# INLINE rvalPrimargEvl #-}
 
-{-# LINE 313 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 317 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Update with datatype info
 rcxtUpdDatatypes :: RunSem RValCxt RValEnv RVal m x => [Mod] -> RValT m RValCxt
 rcxtUpdDatatypes mods = do
@@ -294,7 +299,7 @@
   -- liftIO $ print cx'
   return cx'
 
-{-# LINE 327 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 331 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | HpPtr is index into a heap
 type HpPtr = Int
 
@@ -318,7 +323,7 @@
   ml <- newIORef 1.5
   return $ Heap vs 0 fr ml
 
-{-# LINE 352 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 356 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Garbage collect heap (TBD)
 heapGcM :: (RunSem RValCxt RValEnv RVal m x) => RVal -> RValT m RVal
 -- heapGcM = err $ "CoreRun.Run.Val.heapGcM: GC not yet implemented"
@@ -426,7 +431,7 @@
     -- rsemSetTrace False
     return curV
 
-{-# LINE 461 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 465 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Allocate on the heap
 heapAllocM :: (RunSem RValCxt RValEnv RVal m x) => RVal -> RValT m HpPtr
 heapAllocM v = do
@@ -493,7 +498,7 @@
   heapUpdM' hp p f
 {-# INLINE heapUpdM #-}
 
-{-# LINE 533 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 537 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Mapping between constr name and tag
 type RValDataconstrInfoNm2Tg = Map.Map String Int		-- from constructor name to tag
 type RValDataconstrInfoTg2Nm = CRArray String			-- from tag to constructor Name
@@ -540,7 +545,7 @@
   where candtg cs = [ (cn,t) | DataCon_Con {conNm_DataCon_Con=cn, tagNr_DataCon_Con=t} <- cs ]
         splitTN n = (hsnQualified n, maybe [] (:[]) $ hsnQualifier n)
 
-{-# LINE 589 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 593 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Frame holding locals indexed by RRef_Loc
 type RValFrame 	= HpPtr		-- ^ points in heap to a RVal_Frame
 type RValModule = HpPtr		-- ^ points in heap to a RVal_Module
@@ -572,16 +577,21 @@
   gl <- MV.new 0
   return $ RValEnv md gl st tp hp False False rtst
 
-{-# LINE 622 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 626 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Resolve module names into indirection/re-indexing table
-renvResolveModNames :: (RunSem RValCxt RValEnv RVal m x) => [HsName] -> RValT m [Int]
-renvResolveModNames nms = do
+renvResolveModNames :: (RunSem RValCxt RValEnv RVal m x) => Int -> [HsName] -> RValT m [Int]
+renvResolveModNames upb nms = do
     env@(RValEnv {renvModulesMV=ms, renvHeap=hp}) <- get
-    let lkup 0 nm = err $ "No module entry for: " ++ show nm
-        lkup n nm = (liftIO $ MV.read ms n >>= heapGetM'' hp) >>= \(RVal_Module {rvalModNm=nm'}) -> if nm == nm' then return n else lkup (n-1) nm
-    forM nms $ lkup (MV.length ms - 1)
+    let lkup n nm | n > upb   = err $ "No module entry for: " ++ show nm
+                  | otherwise = (liftIO $ MV.read ms n >>= heapGetM'' hp) >>= \(RVal_Module {rvalModNm=nm'}) -> if nm == nm' then return n else lkup (n+1) nm
+    forM nms $ \nm -> do
+      -- liftIO $ putStrLn $ "renvResolveModNames 1 " ++ show nm ++ " upb=" ++ show upb ++ " len=" ++ show (MV.length ms)
+      i <- lkup 0 nm
+      -- liftIO $ putStrLn $ "renvResolveModNames 2 " ++ show nm ++ " fnd=" ++ show i
+      rsemTr'' TraceOn_RunMod $ "renvResolveModNames" >#< nm >#< "->" >#< i
+      return i
 
-{-# LINE 632 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 641 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Get the top most frame ptr from the stack, 'nullPtr' if absent
 renvTopFramePtrM :: (RunSem RValCxt RValEnv RVal m x) => RValT m HpPtr
 renvTopFramePtrM = do
@@ -602,7 +612,7 @@
 renvTopFrameM = renvTopFramePtrM >>= heapGetM
 {-# INLINE renvTopFrameM #-}
 
-{-# LINE 654 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 663 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Get all non empty stack frames, still split up in (possibly null) top frame and rest of stack
 renvAllFrameM' :: (RunSem RValCxt RValEnv RVal m x) => RValT m (Maybe HpPtr,[HpPtr])
 renvAllFrameM' = do
@@ -617,8 +627,59 @@
   (mbtop,st) <- renvAllFrameM'
   return $ maybe [] (:[]) mbtop ++ st
 
-{-# LINE 670 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 679 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Dump environment
+dumpPpEnvM' :: (RunSem RValCxt RValEnv RVal m x) => (TraceOn -> Bool) -> RValT m [PP_Doc]
+dumpPpEnvM' onTr = do
+    stkfrs <- renvAllFrameM
+    env <- get
+    callcxt <- asks rcxtCallCxt
+    let hp = renvHeap env
+    stkfrspp <- forM stkfrs $ dumpFrameMinimal hp
+    hpfr <- liftIO $ readIORef (hpFree hp)
+    needRet <- asks rcxtInRet
+    let dash    = "===================="
+        header1 = dash >-< "rcxtInRet=" >|< needRet
+        header2 = ppCurly $ "Heap =" >|< hpfr >|< "/" >|< MV.length (hpVals hp) >|< ", CallCxt=" >|< ppBracketsCommas callcxt >|< ", Stack=" >|< ppBracketsCommas stkfrspp
+        footer1 = dash
+    hpPP <- if onTr TraceOn_RunHeap then dumpHeap hp hpfr else return []
+    mdPP <- if onTr TraceOn_RunMod then dumpModulesMV hp (renvModulesMV env) else return []
+    glPP <- if onTr TraceOn_RunGlobals then dumpGlobalsMV hp (renvGlobalsMV env) else return []
+    frPP <- if onTr TraceOn_RunFrames then ((forM stkfrs $ dumpFrame hp) >>= \fs -> return [pp "====== Frames ======", indent 2 $ vlist fs]) else return []
+    let extensivePP    = hpPP ++ glPP ++ mdPP ++ frPP
+        headerOrFooter = if null extensivePP then [] else [pp dash]
+    return $
+      headerOrFooter ++
+      (if onTr TraceOn_RunFrame then [header2] else []) ++
+      extensivePP ++
+      headerOrFooter
+  where
+    dumpFrameMinimal hp fp = do
+      fr@(RVal_Frame {rvalFrVals=vs, rvalFrSP=spref}) <- heapGetM fp
+      sp  <- liftIO $ readIORef spref
+      return [fp >|< (ppParens $ sp >|< "/" >|< MV.length vs)]
+    dumpModule hp fp = do
+      md <- heapGetM fp
+      liftIO $ ppRValWithHp hp md
+    dumpFrame hp fp = do
+      fr@(RVal_Frame {rvalFrVals=vs, rvalFrSP=spref}) <- heapGetM fp
+      sp  <- liftIO $ readIORef spref
+      -- pps <- ppa 0 hp sp vs
+      (liftIO $ ppRValWithHp hp fr) >>= \frpp -> return $ "Frame ptr=" >|< fp >|< " sp=" >|< sp >-< (indent 2 $ frpp) --  >-< (indent 2 $ vlist pps))
+    dumpModulesMV hp mods = do
+      pps <- liftIO (mvecToList mods) >>= \l -> forM l $ dumpModule hp
+      return [pp "====== Modules ======", indent 2 (vlist pps)]
+    dumpGlobalsMV hp glbls = do
+      pps <- liftIO (mvecToList glbls) >>= \l -> forM l $ dumpFrame hp
+      return [pp "====== Globals ======", indent 2 (vlist pps)]
+    dumpHeap hp@(Heap {hpFirst=off}) hpfr = do
+      pps <- ppa off hp hpfr (hpVals hp)
+      return [pp "======= Heap =======", indent 2 (vlist pps)]
+    ppb hp k v = (liftIO $ ppRValWithHp hp v) >>= \vpp -> return $ k >|< ":" >#< vpp
+    ppa off hp sz vs = forM [0 .. sz - 1] $ \i -> liftIO (MV.read vs i) >>= ppb hp (i + off)
+
+{-
+-- | Dump environment
 dumpPpEnvM :: (RunSem RValCxt RValEnv RVal m x) => Bool -> RValT m PP_Doc
 dumpPpEnvM extensive = do
     stkfrs <- renvAllFrameM
@@ -656,19 +717,22 @@
       return $ "======= Heap =======" >-< indent 2 (vlist pps)
     ppb hp k v = (liftIO $ ppRValWithHp hp v) >>= \vpp -> return $ k >|< ":" >#< vpp
     ppa off hp sz vs = forM [0 .. sz - 1] $ \i -> liftIO (MV.read vs i) >>= ppb hp (i + off)
+-}
 
-{-# LINE 711 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 772 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Dump environment
-dumpEnvM :: (RunSem RValCxt RValEnv RVal m x) => Bool -> RValT m ()
-dumpEnvM extensive = dumpPpEnvM extensive >>= \p -> liftIO $ putPPLn p >> hFlush stdout
+dumpEnvM' :: (RunSem RValCxt RValEnv RVal m x) => RValT m ()
+dumpEnvM' = do
+    tons <- rsemTraceOnS
+    dumpPpEnvM' (`Set.member` tons) >>= \ps -> liftIO $ forM_ ps putPPLn >> hFlush stdout
 
-{-# LINE 721 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 790 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | RunT' variant for Val
 type RValT m a = RunT' RValCxt RValEnv RVal m a
 -- type RValT m a = RunT' () () RValEnv m a
 
 
-{-# LINE 732 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 801 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Marshalling from/to Haskell values
 class HSMarshall hs where
   -- | Marshall to Haskell value, also parameterized by evaluator
@@ -683,7 +747,7 @@
   hsUnmarshall = ghsUnmarshall . from
   {-# INLINE hsUnmarshall #-}
 
-{-# LINE 748 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 817 "src/ehc/CoreRun/Run/Val.chs" #-}
 instance HSMarshall Int where
   hsMarshall _ (RVal_Int v) = return v
   hsMarshall _ v            = err $ "CoreRun.Run.Val.HSMarshall Int:" >#< v
@@ -780,12 +844,12 @@
   hsUnmarshall v = rsemPush $ RHsV_Handle v
   {-# INLINE hsUnmarshall #-}
 
-{-# LINE 846 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 915 "src/ehc/CoreRun/Run/Val.chs" #-}
 instance HSMarshall Bool
 
 instance HSMarshall x => HSMarshall [x]
 
-{-# LINE 852 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 921 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Generic marshalling from/to Haskell values
 class GHSMarshall hs where
   -- | Marshall to Haskell value, also parameterized by evaluator
@@ -817,7 +881,7 @@
         Just (RValDataconstrInfo {rdciNm2Tg=con2tg}) ->
           sumFillTagged con2tg x
 
-{-# LINE 885 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 954 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Marshall util: extract values from sum
 class MarshallSum hs where
   --
@@ -873,7 +937,7 @@
   {-# INLINE sumExtrTagged #-}
 
 
-{-# LINE 942 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1011 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Marshall util: extract values from product (inspired by Aeson library)
 class MarshallProduct hs where
   -- | Fill vector from product
@@ -937,14 +1001,14 @@
   productExtrMVec evl mv ix _ = return U1
   {-# INLINE productExtrMVec #-}
 
-{-# LINE 1007 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1076 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Phantom type tagging (from Aeson lib)
 newtype Tagged s b = Tagged {unTagged :: b}
 
 -- | Phantom type tagging for higher kinds (from Aeson lib)
 newtype Tagged2 (s :: * -> *) b = Tagged2 {unTagged2 :: b}
 
-{-# LINE 1015 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1084 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Size (nr of fields) of data type constructors (from Aeson lib)
 class ProductSize f where
   productSize :: Tagged2 f Int
@@ -962,7 +1026,7 @@
   productSize = Tagged2 0
   {-# INLINE productSize #-}
 
-{-# LINE 1038 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1107 "src/ehc/CoreRun/Run/Val.chs" #-}
 {-
 -- | Loop over a vector, starting at lower bound 'l', ending before 'h'
 vecLoop :: Monad m => Int -> Int -> (V.Vector a -> Int -> m b) -> V.Vector a -> m ()
@@ -980,13 +1044,13 @@
 {-# INLINE vecLoopReverse #-}
 
 
-{-# LINE 1057 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1126 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Right to left forM_
 vecReverseForM_ :: Monad m => V.Vector a -> (a -> m x) -> m ()
 vecReverseForM_ v m = vecLoopReverse 0 (V.length v) (\_ i -> m (v V.! i)) v
 {-# INLINE vecReverseForM_ #-}
 
-{-# LINE 1068 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1137 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Allocate a mutable vector of given size
 mvecAllocWith :: PrimMonad m => Int -> a -> m (MV.MVector (PrimState m) a)
 mvecAllocWith = MV.replicate
@@ -1092,13 +1156,13 @@
     l2 = MV.length v2
     l12 = l1 + l2
 
-{-# LINE 1175 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1244 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Right to left forM_
 mvecReverseForM_ :: PrimMonad m => MV.MVector (PrimState m) a -> (a -> m x) -> m ()
 mvecReverseForM_ v m = mvecLoopReverse 0 (MV.length v) (\v i -> MV.read v i >>= m) v >> return ()
 {-# INLINE mvecReverseForM_ #-}
 
-{-# LINE 1186 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1255 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Dereference a possibly RVal_Ptr
 ptr2valM :: (RunSem RValCxt RValEnv RVal m x) => RVal -> RValT m RVal
 ptr2valM v = case v of
@@ -1111,9 +1175,9 @@
 -- | Dereference a RRef
 ref2valM :: (RunSem RValCxt RValEnv RVal m x) => RRef -> RValT m RVal
 ref2valM r = do
-  -- rsemTr $ "R: " ++ show (pp r)
+  -- rsemTr'' TraceOn_RunRef $ ">R:" >#< r
   env@(RValEnv {renvHeap=hp, renvModulesMV=mods}) <- get
-  case r of
+  v <- case r of
     RRef_Glb m e -> do
         RVal_Frame {rvalFrVals=frvals} <- heapGetM =<< liftIO (MV.read (renvGlobalsMV env) m)
         liftIO $ MV.read frvals e
@@ -1121,8 +1185,16 @@
         RVal_Frame {rvalCx=RCxt {rcxtMdRef=mdref}} <- renvTopFrameM
         liftIO $ do
           RVal_Module {rvalModImpsV=imps} <- heapGetM'' hp =<< readIORef mdref
-          RVal_Frame {rvalFrVals=frvals} <- heapGetM'' hp =<< MV.read mods (imps V.! m)
+          RVal_Module {rvalFrRef=frref} <- heapGetM'' hp =<< MV.read mods (imps V.! m)
+          RVal_Frame {rvalFrVals=frvals} <- heapGetM'' hp =<< readIORef frref
           MV.read frvals e
+{-
+        liftIO (readIORef mdref >>= heapGetM'' hp) >>= \mval -> case mval of
+          RVal_Module {rvalModImpsV=imps} -> liftIO (MV.read mods (imps V.! m) >>= heapGetM'' hp) >>= \fval -> case fval of
+            RVal_Frame {rvalFrVals=frvals} -> liftIO $ MV.read frvals e
+            _ -> err $ "CoreRun.Run.Val.ref2valM.RRef_Imp, is not RVal_Frame: (" >|< r >|< "):" >#< fval
+          _ -> err $ "CoreRun.Run.Val.ref2valM.RRef_Imp, is not RVal_Module: (" >|< r >|< "):" >#< mval
+-}
     RRef_Mod e -> do
         RVal_Frame {rvalCx=RCxt {rcxtMdRef=mdref}} <- renvTopFrameM
         liftIO $ do
@@ -1168,15 +1240,18 @@
           RVal_NodeMV t _ -> return $ RVal_Int t
           _               -> err $ "CoreRun.Run.Val.ref2valM.RRef_Tag:" >#< v
     _ -> err $ "CoreRun.Run.Val.ref2valM.r:" >#< r
+
+  -- rsemTr'' TraceOn_RunRef $ "<R:" >#< r >#< "->" >#< v
+  return v
 {-# INLINE ref2valM #-}
 
-{-# LINE 1264 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1344 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Update top frame
 updTopFrameM :: (RunSem RValCxt RValEnv RVal m x) => (RVal -> RValT m RVal) -> RValT m ()
 updTopFrameM f = renvTopFramePtrM >>= flip heapUpdM f
 {-# INLINE updTopFrameM #-}
 
-{-# LINE 1276 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1356 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Push on the stack embedded in the top frame
 renvFrStkPush' :: RunSem RValCxt RValEnv RVal m x => (Int -> RValMV -> v -> IO Int) -> v -> RValT m ()
 renvFrStkPush' pushvOn v = do
@@ -1212,7 +1287,7 @@
 renvFrStkReversePushV = renvFrStkPush' (\sp frvs vs -> mvecReverseFillFromV sp frvs vs >> return (sp + V.length vs))
 {-# INLINE renvFrStkReversePushV #-}
 
-{-# LINE 1313 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1393 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Pop from the stack embedded in the top frame
 renvFrStkPop' :: RunSem RValCxt RValEnv RVal m x => (RValMV -> Int -> IO v) -> Int -> RValT m v
 renvFrStkPop' popvFrom sz = do
@@ -1256,19 +1331,14 @@
 renvFrStkReversePopMV sz = (liftIO $ mvecAlloc sz) >>= \vs -> renvFrStkReversePopInMV 0 sz vs >> return vs
 {-# INLINE renvFrStkReversePopMV #-}
 
-{-# LINE 1362 "src/ehc/CoreRun/Run/Val.chs" #-}
+{-# LINE 1442 "src/ehc/CoreRun/Run/Val.chs" #-}
 -- | Trace
-rsemTr' :: (PP msg, RunSem RValCxt RValEnv RVal m x) => Bool -> msg -> RValT m ()
-rsemTr' dumpExtensive msg = do
-    env <- get
-    when (renvDoTrace env) $ do
-      liftIO $ putStrLn $ show $ pp msg
-      dumpEnvM (dumpExtensive || renvDoTraceExt env)
-      liftIO $ hFlush stdout
-{- INLINE rsemTr' #-}
+rsemTr'' :: (PP msg, RunSem RValCxt RValEnv RVal m x) => TraceOn -> msg -> RValT m ()
+rsemTr'' ton msg = do
+    tons <- rsemTraceOnS
+    dump <- dumpPpEnvM' (`Set.member` tons)
+    trOnPP (\t -> t `Set.member` tons) ton $ [pp msg] ++ dump
 
--- | Trace
-rsemTr :: (PP msg, RunSem RValCxt RValEnv RVal m x) => msg -> RValT m ()
-rsemTr = rsemTr' False
-{- INLINE rsemTr #-}
 
+{-# LINE 1470 "src/ehc/CoreRun/Run/Val.chs" #-}
+mkLabel ''RValCxt
diff --git a/src/UHC/Light/Compiler/CoreRun/Run/Val/RunExplStk.hs b/src/UHC/Light/Compiler/CoreRun/Run/Val/RunExplStk.hs
--- a/src/UHC/Light/Compiler/CoreRun/Run/Val/RunExplStk.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Run/Val/RunExplStk.hs
@@ -12,18 +12,20 @@
 import UHC.Light.Compiler.Error
 import UHC.Light.Compiler.Gam
 import UHC.Light.Compiler.Gam.DataGam
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.CoreRun
 import UHC.Light.Compiler.CoreRun.Run
 import UHC.Light.Compiler.CoreRun.Run.Val
 import UHC.Light.Compiler.CoreRun.Run.Val.Prim
 import UHC.Light.Compiler.CoreRun.Pretty
 import UHC.Util.Pretty
+import UHC.Util.Lens
 import qualified Data.Vector as V
 import qualified Data.Vector.Mutable as MV
 import Data.List
 import qualified Data.ByteString.Char8 as BSC8
 
-{-# LINE 42 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 48 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 -- | Arguments to a function, which may come from an RVal_App or from the stack
 data ExplArgs = ExplArgs
   { eaVec		:: !RValV		-- ^ the accumulated part from RVal_App
@@ -50,7 +52,7 @@
         eaLen = eaNrArgs ea
 {-# INLINE renvFrStkEaPopMV #-}
 
-{-# LINE 70 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 76 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 -- | Allocate a new frame
 explStkAllocFrameM
   :: (RunSem RValCxt RValEnv RVal m x)
@@ -121,7 +123,7 @@
     return tf
 {-# INLINE explStkPopFrameM #-}
 
-{-# LINE 146 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 152 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 cmodRun :: (RunSem RValCxt RValEnv RVal m ()) => EHCOpts -> Mod -> RValT m ()
 cmodRun opts (Mod_Mod {mbbody_Mod_Mod = Just e}) = do
   -- dumpEnvM True
@@ -130,7 +132,7 @@
   -- return v
 cmodRun opts _ = return ()
 
-{-# LINE 164 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 170 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 -- | Apply Lam in context of static link with exact right amount of params, otherwise the continuation is used
 rvalExplStkAppLam :: RunSem RValCxt RValEnv RVal m () => RCxt -> Exp -> ExplArgs -> (Int -> RValT m ()) -> RValT m ()
 rvalExplStkAppLam cx f as failcont = do
@@ -157,7 +159,7 @@
 -- {-# SPECIALIZE rvalExplStkAppLam :: HpPtr -> Exp -> RValMV -> (Int -> RValT IO RVal) -> RValT IO RVal #-}
 -- {-# INLINE rvalExplStkAppLam #-}
 
-{-# LINE 192 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 198 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 -- | Apply. Assume: function 'f' is already evaluated (responsibility lies outside)
 rvalExplStkApp :: RunSem RValCxt RValEnv RVal m () => RVal -> ExplArgs -> RValT m ()
 rvalExplStkApp f as = do
@@ -181,13 +183,13 @@
 -- {-# SPECIALIZE rvalExplStkApp :: RunSem RValCxt RValEnv RVal IO RVal => RVal -> RValMV -> RValT IO RVal #-}
 -- {-# INLINE rvalExplStkApp #-}
 
-{-# LINE 217 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 223 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 -- | rsemExp for RVal, without explicit use of expr stack, i.e. implicit stack via Haskell thereby preventing correct GC
 rvalExplStkExp :: RunSem RValCxt RValEnv RVal m () => Exp -> RValT m ()
 {-# SPECIALIZE rvalExplStkExp :: RunSem RValCxt RValEnv RVal IO () => Exp -> RValT IO () #-}
 -- {-# INLINE rvalExplStkExp #-}
 rvalExplStkExp e = do
-  rsemTr $ ">E:" >#< e
+  rsemTr'' TraceOn_RunEval $ ">E:" >#< e
   -- e' <- case e of
   case e of
     -- app, call
@@ -244,41 +246,50 @@
     -- necessary only when case is non-saturated w.r.t. alternatives of datatype Exp
     -- e -> err $ "CoreRun.Run.Val.RunExplStk.rvalExplStkExp:" >#< e
 
-  rsemTr $ "<E:" >#< (e) -- >-< e')
+  rsemTr'' TraceOn_RunEval $ "<E:" >#< (e) -- >-< e')
   -- return e'
 
-{-# LINE 294 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 302 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 -- | Add module
 rvalExplAddModule :: RunSem RValCxt RValEnv RVal m () => Mod -> RValT m HpPtr
 rvalExplAddModule mod@(Mod_Mod {moduleNm_Mod_Mod=nm, ref2nm_Mod_Mod=r2n, binds_Mod_Mod=bs, stkDepth_Mod_Mod=sz, imports_Mod_Mod=imports}) = do
+    rsemTr'' TraceOn_RunMod $ ">rvalExplAddModule:" >#< nm
     -- add new entry
     env@(RValEnv {renvModulesMV=mods}) <- get
+    let nr = MV.length mods
+    -- add new entry
     mods' <- liftIO $ MV.grow mods 1
+    -- frame IORef with dummy ptr
+    fr <- liftIO $ newIORef nullPtr
+    m  <- heapAllocM $ RVal_Module nm (crarrayFromList []) fr
+    -- write module entry which requires later patching
+    liftIO $ MV.write mods' nr m
+    -- set as new module array
     put $ env {renvModulesMV = mods'}
-    --
+    -- get updated modules
     env@(RValEnv {renvModulesMV=mods, renvGlobalsMV=globs}) <- get
-    let nr = MV.length mods - 1
     -- get import indirection table
-    imptbl <- renvResolveModNames [ nm | Import_Import {nm_Import_Import=nm} <- imports ]
+    imptbl <- renvResolveModNames (nr-1) [ nm | Import_Import {nm_Import_Import=nm} <- imports ]
     -- construct context (module is patched in later)
     cx <- liftIO $ mkRCxt nullPtr nullPtr
     -- construct frame
     f <- explStkPushAllocFrameM r2n cx sz emptyExplArgs
-    -- construct module, set the module entry
-    fr <- liftIO $ newIORef f
-    m <- heapAllocM $ RVal_Module nm (crarrayFromList imptbl) fr
-    liftIO $ do
-      -- fill global module entry
-      MV.write mods nr m
-      -- patch module ref in context
-      writeIORef (rcxtMdRef cx) m
+    -- patch frame ref with frame
+    liftIO $ writeIORef fr f
+    -- patch module with imp table
+    heapUpdM m (\m -> return $ m {rvalModImpsV=crarrayFromList imptbl})
+    -- patch module ref in context
+    liftIO $ writeIORef (rcxtMdRef cx) m
     -- compute module bindings into current frame
     V.forM_ bs rsemExp
+    rsemTr'' TraceOn_RunMod $ "<rvalExplAddModule:" >#< nm >#< "-> modhpptr=" >|< m
     -- remove the frame
-    explStkPopFrameM
+    f <- explStkPopFrameM
+    -- and return it
+    return f
   where
 
-{-# LINE 326 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
+{-# LINE 343 "src/ehc/CoreRun/Run/Val/RunExplStk.chs" #-}
 instance
     ( Monad m, MonadIO m, Functor m
     ) => RunSem RValCxt RValEnv RVal m ()
@@ -288,14 +299,16 @@
       s <- liftIO $ newRValEnv 100000 -- 100000 --
       return (emptyRValCxt, s, undefined)
 
-    rsemSetup opts modImpL mod@(Mod_Mod {moduleNr_Mod_Mod=mainModNr}) = do
+    rsemSetup opts modImpL mod {- @(Mod_Mod {moduleNr_Mod_Mod=mainModNr}) -} = do
 {-
 -}
+        rsemSetupTracing opts
         let modAllL = modImpL ++ [mod]
-        modFrames <- forM modAllL $ \mod -> do
+            updTr   = rcxtTraceOnS ^= ehcOptTraceOn opts
+        modFrames <- local updTr $ forM modAllL $ \mod -> do
           rvalExplAddModule mod
         explStkPushFrameM (last modFrames)
-        rcxtUpdDatatypes modAllL
+        fmap updTr $ rcxtUpdDatatypes modAllL
 {-
         -- rsemSetTrace True
         rsemGcEnterRootLevel
@@ -322,6 +335,8 @@
 
     rsemSetTrace doTrace doExtensive = modify $ \env ->
       env {renvDoTrace = doTrace, renvDoTraceExt = doExtensive}
+
+    rsemTraceOnS = asks _rcxtTraceOnS
 
     rsemExp = rvalExplStkExp
 
diff --git a/src/UHC/Light/Compiler/CoreRun/Run/Val/RunImplStk.hs b/src/UHC/Light/Compiler/CoreRun/Run/Val/RunImplStk.hs
--- a/src/UHC/Light/Compiler/CoreRun/Run/Val/RunImplStk.hs
+++ b/src/UHC/Light/Compiler/CoreRun/Run/Val/RunImplStk.hs
@@ -11,24 +11,26 @@
 import UHC.Light.Compiler.Error
 import UHC.Light.Compiler.Gam
 import UHC.Light.Compiler.Gam.DataGam
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.CoreRun
 import UHC.Light.Compiler.CoreRun.Run
 import UHC.Light.Compiler.CoreRun.Run.Val
 import UHC.Light.Compiler.CoreRun.Run.Val.Prim
 import UHC.Light.Compiler.CoreRun.Pretty
 import UHC.Util.Pretty
+import UHC.Util.Utils
 import qualified Data.Vector as V
 import qualified Data.Vector.Mutable as MV
 import qualified Data.ByteString.Char8 as BSC8
 
-{-# LINE 38 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
+{-# LINE 44 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
 -- | Fill (part of) a frame starting at 'lwb'
 fillFrameM :: (RunSem RValCxt RValEnv RVal m RVal) => Int -> RValMV -> RVal -> RValT m ()
 fillFrameM lwb as (RVal_Frame {rvalFrVals=frArr}) = do
   liftIO $ mvecFillFromMV lwb frArr as
 {-# INLINE fillFrameM #-}
 
-{-# LINE 46 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
+{-# LINE 52 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
 -- | Allocate a new frame
 implStkAllocFrameM :: (RunSem RValCxt RValEnv RVal m RVal) => Ref2Nm -> HpPtr -> {- Int -> -} Int -> RValMV -> RValT m HpPtr
 implStkAllocFrameM r2n sl {- lev -} sz as = do
@@ -71,7 +73,7 @@
         writeIORef st t
 {-# INLINE implStkPopFrameM #-}
 
-{-# LINE 94 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
+{-# LINE 100 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
 cmodRun :: (RunSem RValCxt RValEnv RVal m RVal) => EHCOpts -> Mod -> RValT m RVal
 cmodRun opts (Mod_Mod {mbbody_Mod_Mod = Just e}) = do
   -- dumpEnvM True
@@ -79,7 +81,7 @@
   return v
 cmodRun opts _ = err $ "Cannot run module without main"
 
-{-# LINE 111 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
+{-# LINE 117 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
 -- | Apply Lam in context of static link with exact right amount of params, otherwise the continuation is used
 rvalImplStkAppLam :: RunSem RValCxt RValEnv RVal m RVal => HpPtr -> Exp -> RValMV -> (Int -> RValT m RVal) -> RValT m RVal
 rvalImplStkAppLam sl f as failcont = do
@@ -126,7 +128,7 @@
 -- {-# SPECIALIZE rvalImplStkApp :: RunSem RValCxt RValEnv RVal IO RVal => RVal -> RValMV -> RValT IO RVal #-}
 -- {-# INLINE rvalImplStkApp #-}
 
-{-# LINE 159 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
+{-# LINE 165 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
 -- | rsemExp for RVal, without explicit use of expr stack, i.e. implicit stack via Haskell thereby preventing correct GC
 rvalImplStkExp :: RunSem RValCxt RValEnv RVal m RVal => Exp -> RValT m RVal
 -- {-# SPECIALIZE rvalImplStkExp :: RunSem RValCxt RValEnv RVal IO RVal => Exp -> RValT IO RVal #-}
@@ -187,7 +189,7 @@
 
 
 
-{-# LINE 231 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
+{-# LINE 237 "src/ehc/CoreRun/Run/Val/RunImplStk.chs" #-}
 instance
     ( Monad m, MonadIO m, Functor m
     ) => RunSem RValCxt RValEnv RVal m RVal
@@ -200,9 +202,10 @@
     rsemSetup opts modImpL mod = {- local (const emptyRValCxt) $ -} do
         -- (liftIO $ newRValEnv 100000) >>= put
         let modAllL = mod : modImpL
-        ms <- liftIO $ MV.new (maximum (map moduleNr_Mod_Mod modAllL) + 1)
+        ms <- liftIO $ MV.new (maximum (map (panicJust "CoreRun.Run.Val.rsemSetup.moduleNr_Mod_Mod(1)" . moduleNr_Mod_Mod) modAllL) + 1)
         modify $ \env -> env {renvGlobalsMV = ms}
-        forM_ modAllL $ \(Mod_Mod {ref2nm_Mod_Mod=r2n, moduleNr_Mod_Mod=nr, binds_Mod_Mod=bs}) -> do
+        forM_ modAllL $ \(Mod_Mod {ref2nm_Mod_Mod=r2n, moduleNr_Mod_Mod=mbnr, binds_Mod_Mod=bs}) -> do
+          let nr = panicJust "CoreRun.Run.Val.rsemSetup.moduleNr_Mod_Mod(2)" mbnr
           bs' <- (liftIO . V.thaw) =<< V.forM bs rsemExp
           p <- implStkAllocFrameM r2n nullPtr {- 0 -} (MV.length bs') bs'
           liftIO $ MV.write ms nr p
diff --git a/src/UHC/Light/Compiler/Deriving.hs b/src/UHC/Light/Compiler/Deriving.hs
--- a/src/UHC/Light/Compiler/Deriving.hs
+++ b/src/UHC/Light/Compiler/Deriving.hs
@@ -92,6 +92,7 @@
     $ [
       -- Eq
       {-
+      -}
          mkc ehbnClassEq []
            [
            -- Eq((==))
@@ -109,10 +110,9 @@
                 false false
                 nowrap
            ]
-      -}
 
       -- Ord
-         mkc ehbnClassOrd []
+      ,  mkc ehbnClassOrd []
            [
            -- Ord(compare)
              mkf ehbnClassOrdFldCompare
@@ -248,6 +248,7 @@
 
       -- Bounded
       {-
+      -}
       ,  mkc ehbnClassBounded []
            [
            -- Bounded(maxBound)
@@ -279,7 +280,6 @@
                 undef undef
                 nowrap
            ]
-      -}
 
       -- Show
       ,  mkc ehbnClassShow []
diff --git a/src/UHC/Light/Compiler/EH.hs b/src/UHC/Light/Compiler/EH.hs
--- a/src/UHC/Light/Compiler/EH.hs
+++ b/src/UHC/Light/Compiler/EH.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/EH.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/EH.ag)
 module UHC.Light.Compiler.EH(AGItf (..), Decl (..), Decls, TyExpr (..), Expr (..), PatExpr (..)
 , ExprAnn (..), PatExprAnn (..), TyExprAnn (..)
 , mkLet
@@ -150,7 +150,7 @@
 
 
 
-instance AppLike Expr () {- ExprAnn () -} where
+instance {-# OVERLAPPING  #-} AppLike Expr () {- ExprAnn () -} where
   appRngApp1   r  = rngLift r Expr_App
   appRngTop    r  = rngLift r Expr_AppTop
   appRngVar    r  = rngLift r Expr_Var . mkHNm
@@ -162,7 +162,7 @@
 
 
 
-instance AppLike PatExpr () {- PatExprAnn () -} where
+instance {-# OVERLAPPING  #-} AppLike PatExpr () {- PatExprAnn () -} where
   appRngApp1   r  = rngLift r PatExpr_App
   appRngTop    r  = rngLift r PatExpr_AppTop
   appRngVar    r  = rngLift r PatExpr_Var . mkHNm
@@ -174,7 +174,7 @@
 
 
 
-instance AppLike TyExpr () {- TyExprAnn () -} where
+instance {-# OVERLAPPING  #-} AppLike TyExpr () {- TyExprAnn () -} where
   appRngApp1   r  = rngLift r TyExpr_App
   appRngTop    r  = rngLift r TyExpr_AppTop
   appRngVar    r  = rngLift r TyExpr_Var . mkHNm
@@ -195,7 +195,7 @@
 
 
 
-instance AppLike KiExpr () {- KiExprAnn () -} where
+instance {-# OVERLAPPING  #-} AppLike KiExpr () {- KiExprAnn () -} where
   appRngApp1   r  = rngLift r KiExpr_App
   appRngTop    r  = rngLift r KiExpr_AppTop
   appRngVar    r  = rngLift r KiExpr_Var . mkHNm
@@ -231,10 +231,10 @@
           | Decl_FFI {hsrange_Decl_FFI :: !(Range),callconv_Decl_FFI :: !(FFIWay),safety_Decl_FFI :: !(String),impEnt_Decl_FFI :: !(ForeignEnt),nm_Decl_FFI :: !(HsName),tyExpr_Decl_FFI :: !(TyExpr)}
           | Decl_Type {hsrange_Decl_Type :: !(Range),tyNm_Decl_Type :: !(HsName),tyExpr_Decl_Type :: !(TyExpr)}
           | Decl_FFE {hsrange_Decl_FFE :: !(Range),nm_Decl_FFE :: !(HsName),callconv_Decl_FFE :: !(FFIWay),expEnt_Decl_FFE :: !(ForeignEnt),expr_Decl_FFE :: !(Expr),tyExpr_Decl_FFE :: !(TyExpr)}
-          | Decl_GenerRep {hsrange_Decl_GenerRep :: !(Range),maxArity_Decl_GenerRep :: !(Int),tyNm_Decl_GenerRep :: !(HsName),conNmL_Decl_GenerRep :: !(([HsName])),recFldNmL_Decl_GenerRep :: !(([(HsName,[HsName])]))}
+          | Decl_GenerRep {hsrange_Decl_GenerRep :: !(Range),maxArity_Decl_GenerRep :: !(Int),arity_Decl_GenerRep :: !(Int),tyNm_Decl_GenerRep :: !(HsName),conNmL_Decl_GenerRep :: !(([HsName])),recFldNmL_Decl_GenerRep :: !(([(HsName,[HsName])]))}
           | Decl_FusionDecl {hsrange_Decl_FusionDecl :: !(Range),fuseNm_Decl_FusionDecl :: !(HsName)}
           | Decl_FusionConv {hsrange_Decl_FusionConv :: !(Range),conNm_Decl_FusionConv :: !(HsName),absNm_Decl_FusionConv :: !(HsName)}
-          | Decl_Class {hsrange_Decl_Class :: !(Range),tyPrExpr_Decl_Class :: !(TyExpr),funcDeps_Decl_Class :: !(FuncDeps),mbDefaultInstNm_Decl_Class :: !((Maybe HsName)),decls_Decl_Class :: !(Decls),generDerivs_Decl_Class :: !(([(HsName,HsName)]))}
+          | Decl_Class {hsrange_Decl_Class :: !(Range),clNm_Decl_Class :: !(HsName),tyPrExpr_Decl_Class :: !(TyExpr),funcDeps_Decl_Class :: !(FuncDeps),mbDefaultInstNm_Decl_Class :: !((Maybe HsName)),decls_Decl_Class :: !(Decls),generDerivs_Decl_Class :: !(([(HsName,HsName)]))}
           | Decl_Instance {hsrange_Decl_Instance :: !(Range),mbNmElim_Decl_Instance :: !((Maybe (HsName,Bool))),instVariant_Decl_Instance :: !(InstVariant),tyPrExpr_Decl_Instance :: !(TyExpr),decls_Decl_Instance :: !(Decls)}
           | Decl_InstanceIntro {hsrange_Decl_InstanceIntro :: !(Range),mbNmElim_Decl_InstanceIntro :: !((Maybe (HsName))),expr_Decl_InstanceIntro :: !(Expr),prExpr_Decl_InstanceIntro :: !(PrExpr)}
           | Decl_Default {hsrange_Decl_Default :: !(Range),nm_Decl_Default :: !(HsName),tyExprs_Decl_Default :: !(TyExprs)}
diff --git a/src/UHC/Light/Compiler/EH/Main.hs b/src/UHC/Light/Compiler/EH/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/EH/Main.hs
@@ -0,0 +1,13 @@
+module UHC.Light.Compiler.EH.Main
+( module UHC.Light.Compiler.EH.MainAG )
+where
+import UHC.Light.Compiler.EH.MainAG
+import Data.Typeable
+
+
+
+{-# LINE 17 "src/ehc/EH/Main.chs" #-}
+-- dummy
+
+{-# LINE 21 "src/ehc/EH/Main.chs" #-}
+deriving instance Typeable Syn_AGItf
diff --git a/src/UHC/Light/Compiler/EH/MainAG.hs b/src/UHC/Light/Compiler/EH/MainAG.hs
--- a/src/UHC/Light/Compiler/EH/MainAG.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG.hs
@@ -18,6 +18,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -25,8 +27,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -118,13 +118,13 @@
 sem_AGItf (AGItf_AGItf _expr) | (AGItf_AGItf _expr) `seq` (True) =
     (sem_AGItf_AGItf (sem_Expr _expr))
 data Inh_AGItf = Inh_AGItf {chrStore_Inh_AGItf :: !(ScopedPredStore),clDfGam_Inh_AGItf :: !(ClassDefaultGam),clGam_Inh_AGItf :: !(ClGam),dataGam_Inh_AGItf :: !(DataGam),gUniq_Inh_AGItf :: !(UID),idQualGam_Inh_AGItf :: !(IdQualGam),importUsedModules_Inh_AGItf :: !(ImportUsedModules),isMainMod_Inh_AGItf :: !(Bool),kiGam_Inh_AGItf :: !(KiGam),moduleImportExportImpl_Inh_AGItf :: !(ModuleImportExportImpl),moduleNm_Inh_AGItf :: !(HsName),opts_Inh_AGItf :: !(EHCOpts),polGam_Inh_AGItf :: !(PolGam),tyGam_Inh_AGItf :: !(TyGam),tyKiGam_Inh_AGItf :: !(TyKiGam),valGam_Inh_AGItf :: !(ValGam)}
-data Syn_AGItf = Syn_AGItf {allErrSq_Syn_AGItf :: !(ErrSq),cmodule_Syn_AGItf :: !(CModule),gUniq_Syn_AGItf :: !(UID),gathChrStore_Syn_AGItf :: !(ScopedPredStore),gathClDfGam_Syn_AGItf :: !(ClassDefaultGam),gathClGam_Syn_AGItf :: !(ClGam),gathDataGam_Syn_AGItf :: !(DataGam),gathHiddenExports_Syn_AGItf :: !((Seq.Seq (HsName,IdOccKind))),gathKiGam_Syn_AGItf :: !(KiGam),gathLamMp_Syn_AGItf :: !(LamMp),gathMentrelFilterMp_Syn_AGItf :: !(ModEntRelFilterMp),gathPolGam_Syn_AGItf :: !(PolGam),gathTyGam_Syn_AGItf :: !(TyGam),gathTyKiGam_Syn_AGItf :: !(TyKiGam),gathValGam_Syn_AGItf :: !(ValGam),mbOrphan_Syn_AGItf :: !((Maybe (Set.Set HsName))),pp_Syn_AGItf :: !(PP_Doc),topTyPP_Syn_AGItf :: !(PP_Doc)}
+data Syn_AGItf = Syn_AGItf {allErrSq_Syn_AGItf :: !(ErrSq),cmodule_Syn_AGItf :: !(CModule),gUniq_Syn_AGItf :: !(UID),gathChrStore_Syn_AGItf :: !(ScopedPredStore),gathClDfGam_Syn_AGItf :: !(ClassDefaultGam),gathClGam_Syn_AGItf :: !(ClGam),gathDataGam_Syn_AGItf :: !(DataGam),gathHiddenExports_Syn_AGItf :: !((Seq.Seq (HsName,IdOccKind))),gathKiGam_Syn_AGItf :: !(KiGam),gathLamMp_Syn_AGItf :: !(LamMp),gathMentrelFilterMp_Syn_AGItf :: !(ModEntRelFilterMp),gathPolGam_Syn_AGItf :: !(PolGam),gathTyGam_Syn_AGItf :: !(TyGam),gathTyKiGam_Syn_AGItf :: !(TyKiGam),gathValGam_Syn_AGItf :: !(ValGam),mbOrphan_Syn_AGItf :: !((Maybe (Set.Set HsName))),pp_Syn_AGItf :: !(PP_Doc),topTyPP_Syn_AGItf :: !(PP_Doc),trpp_Syn_AGItf :: !(TrPP)}
 wrap_AGItf :: T_AGItf ->
               Inh_AGItf ->
               Syn_AGItf
 wrap_AGItf sem (Inh_AGItf _lhsIchrStore _lhsIclDfGam _lhsIclGam _lhsIdataGam _lhsIgUniq _lhsIidQualGam _lhsIimportUsedModules _lhsIisMainMod _lhsIkiGam _lhsImoduleImportExportImpl _lhsImoduleNm _lhsIopts _lhsIpolGam _lhsItyGam _lhsItyKiGam _lhsIvalGam) | sem `seq` ((Inh_AGItf _lhsIchrStore _lhsIclDfGam _lhsIclGam _lhsIdataGam _lhsIgUniq _lhsIidQualGam _lhsIimportUsedModules _lhsIisMainMod _lhsIkiGam _lhsImoduleImportExportImpl _lhsImoduleNm _lhsIopts _lhsIpolGam _lhsItyGam _lhsItyKiGam _lhsIvalGam) `seq` (True)) =
-    (let ( _lhsOallErrSq,_lhsOcmodule,_lhsOgUniq,_lhsOgathChrStore,_lhsOgathClDfGam,_lhsOgathClGam,_lhsOgathDataGam,_lhsOgathHiddenExports,_lhsOgathKiGam,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathPolGam,_lhsOgathTyGam,_lhsOgathTyKiGam,_lhsOgathValGam,_lhsOmbOrphan,_lhsOpp,_lhsOtopTyPP) | True = sem _lhsIchrStore _lhsIclDfGam _lhsIclGam _lhsIdataGam _lhsIgUniq _lhsIidQualGam _lhsIimportUsedModules _lhsIisMainMod _lhsIkiGam _lhsImoduleImportExportImpl _lhsImoduleNm _lhsIopts _lhsIpolGam _lhsItyGam _lhsItyKiGam _lhsIvalGam
-     in  (Syn_AGItf _lhsOallErrSq _lhsOcmodule _lhsOgUniq _lhsOgathChrStore _lhsOgathClDfGam _lhsOgathClGam _lhsOgathDataGam _lhsOgathHiddenExports _lhsOgathKiGam _lhsOgathLamMp _lhsOgathMentrelFilterMp _lhsOgathPolGam _lhsOgathTyGam _lhsOgathTyKiGam _lhsOgathValGam _lhsOmbOrphan _lhsOpp _lhsOtopTyPP))
+    (let ( _lhsOallErrSq,_lhsOcmodule,_lhsOgUniq,_lhsOgathChrStore,_lhsOgathClDfGam,_lhsOgathClGam,_lhsOgathDataGam,_lhsOgathHiddenExports,_lhsOgathKiGam,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathPolGam,_lhsOgathTyGam,_lhsOgathTyKiGam,_lhsOgathValGam,_lhsOmbOrphan,_lhsOpp,_lhsOtopTyPP,_lhsOtrpp) | True = sem _lhsIchrStore _lhsIclDfGam _lhsIclGam _lhsIdataGam _lhsIgUniq _lhsIidQualGam _lhsIimportUsedModules _lhsIisMainMod _lhsIkiGam _lhsImoduleImportExportImpl _lhsImoduleNm _lhsIopts _lhsIpolGam _lhsItyGam _lhsItyKiGam _lhsIvalGam
+     in  (Syn_AGItf _lhsOallErrSq _lhsOcmodule _lhsOgUniq _lhsOgathChrStore _lhsOgathClDfGam _lhsOgathClGam _lhsOgathDataGam _lhsOgathHiddenExports _lhsOgathKiGam _lhsOgathLamMp _lhsOgathMentrelFilterMp _lhsOgathPolGam _lhsOgathTyGam _lhsOgathTyKiGam _lhsOgathValGam _lhsOmbOrphan _lhsOpp _lhsOtopTyPP _lhsOtrpp))
 -- CaseAlt -----------------------------------------------------
 -- cata
 sem_CaseAlt :: CaseAlt ->
@@ -205,14 +205,14 @@
     (sem_Decl_Type _hsrange _tyNm (sem_TyExpr _tyExpr))
 sem_Decl (Decl_FFE _hsrange _nm _callconv _expEnt _expr _tyExpr) | (Decl_FFE _hsrange _nm _callconv _expEnt _expr _tyExpr) `seq` (True) =
     (sem_Decl_FFE _hsrange _nm _callconv _expEnt (sem_Expr _expr) (sem_TyExpr _tyExpr))
-sem_Decl (Decl_GenerRep _hsrange _maxArity _tyNm _conNmL _recFldNmL) | (Decl_GenerRep _hsrange _maxArity _tyNm _conNmL _recFldNmL) `seq` (True) =
-    (sem_Decl_GenerRep _hsrange _maxArity _tyNm _conNmL _recFldNmL)
+sem_Decl (Decl_GenerRep _hsrange _maxArity _arity _tyNm _conNmL _recFldNmL) | (Decl_GenerRep _hsrange _maxArity _arity _tyNm _conNmL _recFldNmL) `seq` (True) =
+    (sem_Decl_GenerRep _hsrange _maxArity _arity _tyNm _conNmL _recFldNmL)
 sem_Decl (Decl_FusionDecl _hsrange _fuseNm) | (Decl_FusionDecl _hsrange _fuseNm) `seq` (True) =
     (sem_Decl_FusionDecl _hsrange _fuseNm)
 sem_Decl (Decl_FusionConv _hsrange _conNm _absNm) | (Decl_FusionConv _hsrange _conNm _absNm) `seq` (True) =
     (sem_Decl_FusionConv _hsrange _conNm _absNm)
-sem_Decl (Decl_Class _hsrange _tyPrExpr _funcDeps _mbDefaultInstNm _decls _generDerivs) | (Decl_Class _hsrange _tyPrExpr _funcDeps _mbDefaultInstNm _decls _generDerivs) `seq` (True) =
-    (sem_Decl_Class _hsrange (sem_TyExpr _tyPrExpr) (sem_FuncDeps _funcDeps) _mbDefaultInstNm (sem_Decls _decls) _generDerivs)
+sem_Decl (Decl_Class _hsrange _clNm _tyPrExpr _funcDeps _mbDefaultInstNm _decls _generDerivs) | (Decl_Class _hsrange _clNm _tyPrExpr _funcDeps _mbDefaultInstNm _decls _generDerivs) `seq` (True) =
+    (sem_Decl_Class _hsrange _clNm (sem_TyExpr _tyPrExpr) (sem_FuncDeps _funcDeps) _mbDefaultInstNm (sem_Decls _decls) _generDerivs)
 sem_Decl (Decl_Instance _hsrange _mbNmElim _instVariant _tyPrExpr _decls) | (Decl_Instance _hsrange _mbNmElim _instVariant _tyPrExpr _decls) `seq` (True) =
     (sem_Decl_Instance _hsrange _mbNmElim _instVariant (sem_TyExpr _tyPrExpr) (sem_Decls _decls))
 sem_Decl (Decl_InstanceIntro _hsrange _mbNmElim _expr _prExpr) | (Decl_InstanceIntro _hsrange _mbNmElim _expr _prExpr) `seq` (True) =
diff --git a/src/UHC/Light/Compiler/EH/MainAG_AGItf.hs b/src/UHC/Light/Compiler/EH/MainAG_AGItf.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_AGItf.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_AGItf.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -122,6 +122,7 @@
          mbOrphan             : Maybe (Set.Set HsName)
          pp                   : PP_Doc
          topTyPP              : PP_Doc
+         trpp                 : TrPP
    alternatives:
       alternative AGItf:
          child expr           : Expr 
@@ -160,6 +161,7 @@
             local finTyVarMp  : _
             local lUniq_98_fitsIn_ty : {UID}
             local lUniq_98_IO_tvar : {UID}
+            local tr          : _
             local chrSolveMainScopeBindMp : _
             local _tup3       : _
             local chrScopeBindMp : _
@@ -176,6 +178,7 @@
             local chrSolveMainErrs : _
             local lErrSq      : _
             local chrScopeMainBindL : _
+            local chrSolveMainEvidCBindL : _
             local extraCBindL : _
             local mainUseExists : _
             local isMainMod   : _
@@ -286,244 +289,254 @@
                                                                    { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
                                                                    (case (emptyVarMp) of
                                                                     { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                    (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                     { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                         (case (emptyGam) of
-                                                                          { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                          (case (_exprIkiVarMp) of
-                                                                           { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                           (case (Set.empty) of
-                                                                            { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                            (case (emptyGam) of
-                                                                             { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                             (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                              { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                  (case (_exprIgathDataGam `gamUnion` _lhsIdataGam) of
-                                                                                   { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                   (case (expr_5 _exprOdataGam) of
-                                                                                    { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                        (case (_exprIgathClDfGam `gamUnion` _lhsIclDfGam) of
-                                                                                         { _clDfGam | _clDfGam `seq` (True) ->
-                                                                                         (case (_clDfGam) of
-                                                                                          { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                          (case (__tup8) of
-                                                                                           { (_,_lUniq,_,_,_) | _lUniq `seq` (True) ->
-                                                                                           (case (_exprIchrFIIn {fiUniq = _lUniq}) of
-                                                                                            { _chrFIIn | _chrFIIn `seq` (True) ->
-                                                                                            (case (partition (\(_,_,_,sc) -> sc == initPredScope) $ Seq.toList _exprIchrInstDeclSq) of
-                                                                                             { __tup4 | __tup4 `seq` (True) ->
-                                                                                             (case (__tup4) of
-                                                                                              { (_instsOuter,_) | _instsOuter `seq` (True) ->
-                                                                                              (case (_lhsIchrStore) of
-                                                                                               { _initChrStore | _initChrStore `seq` (True) ->
-                                                                                               (case (mkScopedCHR2 _chrFIIn (Seq.toList _exprIchrClassDeclSq) _instsOuter _initChrStore) of
-                                                                                                { __tup5 | __tup5 `seq` (True) ->
-                                                                                                (case (__tup5) of
-                                                                                                 { (_chrStoreOuterScope,_) | _chrStoreOuterScope `seq` (True) ->
-                                                                                                 (case (__tup4) of
-                                                                                                  { (_,_instsInner) | _instsInner `seq` (True) ->
-                                                                                                  (case (mkScopedCHR2 _chrFIIn [] _instsInner _chrStoreOuterScope) of
-                                                                                                   { __tup6 | __tup6 `seq` (True) ->
-                                                                                                   (case (__tup6) of
-                                                                                                    { (_chrStore,_) | _chrStore `seq` (True) ->
-                                                                                                    (case (_chrStore) of
-                                                                                                     { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                     (case (emptyVarMp) of
-                                                                                                      { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                      (case (Ty_Any) of
-                                                                                                       { _exprOknTy | _exprOknTy `seq` (True) ->
-                                                                                                       (case (strongFIOpts) of
-                                                                                                        { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                        (case (_exprIkiVarMp) of
-                                                                                                         { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                         (case (Set.empty) of
-                                                                                                          { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                    (case (Map.empty) of
+                                                                     { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                     (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                      { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                          (case (emptyGam) of
+                                                                           { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                           (case (_exprIkiVarMp) of
+                                                                            { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                            (case (Set.empty) of
+                                                                             { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                             (case (emptyGam) of
+                                                                              { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                              (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                               { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                   (case (_exprIgathDataGam `gamUnion` _lhsIdataGam) of
+                                                                                    { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                    (case (expr_5 _exprOdataGam) of
+                                                                                     { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                         (case (_exprIgathClDfGam `gamUnion` _lhsIclDfGam) of
+                                                                                          { _clDfGam | _clDfGam `seq` (True) ->
+                                                                                          (case (_clDfGam) of
+                                                                                           { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                           (case (__tup8) of
+                                                                                            { (_,_lUniq,_,_,_) | _lUniq `seq` (True) ->
+                                                                                            (case (_exprIchrFIIn {fiUniq = _lUniq}) of
+                                                                                             { _chrFIIn | _chrFIIn `seq` (True) ->
+                                                                                             (case (partition (\(_,_,_,sc) -> sc == initPredScope) $ Seq.toList _exprIchrInstDeclSq) of
+                                                                                              { __tup4 | __tup4 `seq` (True) ->
+                                                                                              (case (__tup4) of
+                                                                                               { (_instsOuter,_) | _instsOuter `seq` (True) ->
+                                                                                               (case (_lhsIchrStore) of
+                                                                                                { _initChrStore | _initChrStore `seq` (True) ->
+                                                                                                (case (mkScopedCHR2 _chrFIIn (Seq.toList _exprIchrClassDeclSq) _instsOuter _initChrStore) of
+                                                                                                 { __tup5 | __tup5 `seq` (True) ->
+                                                                                                 (case (__tup5) of
+                                                                                                  { (_chrStoreOuterScope,_) | _chrStoreOuterScope `seq` (True) ->
+                                                                                                  (case (__tup4) of
+                                                                                                   { (_,_instsInner) | _instsInner `seq` (True) ->
+                                                                                                   (case (mkScopedCHR2 _chrFIIn [] _instsInner _chrStoreOuterScope) of
+                                                                                                    { __tup6 | __tup6 `seq` (True) ->
+                                                                                                    (case (__tup6) of
+                                                                                                     { (_chrStore,_) | _chrStore `seq` (True) ->
+                                                                                                     (case (_chrStore) of
+                                                                                                      { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                      (case (emptyVarMp) of
+                                                                                                       { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                       (case (Ty_Any) of
+                                                                                                        { _exprOknTy | _exprOknTy `seq` (True) ->
+                                                                                                        (case (strongFIOpts) of
+                                                                                                         { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                         (case (_exprIkiVarMp) of
+                                                                                                          { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
                                                                                                           (case (Set.empty) of
-                                                                                                           { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                           (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                            { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                (case (Map.unionsWith (++)
-                                                                                                                       $ map (\(c,r) -> Map.singleton (_exprItyVarMp `varUpd` c) r)
-                                                                                                                       $ Map.toList
-                                                                                                                       $ _exprIgathRangeMp
-                                                                                                                         `Map.union` cnstrMpToRangeMp _exprIgathCnstrMp) of
-                                                                                                                 { _rangeMp | _rangeMp `seq` (True) ->
-                                                                                                                 (case (_rangeMp) of
-                                                                                                                  { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                  (case (_exprIgathValGam `gamUnion` _lhsIvalGam) of
-                                                                                                                   { _finValGam | _finValGam `seq` (True) ->
-                                                                                                                   (case (_finValGam) of
-                                                                                                                    { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                    (case (__tup8) of
-                                                                                                                     { (_,_,_,_,_lUniq_9_simplify) | _lUniq_9_simplify `seq` (True) ->
-                                                                                                                     (case (_exprItyVarMp `varUpd` _exprIgathCnstrMp) of
-                                                                                                                      { _toProveCnstrMp | _toProveCnstrMp `seq` (True) ->
-                                                                                                                      (case (_toProveCnstrMp) of
-                                                                                                                       { _toProveHereCnstrMp | _toProveHereCnstrMp `seq` (True) ->
-                                                                                                                       (case (_chrFIIn {fiVarMp = _exprItyVarMp}) of
-                                                                                                                        { _chrProveFIIn | _chrProveFIIn `seq` (True) ->
-                                                                                                                        (case (ehcOptTrace _lhsIopts "AGItf.simplify" $
-                                                                                                                               simplify [SimplifyHow_Canonicalize] (_chrProveFIIn {fiUniq = _lUniq_9_simplify}) _chrStore _clDfGam (heurScopedEHC _chrProveFIIn) (\x -> (x,[])) Map.empty _toProveHereCnstrMp emptySimplifyResult) of
-                                                                                                                         { __tup1 | __tup1 `seq` (True) ->
-                                                                                                                         (case (__tup1) of
-                                                                                                                          { (_,_,_,_chrSolveSimpTyVarMp,_,_,_,_,_,_) | _chrSolveSimpTyVarMp `seq` (True) ->
-                                                                                                                          (case (_chrSolveSimpTyVarMp `varUpd`
-                                                                                                                                 _exprItyVarMp) of
-                                                                                                                           { _finTyVarMp | _finTyVarMp `seq` (True) ->
-                                                                                                                           (case (_finTyVarMp) of
-                                                                                                                            { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                            (case (__tup8) of
-                                                                                                                             { (_,_,_,_lUniq_98_fitsIn_ty,_) | _lUniq_98_fitsIn_ty `seq` (True) ->
+                                                                                                           { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                           (case (Set.empty) of
+                                                                                                            { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                            (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                             { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                 (case (Map.unionsWith (++)
+                                                                                                                        $ map (\(c,r) -> Map.singleton (_exprItyVarMp `varUpd` c) r)
+                                                                                                                        $ Map.toList
+                                                                                                                        $ _exprIgathRangeMp
+                                                                                                                          `Map.union` cnstrMpToRangeMp _exprIgathCnstrMp) of
+                                                                                                                  { _rangeMp | _rangeMp `seq` (True) ->
+                                                                                                                  (case (_rangeMp) of
+                                                                                                                   { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                   (case (_exprIgathValGam `gamUnion` _lhsIvalGam) of
+                                                                                                                    { _finValGam | _finValGam `seq` (True) ->
+                                                                                                                    (case (_finValGam) of
+                                                                                                                     { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                     (case (__tup8) of
+                                                                                                                      { (_,_,_,_,_lUniq_9_simplify) | _lUniq_9_simplify `seq` (True) ->
+                                                                                                                      (case (_exprItyVarMp `varUpd` _exprIgathCnstrMp) of
+                                                                                                                       { _toProveCnstrMp | _toProveCnstrMp `seq` (True) ->
+                                                                                                                       (case (_toProveCnstrMp) of
+                                                                                                                        { _toProveHereCnstrMp | _toProveHereCnstrMp `seq` (True) ->
+                                                                                                                        (case (_chrFIIn {fiVarMp = _exprItyVarMp}) of
+                                                                                                                         { _chrProveFIIn | _chrProveFIIn `seq` (True) ->
+                                                                                                                         (case (ehcOptTrace _lhsIopts "AGItf.simplify" $
+                                                                                                                                simplify [SimplifyHow_Canonicalize] (_chrProveFIIn {fiUniq = _lUniq_9_simplify}) _chrStore _clDfGam (heurScopedEHC _chrProveFIIn) (\x -> (x,[])) Map.empty _toProveHereCnstrMp emptySimplifyResult) of
+                                                                                                                          { __tup1 | __tup1 `seq` (True) ->
+                                                                                                                          (case (__tup1) of
+                                                                                                                           { (_,_,_,_chrSolveSimpTyVarMp,_,_,_,_,_,_,_) | _chrSolveSimpTyVarMp `seq` (True) ->
+                                                                                                                           (case (_chrSolveSimpTyVarMp `varUpd`
+                                                                                                                                  _exprItyVarMp) of
+                                                                                                                            { _finTyVarMp | _finTyVarMp `seq` (True) ->
+                                                                                                                            (case (_finTyVarMp) of
+                                                                                                                             { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
                                                                                                                              (case (__tup8) of
-                                                                                                                              { (_,_,_lUniq_98_IO_tvar,_,_) | _lUniq_98_IO_tvar `seq` (True) ->
-                                                                                                                              (case (_lhsImoduleNm) of
-                                                                                                                               { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                               (case (__tup1) of
-                                                                                                                                { (_,_,_,_,_,_,_,_,_chrSolveMainScopeBindMp,_) | _chrSolveMainScopeBindMp `seq` (True) ->
-                                                                                                                                (case (mkScopeBindings True _predScope _chrSolveMainScopeBindMp) of
-                                                                                                                                 { __tup3 | __tup3 `seq` (True) ->
-                                                                                                                                 (case (__tup3) of
-                                                                                                                                  { (_,_chrScopeBindMp) | _chrScopeBindMp `seq` (True) ->
-                                                                                                                                  (case (_chrScopeBindMp) of
-                                                                                                                                   { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                   (case (__tup1) of
-                                                                                                                                    { (_,_,_,_,_,_,_,_chrSolveMainEvidBindMp,_,_) | _chrSolveMainEvidBindMp `seq` (True) ->
-                                                                                                                                    (case (_chrSolveMainEvidBindMp) of
-                                                                                                                                     { _chrEvidBindMp | _chrEvidBindMp `seq` (True) ->
-                                                                                                                                     (case (_chrEvidBindMp) of
-                                                                                                                                      { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                      (case (emptyCSubst) of
-                                                                                                                                       { _cSubst | _cSubst `seq` (True) ->
-                                                                                                                                       (case (_cSubst) of
-                                                                                                                                        { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                        (case (ExprCtxt_Top) of
-                                                                                                                                         { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                         (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                          { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                              (case (defaultFIEnv
-                                                                                                                                                         { feEHCOpts = _lhsIopts
-                                                                                                                                                         , fePredScope = _predScope
-                                                                                                                                                         , feTyGam = _exprIgathTyGam
-                                                                                                                                                         , fePolGam = _exprIgathPolGam
-                                                                                                                                                         , feRange = emptyRange
-                                                                                                                                                         }) of
-                                                                                                                                               { _fe | _fe `seq` (True) ->
-                                                                                                                                               (case (if _lhsIisMainMod
-                                                                                                                                                      then let (t,e) = valGamLookupTy hsnMain _exprIgathValGam
-                                                                                                                                                           in  (fitsIn strongFIOpts _fe _lUniq_98_fitsIn_ty _exprItyVarMp t (tyTopLevelMain _lhsIopts _lUniq_98_IO_tvar), e)
-                                                                                                                                                      else (emptyFO,[])) of
-                                                                                                                                                { __tup7 | __tup7 `seq` (True) ->
-                                                                                                                                                (case (__tup7) of
-                                                                                                                                                 { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                 (case (__tup7) of
-                                                                                                                                                  { (_foMain,_) | _foMain `seq` (True) ->
-                                                                                                                                                  (case (__tup1) of
-                                                                                                                                                   { (_,_chrSolveMainRemCnstrMp,_,_,_,_,_,_,_,_) | _chrSolveMainRemCnstrMp `seq` (True) ->
-                                                                                                                                                   (case (_chrSolveMainRemCnstrMp) of
-                                                                                                                                                    { _cannotProveCnstrMp | _cannotProveCnstrMp `seq` (True) ->
-                                                                                                                                                    (case (mkPrvErr _rangeMp emptyRange _cannotProveCnstrMp) of
-                                                                                                                                                     { _predNotPrfErrs | _predNotPrfErrs `seq` (True) ->
+                                                                                                                              { (_,_,_,_lUniq_98_fitsIn_ty,_) | _lUniq_98_fitsIn_ty `seq` (True) ->
+                                                                                                                              (case (__tup8) of
+                                                                                                                               { (_,_,_lUniq_98_IO_tvar,_,_) | _lUniq_98_IO_tvar `seq` (True) ->
+                                                                                                                               (case (trPP (`Set.member` ehcOptTraceOn _lhsIopts)) of
+                                                                                                                                { _tr | _tr `seq` (True) ->
+                                                                                                                                (case (_tr) of
+                                                                                                                                 { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                 (case (_lhsImoduleNm) of
+                                                                                                                                  { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                  (case (__tup1) of
+                                                                                                                                   { (_,_,_,_,_,_,_,_,_,_chrSolveMainScopeBindMp,_) | _chrSolveMainScopeBindMp `seq` (True) ->
+                                                                                                                                   (case (mkScopeBindings True _predScope _chrSolveMainScopeBindMp) of
+                                                                                                                                    { __tup3 | __tup3 `seq` (True) ->
+                                                                                                                                    (case (__tup3) of
+                                                                                                                                     { (_,_chrScopeBindMp) | _chrScopeBindMp `seq` (True) ->
+                                                                                                                                     (case (_chrScopeBindMp) of
+                                                                                                                                      { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                      (case (__tup1) of
+                                                                                                                                       { (_,_,_,_,_,_,_,_,_chrSolveMainEvidBindMp,_,_) | _chrSolveMainEvidBindMp `seq` (True) ->
+                                                                                                                                       (case (_chrSolveMainEvidBindMp) of
+                                                                                                                                        { _chrEvidBindMp | _chrEvidBindMp `seq` (True) ->
+                                                                                                                                        (case (_chrEvidBindMp) of
+                                                                                                                                         { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                         (case (emptyCSubst) of
+                                                                                                                                          { _cSubst | _cSubst `seq` (True) ->
+                                                                                                                                          (case (_cSubst) of
+                                                                                                                                           { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                           (case (ExprCtxt_Top) of
+                                                                                                                                            { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                            (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                             { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                 (case (defaultFIEnv
+                                                                                                                                                            { feEHCOpts = _lhsIopts
+                                                                                                                                                            , fePredScope = _predScope
+                                                                                                                                                            , feTyGam = _exprIgathTyGam
+                                                                                                                                                            , fePolGam = _exprIgathPolGam
+                                                                                                                                                            , feRange = emptyRange
+                                                                                                                                                            }) of
+                                                                                                                                                  { _fe | _fe `seq` (True) ->
+                                                                                                                                                  (case (if _lhsIisMainMod
+                                                                                                                                                         then let (t,e) = valGamLookupTy hsnMain _exprIgathValGam
+                                                                                                                                                              in  (fitsIn strongFIOpts _fe _lUniq_98_fitsIn_ty _exprItyVarMp t (tyTopLevelMain _lhsIopts _lUniq_98_IO_tvar), e)
+                                                                                                                                                         else (emptyFO,[])) of
+                                                                                                                                                   { __tup7 | __tup7 `seq` (True) ->
+                                                                                                                                                   (case (__tup7) of
+                                                                                                                                                    { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                    (case (__tup7) of
+                                                                                                                                                     { (_foMain,_) | _foMain `seq` (True) ->
                                                                                                                                                      (case (__tup1) of
-                                                                                                                                                      { (_,_,_,_,_chrSolveMainErrs,_,_,_,_,_) | _chrSolveMainErrs `seq` (True) ->
-                                                                                                                                                      (case (Seq.unions [ Seq.fromList _predNotPrfErrs
-                                                                                                                                                                        , Seq.fromList _chrSolveMainErrs
-                                                                                                                                                                        , Seq.fromList _nmErrs
-                                                                                                                                                                        , foErrSq _foMain
-                                                                                                                                                                        ]) of
-                                                                                                                                                       { _lErrSq | _lErrSq `seq` (True) ->
-                                                                                                                                                       (case (Seq.unions [_lErrSq, _exprIallErrSq]) of
-                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                        (case (__tup3) of
-                                                                                                                                                         { (_chrScopeMainBindL,_) | _chrScopeMainBindL `seq` (True) ->
-                                                                                                                                                         (case ([(CBindCateg_Rec,_chrScopeMainBindL)]) of
-                                                                                                                                                          { _extraCBindL | _extraCBindL `seq` (True) ->
-                                                                                                                                                          (case (case acoreExprMbVar _exprIletCBody of
-                                                                                                                                                                   Just n | n == hsnMain -> True
-                                                                                                                                                                   _                     -> False) of
-                                                                                                                                                           { _mainUseExists | _mainUseExists `seq` (True) ->
-                                                                                                                                                           (case (_lhsIisMainMod) of
-                                                                                                                                                            { _isMainMod | _isMainMod `seq` (True) ->
-                                                                                                                                                            (case (let bm    = acoreVar hsnMain
-                                                                                                                                                                       bb    = _exprIletCBody
-                                                                                                                                                                       db    = acoreLet acoreBindcategPlain [acoreBind1Ty hsnMain (acoreTyErr $ "EH.ToCore.AGItf.main") $ acoreRunMain _exprIletCBody]
-                                                                                                                                                                       mb m  = acoreLet acoreBindcategPlain [mkb $ acoreRunMain me]
-                                                                                                                                                                             where (me,mkb) = cbindExtractExprMk m
-                                                                                                                                                                       (b,d) = case (_exprIletValMainCBindL, _mainUseExists, _isMainMod) of
-                                                                                                                                                                           ([]   , False, True) -> (bm, db   )
-                                                                                                                                                                           ((m:_), False, True) -> (bm, mb m )
-                                                                                                                                                                           ([]   , True , True) -> (bb, db   )
-                                                                                                                                                                           ((m:_), True , True) -> (bb, mb m )
-                                                                                                                                                                           ((m:_), _    , _   ) -> (bb, mb m )
-                                                                                                                                                                           (_    , _    , _   ) -> (bb, id   )
-                                                                                                                                                                       alldata =
-                                                                                                                                                                         [ (tn, [ (cn, dtiCTag dti) | (cn,dti) <- Map.toList $ dgiConstrTagMp dgi ])
-                                                                                                                                                                         | (tn,dgi) <- gamToAssocL _exprIgathDataGam, not (dgiIsNewtype dgi)
-                                                                                                                                                                         ]
-                                                                                                                                                                       allConNmS = Set.fromList [ cn | (_,cs) <- alldata, (cn,_) <- cs ]
-                                                                                                                                                                   in  CModule_Mod _lhsImoduleNm
-                                                                                                                                                                           (   [ CExport_ExportData (hsnQualified tn) (Just [ hsnQualified cn | (cn,_) <- cs ]) | (tn,cs) <- alldata ]
-                                                                                                                                                                            ++ [ CExport_Export (hsnQualified n) | n <- Map.keys $ mieimplHsName2FldMp _lhsImoduleImportExportImpl, n `Set.notMember` allConNmS ]
-                                                                                                                                                                           )
-                                                                                                                                                                           (map CImport_Import $ Set.toList $ iumHSDeclModules _lhsIimportUsedModules)
-                                                                                                                                                                           [ CDeclMeta_Data tn [ CDataCon_Con cn (ctagTag ctag) (ctagArity ctag) | (cn,ctag) <- cs ]
-                                                                                                                                                                           | (tn,cs) <- alldata
-                                                                                                                                                                           ]
-                                                                                                                                                                           (
-                                                                                                                                                                              cSubstAppExpr True _exprIcSubst
-                                                                                                                                                                              (foldr (\(c,b) e -> acoreLet c b e)
-                                                                                                                                                                                (d b)
-                                                                                                                                                                                (_exprIletTyCBindL ++ _extraCBindL ++ _exprIfrontCBindL ++ _exprIletValCBindL
-                                                                                                                                                                                ++ _exprIbackCBindL
-                                                                                                                                                                                )
-                                                                                                                                                                              )
-                                                                                                                                                                              Nothing
-                                                                                                                                                                           )) of
-                                                                                                                                                             { _lhsOcmodule | _lhsOcmodule `seq` (True) ->
-                                                                                                                                                             (case (_exprIgUniq) of
-                                                                                                                                                              { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                                                                                                                              (case (__tup5) of
-                                                                                                                                                               { (_,_gathChrStore) | _gathChrStore `seq` (True) ->
-                                                                                                                                                               (case (_gathChrStore) of
-                                                                                                                                                                { _lhsOgathChrStore | _lhsOgathChrStore `seq` (True) ->
-                                                                                                                                                                (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathClDfGam" _exprIgathClDfGam) of
-                                                                                                                                                                 { _lhsOgathClDfGam | _lhsOgathClDfGam `seq` (True) ->
-                                                                                                                                                                 (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathClGam" _exprIgathClGam) of
-                                                                                                                                                                  { _lhsOgathClGam | _lhsOgathClGam `seq` (True) ->
-                                                                                                                                                                  (case (_exprIgathDataGam) of
-                                                                                                                                                                   { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                                   (case (_exprIgathHiddenExports) of
-                                                                                                                                                                    { _lhsOgathHiddenExports | _lhsOgathHiddenExports `seq` (True) ->
-                                                                                                                                                                    (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathKiGam" _exprIgathKiGam) of
-                                                                                                                                                                     { _lhsOgathKiGam | _lhsOgathKiGam `seq` (True) ->
-                                                                                                                                                                     (case (_exprIgathLamMp) of
-                                                                                                                                                                      { _lhsOgathLamMp | _lhsOgathLamMp `seq` (True) ->
-                                                                                                                                                                      (case (__tup1) of
-                                                                                                                                                                       { (_,_,_,_,_,_chrSimplifyResult,_,_,_,_) | _chrSimplifyResult `seq` (True) ->
-                                                                                                                                                                       (case (mentrelFilterMpUnions
-                                                                                                                                                                                [ _exprIgathMentrelFilterMp
-                                                                                                                                                                                , gathMentrelFilterMpFromSimplifyResult _lhsImoduleNm _chrSimplifyResult
-                                                                                                                                                                                ]) of
-                                                                                                                                                                        { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                        (case (_gathMentrelFilterMp) of
-                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                         (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathPolGam" _exprIgathPolGam) of
-                                                                                                                                                                          { _lhsOgathPolGam | _lhsOgathPolGam `seq` (True) ->
-                                                                                                                                                                          (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathTyGam" _exprIgathTyGam) of
-                                                                                                                                                                           { _lhsOgathTyGam | _lhsOgathTyGam `seq` (True) ->
-                                                                                                                                                                           (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathTyKiGam" _exprIgathTyKiGam) of
-                                                                                                                                                                            { _lhsOgathTyKiGam | _lhsOgathTyKiGam `seq` (True) ->
-                                                                                                                                                                            (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathValGam" $ _finTyVarMp `varUpd` _exprIgathValGam) of
-                                                                                                                                                                             { _lhsOgathValGam | _lhsOgathValGam `seq` (True) ->
-                                                                                                                                                                             (case (if Set.null _exprIorphanS then Nothing else Just _exprIorphanS) of
-                                                                                                                                                                              { _lhsOmbOrphan | _lhsOmbOrphan `seq` (True) ->
-                                                                                                                                                                              (case (ppErrsSq _lErrSq) of
-                                                                                                                                                                               { _errTopPP | _errTopPP `seq` (True) ->
-                                                                                                                                                                               (case (empty) of
-                                                                                                                                                                                { _extraPP | _extraPP `seq` (True) ->
-                                                                                                                                                                                (case (_extraPP >-< _exprIpp
-                                                                                                                                                                                       >-< _errTopPP) of
-                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                 (case (ppTy (tyQuantifyClosed _exprIty)) of
-                                                                                                                                                                                  { _lhsOtopTyPP | _lhsOtopTyPP `seq` (True) ->
-                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOcmodule,_lhsOgUniq,_lhsOgathChrStore,_lhsOgathClDfGam,_lhsOgathClGam,_lhsOgathDataGam,_lhsOgathHiddenExports,_lhsOgathKiGam,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathPolGam,_lhsOgathTyGam,_lhsOgathTyKiGam,_lhsOgathValGam,_lhsOmbOrphan,_lhsOpp,_lhsOtopTyPP) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))
+                                                                                                                                                      { (_,_chrSolveMainRemCnstrMp,_,_,_,_,_,_,_,_,_) | _chrSolveMainRemCnstrMp `seq` (True) ->
+                                                                                                                                                      (case (_chrSolveMainRemCnstrMp) of
+                                                                                                                                                       { _cannotProveCnstrMp | _cannotProveCnstrMp `seq` (True) ->
+                                                                                                                                                       (case (mkPrvErr _rangeMp emptyRange _cannotProveCnstrMp) of
+                                                                                                                                                        { _predNotPrfErrs | _predNotPrfErrs `seq` (True) ->
+                                                                                                                                                        (case (__tup1) of
+                                                                                                                                                         { (_,_,_,_,_chrSolveMainErrs,_,_,_,_,_,_) | _chrSolveMainErrs `seq` (True) ->
+                                                                                                                                                         (case (Seq.unions [ Seq.fromList _predNotPrfErrs
+                                                                                                                                                                           , Seq.fromList _chrSolveMainErrs
+                                                                                                                                                                           , Seq.fromList _nmErrs
+                                                                                                                                                                           , foErrSq _foMain
+                                                                                                                                                                           ]) of
+                                                                                                                                                          { _lErrSq | _lErrSq `seq` (True) ->
+                                                                                                                                                          (case (Seq.unions [_lErrSq, _exprIallErrSq]) of
+                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                           (case (__tup3) of
+                                                                                                                                                            { (_chrScopeMainBindL,_) | _chrScopeMainBindL `seq` (True) ->
+                                                                                                                                                            (case (__tup1) of
+                                                                                                                                                             { (_,_,_,_,_,_,_,_chrSolveMainEvidCBindL,_,_,_) | _chrSolveMainEvidCBindL `seq` (True) ->
+                                                                                                                                                             (case ([(CBindCateg_Rec, _chrSolveMainEvidCBindL ++ _chrScopeMainBindL)]) of
+                                                                                                                                                              { _extraCBindL | _extraCBindL `seq` (True) ->
+                                                                                                                                                              (case (case acoreExprMbVar _exprIletCBody of
+                                                                                                                                                                       Just n | n == hsnMain -> True
+                                                                                                                                                                       _                     -> False) of
+                                                                                                                                                               { _mainUseExists | _mainUseExists `seq` (True) ->
+                                                                                                                                                               (case (_lhsIisMainMod) of
+                                                                                                                                                                { _isMainMod | _isMainMod `seq` (True) ->
+                                                                                                                                                                (case (let bm    = acoreVar hsnMain
+                                                                                                                                                                           bb    = _exprIletCBody
+                                                                                                                                                                           db    = acoreLet acoreBindcategPlain [acoreBind1Ty hsnMain (acoreTyErr $ "EH.ToCore.AGItf.main") $ acoreRunMain _exprIletCBody]
+                                                                                                                                                                           mb m  = acoreLet acoreBindcategPlain [mkb $ acoreRunMain me]
+                                                                                                                                                                                 where (me,mkb) = cbindExtractExprMk m
+                                                                                                                                                                           (b,d) = case (_exprIletValMainCBindL, _mainUseExists, _isMainMod) of
+                                                                                                                                                                               ([]   , False, True) -> (bm, db   )
+                                                                                                                                                                               ((m:_), False, True) -> (bm, mb m )
+                                                                                                                                                                               ([]   , True , True) -> (bb, db   )
+                                                                                                                                                                               ((m:_), True , True) -> (bb, mb m )
+                                                                                                                                                                               ((m:_), _    , _   ) -> (bb, mb m )
+                                                                                                                                                                               (_    , _    , _   ) -> (bb, id   )
+                                                                                                                                                                           alldata =
+                                                                                                                                                                             [ (tn, [ (cn, dtiCTag dti) | (cn,dti) <- Map.toList $ dgiConstrTagMp dgi ])
+                                                                                                                                                                             | (tn,dgi) <- gamToAssocL _exprIgathDataGam, not (dgiIsNewtype dgi)
+                                                                                                                                                                             ]
+                                                                                                                                                                           allConNmS = Set.fromList [ cn | (_,cs) <- alldata, (cn,_) <- cs ]
+                                                                                                                                                                       in  CModule_Mod _lhsImoduleNm
+                                                                                                                                                                               (   [ CExport_ExportData (hsnQualified tn) (Just [ hsnQualified cn | (cn,_) <- cs ]) | (tn,cs) <- alldata ]
+                                                                                                                                                                                ++ [ CExport_Export (hsnQualified n) | n <- Map.keys $ mieimplHsName2FldMp _lhsImoduleImportExportImpl, n `Set.notMember` allConNmS ]
+                                                                                                                                                                               )
+                                                                                                                                                                               (map CImport_Import $ Set.toList $ iumSrcDeclModules _lhsIimportUsedModules)
+                                                                                                                                                                               [ CDeclMeta_Data tn [ CDataCon_Con cn (ctagTag ctag) (ctagArity ctag) | (cn,ctag) <- cs ]
+                                                                                                                                                                               | (tn,cs) <- alldata
+                                                                                                                                                                               ]
+                                                                                                                                                                               (
+                                                                                                                                                                                  cSubstAppExpr True _exprIcSubst
+                                                                                                                                                                                  (foldr (\(c,b) e -> acoreLet c b e)
+                                                                                                                                                                                    (d b)
+                                                                                                                                                                                    (_exprIletTyCBindL ++ _extraCBindL ++ _exprIfrontCBindL ++ _exprIletValCBindL
+                                                                                                                                                                                    ++ _exprIbackCBindL
+                                                                                                                                                                                    )
+                                                                                                                                                                                  )
+                                                                                                                                                                                  Nothing
+                                                                                                                                                                               )) of
+                                                                                                                                                                 { _lhsOcmodule | _lhsOcmodule `seq` (True) ->
+                                                                                                                                                                 (case (_exprIgUniq) of
+                                                                                                                                                                  { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                                                                                                                                  (case (__tup5) of
+                                                                                                                                                                   { (_,_gathChrStore) | _gathChrStore `seq` (True) ->
+                                                                                                                                                                   (case (_gathChrStore) of
+                                                                                                                                                                    { _lhsOgathChrStore | _lhsOgathChrStore `seq` (True) ->
+                                                                                                                                                                    (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathClDfGam" _exprIgathClDfGam) of
+                                                                                                                                                                     { _lhsOgathClDfGam | _lhsOgathClDfGam `seq` (True) ->
+                                                                                                                                                                     (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathClGam" _exprIgathClGam) of
+                                                                                                                                                                      { _lhsOgathClGam | _lhsOgathClGam `seq` (True) ->
+                                                                                                                                                                      (case (_exprIgathDataGam) of
+                                                                                                                                                                       { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                                       (case (_exprIgathHiddenExports) of
+                                                                                                                                                                        { _lhsOgathHiddenExports | _lhsOgathHiddenExports `seq` (True) ->
+                                                                                                                                                                        (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathKiGam" _exprIgathKiGam) of
+                                                                                                                                                                         { _lhsOgathKiGam | _lhsOgathKiGam `seq` (True) ->
+                                                                                                                                                                         (case (_exprIgathLamMp) of
+                                                                                                                                                                          { _lhsOgathLamMp | _lhsOgathLamMp `seq` (True) ->
+                                                                                                                                                                          (case (__tup1) of
+                                                                                                                                                                           { (_,_,_,_,_,_chrSimplifyResult,_,_,_,_,_) | _chrSimplifyResult `seq` (True) ->
+                                                                                                                                                                           (case (mentrelFilterMpUnions
+                                                                                                                                                                                    [ _exprIgathMentrelFilterMp
+                                                                                                                                                                                    , gathMentrelFilterMpFromSimplifyResult _lhsImoduleNm _chrSimplifyResult
+                                                                                                                                                                                    ]) of
+                                                                                                                                                                            { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                            (case (_gathMentrelFilterMp) of
+                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                             (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathPolGam" _exprIgathPolGam) of
+                                                                                                                                                                              { _lhsOgathPolGam | _lhsOgathPolGam `seq` (True) ->
+                                                                                                                                                                              (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathTyGam" _exprIgathTyGam) of
+                                                                                                                                                                               { _lhsOgathTyGam | _lhsOgathTyGam `seq` (True) ->
+                                                                                                                                                                               (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathTyKiGam" _exprIgathTyKiGam) of
+                                                                                                                                                                                { _lhsOgathTyKiGam | _lhsOgathTyKiGam `seq` (True) ->
+                                                                                                                                                                                (case (ehcOptTrace _lhsIopts "AGItf.lhs.gathValGam" $ _finTyVarMp `varUpd` _exprIgathValGam) of
+                                                                                                                                                                                 { _lhsOgathValGam | _lhsOgathValGam `seq` (True) ->
+                                                                                                                                                                                 (case (if Set.null _exprIorphanS then Nothing else Just _exprIorphanS) of
+                                                                                                                                                                                  { _lhsOmbOrphan | _lhsOmbOrphan `seq` (True) ->
+                                                                                                                                                                                  (case (ppErrsSq _lErrSq) of
+                                                                                                                                                                                   { _errTopPP | _errTopPP `seq` (True) ->
+                                                                                                                                                                                   (case (empty) of
+                                                                                                                                                                                    { _extraPP | _extraPP `seq` (True) ->
+                                                                                                                                                                                    (case (_extraPP >-< _exprIpp
+                                                                                                                                                                                           >-< _errTopPP) of
+                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                     (case (ppTy (tyQuantifyClosed _exprIty)) of
+                                                                                                                                                                                      { _lhsOtopTyPP | _lhsOtopTyPP `seq` (True) ->
+                                                                                                                                                                                      (case (_exprItrpp) of
+                                                                                                                                                                                       { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOcmodule,_lhsOgUniq,_lhsOgathChrStore,_lhsOgathClDfGam,_lhsOgathClGam,_lhsOgathDataGam,_lhsOgathHiddenExports,_lhsOgathKiGam,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathPolGam,_lhsOgathTyGam,_lhsOgathTyKiGam,_lhsOgathValGam,_lhsOmbOrphan,_lhsOpp,_lhsOtopTyPP,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))
 
diff --git a/src/UHC/Light/Compiler/EH/MainAG_CaseAlt.hs b/src/UHC/Light/Compiler/EH/MainAG_CaseAlt.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_CaseAlt.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_CaseAlt.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -106,6 +106,7 @@
          tyKiGam              : TyKiGam
          tyKiGlobFreeTvarS    : TyVarIdS
       chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
          kiVarMp              : VarMp
          polVarMp             : VarMp
    visit 4:
@@ -146,6 +147,7 @@
          moduleNm             : HsName
          rangeMp              : RangeMp
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
       chained attribute:
          cSubst               : CSubst
       synthesized attributes:
@@ -157,6 +159,7 @@
          pp                   : PP_Doc
          ralt                 : RAlt
          ralt'                : RAlt
+         trpp                 : TrPP
          ty                   : Ty
    alternatives:
       alternative Pat:
@@ -234,7 +237,8 @@
                                                                                               { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
                                                                                               (case ((let sem_CaseAlt_Pat_3 :: T_CaseAlt_3
                                                                                                           sem_CaseAlt_Pat_3 =
-                                                                                                              (\ _lhsIkiVarMp
+                                                                                                              (\ _lhsIgenerDataInfoMp
+                                                                                                                 _lhsIkiVarMp
                                                                                                                  _lhsIopts
                                                                                                                  _lhsIpolGam
                                                                                                                  _lhsIpolVarMp
@@ -242,283 +246,298 @@
                                                                                                                  _lhsItyGam
                                                                                                                  _lhsItyKiGam
                                                                                                                  _lhsItyKiGlobFreeTvarS ->
-                                                                                                                   _lhsIkiVarMp `seq`
-                                                                                                                   (_lhsIopts `seq`
-                                                                                                                    (_lhsIpolGam `seq`
-                                                                                                                     (_lhsIpolVarMp `seq`
-                                                                                                                      (_lhsIpredScope `seq`
-                                                                                                                       (_lhsItyGam `seq`
-                                                                                                                        (_lhsItyKiGam `seq`
-                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsIpredScope) of
-                                                                                                                              { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                                              (case (_lhsIpolVarMp) of
-                                                                                                                               { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                                               (case (_lhsIpolGam) of
-                                                                                                                                { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                                                (case (_lhsIopts) of
-                                                                                                                                 { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                                                 (case (_lhsIkiVarMp) of
-                                                                                                                                  { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                                                  (case (gamPushNew _lhsItyGam) of
-                                                                                                                                   { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                                                   (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                                    { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                                        (case (_patExprItyKiGam) of
-                                                                                                                                         { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                                                         (case (_patExprItyGam) of
-                                                                                                                                          { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                                                          (case (_lhsIpredScope) of
-                                                                                                                                           { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                                                           (case (_patExprIpolVarMp) of
-                                                                                                                                            { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                                                            (case (_lhsIpolGam) of
-                                                                                                                                             { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                                                             (case (_lhsIopts) of
-                                                                                                                                              { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                                                              (case (_patExprIkiVarMp) of
-                                                                                                                                               { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                                                               (case (varFreeSet (_patExprIkiVarMp `varUpd` gamTop _patExprItyKiGam) `Set.union` _lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                                                 { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                                                     (case (_exprIkiVarMp) of
-                                                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                      (case (_exprIpolVarMp) of
-                                                                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                       (case ((let sem_CaseAlt_Pat_4 :: T_CaseAlt_4
-                                                                                                                                                                   sem_CaseAlt_Pat_4 =
-                                                                                                                                                                       (\ _lhsIclGam
-                                                                                                                                                                          _lhsIdataGam
-                                                                                                                                                                          _lhsIfinKiVarMp
-                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                          _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                                                            (_lhsIdataGam `seq`
-                                                                                                                                                                             (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                              (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                  { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                  (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                   { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                    { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIdataGam) of
-                                                                                                                                                                                     { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIclGam) of
-                                                                                                                                                                                      { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                       { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                        { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                        (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                         { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIdataGam) of
-                                                                                                                                                                                          { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                                                          (case (_lhsIclGam) of
-                                                                                                                                                                                           { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                                                           (case (emptyGam) of
-                                                                                                                                                                                            { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                            (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                             { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                                                                 (case (expr_5 _exprOdataGam) of
-                                                                                                                                                                                                  { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                                                      (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                       { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                                                                           (case (_patExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
-                                                                                                                                                                                                            { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                            (case ((let sem_CaseAlt_Pat_5 :: T_CaseAlt_5
-                                                                                                                                                                                                                        sem_CaseAlt_Pat_5 =
-                                                                                                                                                                                                                            (\ _lhsIknPatTy
-                                                                                                                                                                                                                               _lhsIpatTyVarMp
-                                                                                                                                                                                                                               _lhsIvalGam ->
-                                                                                                                                                                                                                                 _lhsIknPatTy `seq`
-                                                                                                                                                                                                                                 (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                                  (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                   ((case (emptyGam) of
-                                                                                                                                                                                                                                     { _tySigGam | _tySigGam `seq` (True) ->
-                                                                                                                                                                                                                                     (case (_tySigGam) of
-                                                                                                                                                                                                                                      { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                      (case (True) of
-                                                                                                                                                                                                                                       { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                                        { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                        (case (strongFIOpts) of
-                                                                                                                                                                                                                                         { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                         (case (gamPushNew _lhsIvalGam) of
-                                                                                                                                                                                                                                          { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                          (case (_lhsIknPatTy) of
-                                                                                                                                                                                                                                           { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                           (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                            { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                            (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                                                                             { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                                                                                 (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                                  { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                                      (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                       { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                       (case ((let sem_CaseAlt_Pat_6 :: T_CaseAlt_6
-                                                                                                                                                                                                                                                                   sem_CaseAlt_Pat_6 =
-                                                                                                                                                                                                                                                                       (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                          _lhsIclDfGam
-                                                                                                                                                                                                                                                                          _lhsIfiOpts
-                                                                                                                                                                                                                                                                          _lhsIknTy
-                                                                                                                                                                                                                                                                          _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                          _lhsItyVarMp
-                                                                                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                            _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                            (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                             (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                                              (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                                               (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                 (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                  (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                   ((case (_patExprIvalGam) of
-                                                                                                                                                                                                                                                                                     { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                      { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_lhsIknTy) of
-                                                                                                                                                                                                                                                                                       { _exprOknTy | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                        { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                         { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                          { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                           { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                            { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                             { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                              { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                               { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (varFreeSet (gamTop _patExprItyGam) `Set.union` _lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (varFreeSet (gamTop _patExprIvalGam) `Set.union` _lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                 { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                  { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                   { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                       (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                        { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                         { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                                                                                             (case (_patExprIgathCnstrMp `cnstrMpUnion` _exprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                              { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (_patExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                               { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case ((let sem_CaseAlt_Pat_7 :: T_CaseAlt_7
-                                                                                                                                                                                                                                                                                                                            sem_CaseAlt_Pat_7 =
-                                                                                                                                                                                                                                                                                                                                (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                   _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                   _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                   _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                   _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                            ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                              { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                               { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                 { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                  { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                   { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                    { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                     { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                      { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                       { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                        { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                         { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                          { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                           { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (emptyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                            { _tySigVarMp | _tySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (_tySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                             { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                              { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_patExprItopNm) of
-                                                                                                                                                                                                                                                                                                                                                               { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                     { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                                                                                                      { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                       { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                                                                                                           (case (_patExprIallErrSq `Seq.union` _exprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                            (case (_exprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                             { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                             (case (_patExprIerrSq `Seq.union` _exprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                              (case (_patExprIgathMentrelFilterMp `mentrelFilterMpUnion` _exprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (_patExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                (case (_patExprIty) of
-                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                 (case (empty) of
-                                                                                                                                                                                                                                                                                                                                                                                  { _extraPP | _extraPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIpp >|< _extraPP >###< "->" >#< _exprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                    (case (RAlt_Alt [_patExprIrpat] _exprIcexpr _exprIcaseFailS) of
-                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOralt | _lhsOralt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                     (case (RAlt_Alt (fsL2PatL $ reverse _patExprIfsRPatL) _exprIcexpr _exprIcaseFailS) of
-                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOralt' | _lhsOralt' `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                      (case (_exprIty) of
-                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOralt,_lhsOralt',_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                                                                                        in  sem_CaseAlt_Pat_7)) of
-                                                                                                                                                                                                                                                                                                                 { ( sem_CaseAlt_7) | True ->
-                                                                                                                                                                                                                                                                                                                 ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlt_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                               in  sem_CaseAlt_Pat_6)) of
-                                                                                                                                                                                                                                                        { ( sem_CaseAlt_6) | True ->
-                                                                                                                                                                                                                                                        ( _lhsOpatTyVarMp,sem_CaseAlt_6) }) }) }) }) }) }) }) }) }) }) }) })))))
-                                                                                                                                                                                                                    in  sem_CaseAlt_Pat_5)) of
-                                                                                                                                                                                                             { ( sem_CaseAlt_5) | True ->
-                                                                                                                                                                                                             ( _lhsOchrInstDeclSq,sem_CaseAlt_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                               in  sem_CaseAlt_Pat_4)) of
-                                                                                                                                                        { ( sem_CaseAlt_4) | True ->
-                                                                                                                                                        ( _lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlt_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+                                                                                                                   _lhsIgenerDataInfoMp `seq`
+                                                                                                                   (_lhsIkiVarMp `seq`
+                                                                                                                    (_lhsIopts `seq`
+                                                                                                                     (_lhsIpolGam `seq`
+                                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                                       (_lhsIpredScope `seq`
+                                                                                                                        (_lhsItyGam `seq`
+                                                                                                                         (_lhsItyKiGam `seq`
+                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                           ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsIpredScope) of
+                                                                                                                               { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                                               (case (_lhsIpolVarMp) of
+                                                                                                                                { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                                                (case (_lhsIpolGam) of
+                                                                                                                                 { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                                                 (case (_lhsIopts) of
+                                                                                                                                  { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                                                  (case (_lhsIkiVarMp) of
+                                                                                                                                   { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                                   (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                    { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                    (case (gamPushNew _lhsItyGam) of
+                                                                                                                                     { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                                                     (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                                      { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                                           { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                                                           (case (_patExprItyGam) of
+                                                                                                                                            { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                                                            (case (_lhsIpredScope) of
+                                                                                                                                             { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                                                             (case (_patExprIpolVarMp) of
+                                                                                                                                              { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                                                              (case (_lhsIpolGam) of
+                                                                                                                                               { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                                                               (case (_lhsIopts) of
+                                                                                                                                                { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                                                                (case (_patExprIkiVarMp) of
+                                                                                                                                                 { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                                                 (case (_patExprIgenerDataInfoMp) of
+                                                                                                                                                  { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                  (case (varFreeSet (_patExprIkiVarMp `varUpd` gamTop _patExprItyKiGam) `Set.union` _lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                   { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                   (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                                                    { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                                                        (case (_exprIgenerDataInfoMp) of
+                                                                                                                                                         { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                         (case (_exprIkiVarMp) of
+                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_exprIpolVarMp) of
+                                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                           (case ((let sem_CaseAlt_Pat_4 :: T_CaseAlt_4
+                                                                                                                                                                       sem_CaseAlt_Pat_4 =
+                                                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                                                              _lhsIdataGam
+                                                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                      { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                       { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                        { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                                                         { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                                                          { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                           { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                           (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                            { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                            (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                             { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                             (case (_lhsIdataGam) of
+                                                                                                                                                                                              { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                                                              (case (_lhsIclGam) of
+                                                                                                                                                                                               { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                                                               (case (emptyGam) of
+                                                                                                                                                                                                { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                 { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                                                                     (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                                                      { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                                                                               (case (_patExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
+                                                                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                                (case ((let sem_CaseAlt_Pat_5 :: T_CaseAlt_5
+                                                                                                                                                                                                                            sem_CaseAlt_Pat_5 =
+                                                                                                                                                                                                                                (\ _lhsIknPatTy
+                                                                                                                                                                                                                                   _lhsIpatTyVarMp
+                                                                                                                                                                                                                                   _lhsIvalGam ->
+                                                                                                                                                                                                                                     _lhsIknPatTy `seq`
+                                                                                                                                                                                                                                     (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                      (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                       ((case (emptyGam) of
+                                                                                                                                                                                                                                         { _tySigGam | _tySigGam `seq` (True) ->
+                                                                                                                                                                                                                                         (case (_tySigGam) of
+                                                                                                                                                                                                                                          { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                          (case (True) of
+                                                                                                                                                                                                                                           { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                                                                                            { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                            (case (strongFIOpts) of
+                                                                                                                                                                                                                                             { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                             (case (gamPushNew _lhsIvalGam) of
+                                                                                                                                                                                                                                              { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                              (case (_lhsIknPatTy) of
+                                                                                                                                                                                                                                               { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                               (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                                                                                 { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                                                                                     (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                                      { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                                          (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                           { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                           (case ((let sem_CaseAlt_Pat_6 :: T_CaseAlt_6
+                                                                                                                                                                                                                                                                       sem_CaseAlt_Pat_6 =
+                                                                                                                                                                                                                                                                           (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                              _lhsIclDfGam
+                                                                                                                                                                                                                                                                              _lhsIfiOpts
+                                                                                                                                                                                                                                                                              _lhsIknTy
+                                                                                                                                                                                                                                                                              _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                              _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                              _lhsItyVarMp
+                                                                                                                                                                                                                                                                              _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                 (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                                  (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                                   (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                     (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                       ((case (_patExprIvalGam) of
+                                                                                                                                                                                                                                                                                         { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                          { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsIknTy) of
+                                                                                                                                                                                                                                                                                           { _exprOknTy | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                            { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                             { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                              { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                               { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                 { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                  { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                   { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (varFreeSet (gamTop _patExprItyGam) `Set.union` _lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                    { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (varFreeSet (gamTop _patExprIvalGam) `Set.union` _lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                     { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                      { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                       { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                           (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                            { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                             { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                                                                                                 (case (_patExprIgathCnstrMp `cnstrMpUnion` _exprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                                  { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_patExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                   { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                    { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case ((let sem_CaseAlt_Pat_7 :: T_CaseAlt_7
+                                                                                                                                                                                                                                                                                                                                sem_CaseAlt_Pat_7 =
+                                                                                                                                                                                                                                                                                                                                    (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                       _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                       _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                       _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                       _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                       _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                       _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                       _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                       _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                         _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                         (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                          (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                           (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                            (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                             (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                              (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                               (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                 ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                   { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                    { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                     { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                      { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                       { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                        { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                         { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                          { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                           { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                            { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                             { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                              { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                               { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                 { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (emptyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                  { _tySigVarMp | _tySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (_tySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                   { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                    { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                     { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_patExprItopNm) of
+                                                                                                                                                                                                                                                                                                                                                                      { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                       { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                           (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                            { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                                                                                                             { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                              { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIallErrSq `Seq.union` _exprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                   (case (_exprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (_patExprIerrSq `Seq.union` _exprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                     (case (_patExprIgathMentrelFilterMp `mentrelFilterMpUnion` _exprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                      (case (_patExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                       (case (_patExprIty) of
+                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                        (case (empty) of
+                                                                                                                                                                                                                                                                                                                                                                                         { _extraPP | _extraPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                         (case (_patExprIpp >|< _extraPP >###< "->" >#< _exprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                          { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (RAlt_Alt [_patExprIrpat] _exprIcexpr _exprIcaseFailS) of
+                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOralt | _lhsOralt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                            (case (RAlt_Alt (fsL2PatL $ reverse _patExprIfsRPatL) _exprIcexpr _exprIcaseFailS) of
+                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOralt' | _lhsOralt' `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (_patExprItrpp >< _exprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (_exprIty) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOralt,_lhsOralt',_lhsOtrpp,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                                                                                            in  sem_CaseAlt_Pat_7)) of
+                                                                                                                                                                                                                                                                                                                     { ( sem_CaseAlt_7) | True ->
+                                                                                                                                                                                                                                                                                                                     ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlt_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+                                                                                                                                                                                                                                                                   in  sem_CaseAlt_Pat_6)) of
+                                                                                                                                                                                                                                                            { ( sem_CaseAlt_6) | True ->
+                                                                                                                                                                                                                                                            ( _lhsOpatTyVarMp,sem_CaseAlt_6) }) }) }) }) }) }) }) }) }) }) }) })))))
+                                                                                                                                                                                                                        in  sem_CaseAlt_Pat_5)) of
+                                                                                                                                                                                                                 { ( sem_CaseAlt_5) | True ->
+                                                                                                                                                                                                                 ( _lhsOchrInstDeclSq,sem_CaseAlt_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                   in  sem_CaseAlt_Pat_4)) of
+                                                                                                                                                            { ( sem_CaseAlt_4) | True ->
+                                                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlt_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                                       in  sem_CaseAlt_Pat_3)) of
                                                                                                { ( sem_CaseAlt_3) | True ->
                                                                                                ( _lhsOpredSameScopeCounter,sem_CaseAlt_3) }) }) }) }) }) }) }) }) }) }) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_CaseAlts.hs b/src/UHC/Light/Compiler/EH/MainAG_CaseAlts.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_CaseAlts.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_CaseAlts.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -106,6 +106,7 @@
          tyKiGam              : TyKiGam
          tyKiGlobFreeTvarS    : TyVarIdS
       chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
          kiVarMp              : VarMp
          polVarMp             : VarMp
    visit 4:
@@ -148,6 +149,7 @@
          moduleNm             : HsName
          rangeMp              : RangeMp
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
       chained attribute:
          cSubst               : CSubst
       synthesized attributes:
@@ -160,6 +162,7 @@
          ppL                  : [PP_Doc]
          raltL                : [RAlt]
          raltL'               : [RAlt]
+         trpp                 : TrPP
    alternatives:
       alternative Cons:
          child hd             : CaseAlt 
@@ -221,7 +224,8 @@
                                                                                            { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
                                                                                            (case ((let sem_CaseAlts_Cons_3 :: T_CaseAlts_3
                                                                                                        sem_CaseAlts_Cons_3 =
-                                                                                                           (\ _lhsIkiVarMp
+                                                                                                           (\ _lhsIgenerDataInfoMp
+                                                                                                              _lhsIkiVarMp
                                                                                                               _lhsIopts
                                                                                                               _lhsIpolGam
                                                                                                               _lhsIpolVarMp
@@ -229,269 +233,284 @@
                                                                                                               _lhsItyGam
                                                                                                               _lhsItyKiGam
                                                                                                               _lhsItyKiGlobFreeTvarS ->
-                                                                                                                _lhsIkiVarMp `seq`
-                                                                                                                (_lhsIopts `seq`
-                                                                                                                 (_lhsIpolGam `seq`
-                                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                                   (_lhsIpredScope `seq`
-                                                                                                                    (_lhsItyGam `seq`
-                                                                                                                     (_lhsItyKiGam `seq`
-                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                         { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                         (case (_lhsItyKiGam) of
-                                                                                                                          { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
-                                                                                                                          (case (_lhsItyGam) of
-                                                                                                                           { _tlOtyGam | _tlOtyGam `seq` (True) ->
-                                                                                                                           (case (_lhsIpredScope) of
-                                                                                                                            { _tlOpredScope | _tlOpredScope `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                             { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                             (case (_lhsItyKiGam) of
-                                                                                                                              { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
-                                                                                                                              (case (_lhsItyGam) of
-                                                                                                                               { _hdOtyGam | _hdOtyGam `seq` (True) ->
-                                                                                                                               (case (_lhsIpredScope) of
-                                                                                                                                { _hdOpredScope | _hdOpredScope `seq` (True) ->
-                                                                                                                                (case (_lhsIpolVarMp) of
-                                                                                                                                 { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
-                                                                                                                                 (case (_lhsIpolGam) of
-                                                                                                                                  { _hdOpolGam | _hdOpolGam `seq` (True) ->
-                                                                                                                                  (case (_lhsIopts) of
-                                                                                                                                   { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                   (case (_lhsIkiVarMp) of
-                                                                                                                                    { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
-                                                                                                                                    (case (hd_3 _hdOkiVarMp _hdOopts _hdOpolGam _hdOpolVarMp _hdOpredScope _hdOtyGam _hdOtyKiGam _hdOtyKiGlobFreeTvarS) of
-                                                                                                                                     { ( _hdIkiVarMp,_hdIpolVarMp,hd_4) | True ->
-                                                                                                                                         (case (_hdIpolVarMp) of
-                                                                                                                                          { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
-                                                                                                                                          (case (_lhsIpolGam) of
-                                                                                                                                           { _tlOpolGam | _tlOpolGam `seq` (True) ->
-                                                                                                                                           (case (_lhsIopts) of
-                                                                                                                                            { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                            (case (_hdIkiVarMp) of
-                                                                                                                                             { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
-                                                                                                                                             (case (tl_3 _tlOkiVarMp _tlOopts _tlOpolGam _tlOpolVarMp _tlOpredScope _tlOtyGam _tlOtyKiGam _tlOtyKiGlobFreeTvarS) of
-                                                                                                                                              { ( _tlIkiVarMp,_tlIpolVarMp,tl_4) | True ->
-                                                                                                                                                  (case (_tlIkiVarMp) of
-                                                                                                                                                   { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                   (case (_tlIpolVarMp) of
-                                                                                                                                                    { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                    (case ((let sem_CaseAlts_Cons_4 :: T_CaseAlts_4
-                                                                                                                                                                sem_CaseAlts_Cons_4 =
-                                                                                                                                                                    (\ _lhsIclGam
-                                                                                                                                                                       _lhsIdataGam
-                                                                                                                                                                       _lhsIfinKiVarMp
-                                                                                                                                                                       _lhsIfinTyKiGam
-                                                                                                                                                                       _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                         _lhsIclGam `seq`
-                                                                                                                                                                         (_lhsIdataGam `seq`
-                                                                                                                                                                          (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                           (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                             ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                               { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                               (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                 { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                 (case (_lhsIdataGam) of
-                                                                                                                                                                                  { _tlOdataGam | _tlOdataGam `seq` (True) ->
-                                                                                                                                                                                  (case (_lhsIclGam) of
-                                                                                                                                                                                   { _tlOclGam | _tlOclGam `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                    { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                     { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                      { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIdataGam) of
-                                                                                                                                                                                       { _hdOdataGam | _hdOdataGam `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsIclGam) of
-                                                                                                                                                                                        { _hdOclGam | _hdOclGam `seq` (True) ->
-                                                                                                                                                                                        (case (tl_4 _tlOclGam _tlOdataGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                         { ( _tlIchrInstDeclSq,tl_5) | True ->
-                                                                                                                                                                                             (case (hd_4 _hdOclGam _hdOdataGam _hdOfinKiVarMp _hdOfinTyKiGam _hdOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                              { ( _hdIchrInstDeclSq,hd_5) | True ->
-                                                                                                                                                                                                  (case (_hdIchrInstDeclSq `Seq.union` _tlIchrInstDeclSq) of
-                                                                                                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                   (case ((let sem_CaseAlts_Cons_5 :: T_CaseAlts_5
-                                                                                                                                                                                                               sem_CaseAlts_Cons_5 =
-                                                                                                                                                                                                                   (\ _lhsIknPatTy
-                                                                                                                                                                                                                      _lhsIknTy
-                                                                                                                                                                                                                      _lhsIpatTyVarMp
-                                                                                                                                                                                                                      _lhsIvalGam ->
-                                                                                                                                                                                                                        _lhsIknPatTy `seq`
-                                                                                                                                                                                                                        (_lhsIknTy `seq`
-                                                                                                                                                                                                                         (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                          (_lhsIvalGam `seq`
-                                                                                                                                                                                                                           ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                             { _tlOvalGam | _tlOvalGam `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIvalGam) of
-                                                                                                                                                                                                                              { _hdOvalGam | _hdOvalGam `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                               { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                               (case (_lhsIknPatTy) of
-                                                                                                                                                                                                                                { _hdOknPatTy | _hdOknPatTy `seq` (True) ->
-                                                                                                                                                                                                                                (case (hd_5 _hdOknPatTy _hdOpatTyVarMp _hdOvalGam) of
-                                                                                                                                                                                                                                 { ( _hdIpatTyVarMp,hd_6) | True ->
-                                                                                                                                                                                                                                     (case (_hdIpatTyVarMp) of
-                                                                                                                                                                                                                                      { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_lhsIknPatTy) of
-                                                                                                                                                                                                                                       { _tlOknPatTy | _tlOknPatTy `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_lhsIknTy) of
-                                                                                                                                                                                                                                        { _tlOknTy | _tlOknTy `seq` (True) ->
-                                                                                                                                                                                                                                        (case (tl_5 _tlOknPatTy _tlOknTy _tlOpatTyVarMp _tlOvalGam) of
-                                                                                                                                                                                                                                         { ( _tlIpatTyVarMp,_tlIty,tl_6) | True ->
-                                                                                                                                                                                                                                             (case (_tlIpatTyVarMp) of
-                                                                                                                                                                                                                                              { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                              (case (_tlIty) of
-                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                               (case ((let sem_CaseAlts_Cons_6 :: T_CaseAlts_6
-                                                                                                                                                                                                                                                           sem_CaseAlts_Cons_6 =
-                                                                                                                                                                                                                                                               (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                  _lhsIclDfGam
-                                                                                                                                                                                                                                                                  _lhsIfiOpts
-                                                                                                                                                                                                                                                                  _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                  _lhsItyVarMp
-                                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                    _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                    (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                     (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                                      (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                        (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                            { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                              { _hdOtyVarMp | _hdOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                               { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                 { _hdOfiOpts | _hdOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                  { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                   { _hdOchrStore | _hdOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsIknTy) of
-                                                                                                                                                                                                                                                                                    { _hdOknTy | _hdOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (hd_6 _hdOchrStore _hdOclDfGam _hdOfiOpts _hdOknTy _hdOtvKiVarMp _hdOtyTyGlobFreeTvarS _hdOtyVarMp _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                     { ( _hdIgathCnstrMp,_hdIgathRangeMp,_hdItyVarMp,hd_7) | True ->
-                                                                                                                                                                                                                                                                                         (case (_hdItyVarMp) of
-                                                                                                                                                                                                                                                                                          { _tlOtyVarMp | _tlOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                           { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                            { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                             { _tlOfiOpts | _tlOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                              { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                               { _tlOchrStore | _tlOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (tl_6 _tlOchrStore _tlOclDfGam _tlOfiOpts _tlOtvKiVarMp _tlOtyTyGlobFreeTvarS _tlOtyVarMp _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                { ( _tlIgathCnstrMp,_tlIgathRangeMp,_tlItyVarMp,tl_7) | True ->
-                                                                                                                                                                                                                                                                                                    (case (_hdIgathCnstrMp `cnstrMpUnion` _tlIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                     { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (_hdIgathRangeMp `Map.union` _tlIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                      { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_tlItyVarMp) of
-                                                                                                                                                                                                                                                                                                       { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case ((let sem_CaseAlts_Cons_7 :: T_CaseAlts_7
-                                                                                                                                                                                                                                                                                                                   sem_CaseAlts_Cons_7 =
-                                                                                                                                                                                                                                                                                                                       (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                          _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                          _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                          _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                          _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                          _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                          _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                          _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                            _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                            (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                             (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                              (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                               (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                 (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                   ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                     { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                      { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                       { _tlOfinValGam | _tlOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                        { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                         { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                          { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                           { _hdOfinValGam | _hdOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                            { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                             { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                              { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                               { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                 { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                  { _hdOcSubst | _hdOcSubst `seq` (True) ->
+                                                                                                                _lhsIgenerDataInfoMp `seq`
+                                                                                                                (_lhsIkiVarMp `seq`
+                                                                                                                 (_lhsIopts `seq`
+                                                                                                                  (_lhsIpolGam `seq`
+                                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                                    (_lhsIpredScope `seq`
+                                                                                                                     (_lhsItyGam `seq`
+                                                                                                                      (_lhsItyKiGam `seq`
+                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                        ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                          { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                          (case (_lhsItyKiGam) of
+                                                                                                                           { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
+                                                                                                                           (case (_lhsItyGam) of
+                                                                                                                            { _tlOtyGam | _tlOtyGam `seq` (True) ->
+                                                                                                                            (case (_lhsIpredScope) of
+                                                                                                                             { _tlOpredScope | _tlOpredScope `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                              { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                              (case (_lhsItyKiGam) of
+                                                                                                                               { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
+                                                                                                                               (case (_lhsItyGam) of
+                                                                                                                                { _hdOtyGam | _hdOtyGam `seq` (True) ->
+                                                                                                                                (case (_lhsIpredScope) of
+                                                                                                                                 { _hdOpredScope | _hdOpredScope `seq` (True) ->
+                                                                                                                                 (case (_lhsIpolVarMp) of
+                                                                                                                                  { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
+                                                                                                                                  (case (_lhsIpolGam) of
+                                                                                                                                   { _hdOpolGam | _hdOpolGam `seq` (True) ->
+                                                                                                                                   (case (_lhsIopts) of
+                                                                                                                                    { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                    (case (_lhsIkiVarMp) of
+                                                                                                                                     { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
+                                                                                                                                     (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                      { _hdOgenerDataInfoMp | _hdOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                      (case (hd_3 _hdOgenerDataInfoMp _hdOkiVarMp _hdOopts _hdOpolGam _hdOpolVarMp _hdOpredScope _hdOtyGam _hdOtyKiGam _hdOtyKiGlobFreeTvarS) of
+                                                                                                                                       { ( _hdIgenerDataInfoMp,_hdIkiVarMp,_hdIpolVarMp,hd_4) | True ->
+                                                                                                                                           (case (_hdIpolVarMp) of
+                                                                                                                                            { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
+                                                                                                                                            (case (_lhsIpolGam) of
+                                                                                                                                             { _tlOpolGam | _tlOpolGam `seq` (True) ->
+                                                                                                                                             (case (_lhsIopts) of
+                                                                                                                                              { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                              (case (_hdIkiVarMp) of
+                                                                                                                                               { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
+                                                                                                                                               (case (_hdIgenerDataInfoMp) of
+                                                                                                                                                { _tlOgenerDataInfoMp | _tlOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                (case (tl_3 _tlOgenerDataInfoMp _tlOkiVarMp _tlOopts _tlOpolGam _tlOpolVarMp _tlOpredScope _tlOtyGam _tlOtyKiGam _tlOtyKiGlobFreeTvarS) of
+                                                                                                                                                 { ( _tlIgenerDataInfoMp,_tlIkiVarMp,_tlIpolVarMp,tl_4) | True ->
+                                                                                                                                                     (case (_tlIgenerDataInfoMp) of
+                                                                                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                      (case (_tlIkiVarMp) of
+                                                                                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                       (case (_tlIpolVarMp) of
+                                                                                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                        (case ((let sem_CaseAlts_Cons_4 :: T_CaseAlts_4
+                                                                                                                                                                    sem_CaseAlts_Cons_4 =
+                                                                                                                                                                        (\ _lhsIclGam
+                                                                                                                                                                           _lhsIdataGam
+                                                                                                                                                                           _lhsIfinKiVarMp
+                                                                                                                                                                           _lhsIfinTyKiGam
+                                                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                             _lhsIclGam `seq`
+                                                                                                                                                                             (_lhsIdataGam `seq`
+                                                                                                                                                                              (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                   { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                    { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                     { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                     (case (_lhsIdataGam) of
+                                                                                                                                                                                      { _tlOdataGam | _tlOdataGam `seq` (True) ->
+                                                                                                                                                                                      (case (_lhsIclGam) of
+                                                                                                                                                                                       { _tlOclGam | _tlOclGam `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                        { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                         { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                          { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIdataGam) of
+                                                                                                                                                                                           { _hdOdataGam | _hdOdataGam `seq` (True) ->
+                                                                                                                                                                                           (case (_lhsIclGam) of
+                                                                                                                                                                                            { _hdOclGam | _hdOclGam `seq` (True) ->
+                                                                                                                                                                                            (case (tl_4 _tlOclGam _tlOdataGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                             { ( _tlIchrInstDeclSq,tl_5) | True ->
+                                                                                                                                                                                                 (case (hd_4 _hdOclGam _hdOdataGam _hdOfinKiVarMp _hdOfinTyKiGam _hdOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                  { ( _hdIchrInstDeclSq,hd_5) | True ->
+                                                                                                                                                                                                      (case (_hdIchrInstDeclSq `Seq.union` _tlIchrInstDeclSq) of
+                                                                                                                                                                                                       { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                       (case ((let sem_CaseAlts_Cons_5 :: T_CaseAlts_5
+                                                                                                                                                                                                                   sem_CaseAlts_Cons_5 =
+                                                                                                                                                                                                                       (\ _lhsIknPatTy
+                                                                                                                                                                                                                          _lhsIknTy
+                                                                                                                                                                                                                          _lhsIpatTyVarMp
+                                                                                                                                                                                                                          _lhsIvalGam ->
+                                                                                                                                                                                                                            _lhsIknPatTy `seq`
+                                                                                                                                                                                                                            (_lhsIknTy `seq`
+                                                                                                                                                                                                                             (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                              (_lhsIvalGam `seq`
+                                                                                                                                                                                                                               ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                                 { _tlOvalGam | _tlOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                  { _hdOvalGam | _hdOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                   { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                   (case (_lhsIknPatTy) of
+                                                                                                                                                                                                                                    { _hdOknPatTy | _hdOknPatTy `seq` (True) ->
+                                                                                                                                                                                                                                    (case (hd_5 _hdOknPatTy _hdOpatTyVarMp _hdOvalGam) of
+                                                                                                                                                                                                                                     { ( _hdIpatTyVarMp,hd_6) | True ->
+                                                                                                                                                                                                                                         (case (_hdIpatTyVarMp) of
+                                                                                                                                                                                                                                          { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                          (case (_lhsIknPatTy) of
+                                                                                                                                                                                                                                           { _tlOknPatTy | _tlOknPatTy `seq` (True) ->
+                                                                                                                                                                                                                                           (case (_lhsIknTy) of
+                                                                                                                                                                                                                                            { _tlOknTy | _tlOknTy `seq` (True) ->
+                                                                                                                                                                                                                                            (case (tl_5 _tlOknPatTy _tlOknTy _tlOpatTyVarMp _tlOvalGam) of
+                                                                                                                                                                                                                                             { ( _tlIpatTyVarMp,_tlIty,tl_6) | True ->
+                                                                                                                                                                                                                                                 (case (_tlIpatTyVarMp) of
+                                                                                                                                                                                                                                                  { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                  (case (_tlIty) of
+                                                                                                                                                                                                                                                   { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                   (case ((let sem_CaseAlts_Cons_6 :: T_CaseAlts_6
+                                                                                                                                                                                                                                                               sem_CaseAlts_Cons_6 =
+                                                                                                                                                                                                                                                                   (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                      _lhsIclDfGam
+                                                                                                                                                                                                                                                                      _lhsIfiOpts
+                                                                                                                                                                                                                                                                      _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                      _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                      _lhsItyVarMp
+                                                                                                                                                                                                                                                                      _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                        _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                        (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                         (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                 { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                  { _hdOtyVarMp | _hdOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                    { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                     { _hdOfiOpts | _hdOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                      { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                       { _hdOchrStore | _hdOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsIknTy) of
+                                                                                                                                                                                                                                                                                        { _hdOknTy | _hdOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (hd_6 _hdOchrStore _hdOclDfGam _hdOfiOpts _hdOknTy _hdOtvKiVarMp _hdOtyTyGlobFreeTvarS _hdOtyVarMp _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                         { ( _hdIgathCnstrMp,_hdIgathRangeMp,_hdItyVarMp,hd_7) | True ->
+                                                                                                                                                                                                                                                                                             (case (_hdItyVarMp) of
+                                                                                                                                                                                                                                                                                              { _tlOtyVarMp | _tlOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                               { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                                 { _tlOfiOpts | _tlOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                  { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                   { _tlOchrStore | _tlOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (tl_6 _tlOchrStore _tlOclDfGam _tlOfiOpts _tlOtvKiVarMp _tlOtyTyGlobFreeTvarS _tlOtyVarMp _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                    { ( _tlIgathCnstrMp,_tlIgathRangeMp,_tlItyVarMp,tl_7) | True ->
+                                                                                                                                                                                                                                                                                                        (case (_hdIgathCnstrMp `cnstrMpUnion` _tlIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         (case (_hdIgathRangeMp `Map.union` _tlIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          (case (_tlItyVarMp) of
+                                                                                                                                                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case ((let sem_CaseAlts_Cons_7 :: T_CaseAlts_7
+                                                                                                                                                                                                                                                                                                                       sem_CaseAlts_Cons_7 =
+                                                                                                                                                                                                                                                                                                                           (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                              _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                              _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                              _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                              _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                              _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                              _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                              _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                 (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                   (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                    (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                     (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                       (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                        ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                          { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                           { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                            { _tlOfinValGam | _tlOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                             { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                              { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                               { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                { _hdOfinValGam | _hdOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                 { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                  { _tlOtr | _tlOtr `seq` (True) ->
                                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                   { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (hd_7 _hdOcSubst _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOfinTyVarMp _hdOfinValGam _hdOmoduleNm _hdOrangeMp _hdOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                    { ( _hdIallErrSq,_hdIcSubst,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpatTy,_hdIpp,_hdIralt,_hdIralt',_hdIty) | True ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_hdIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                         { _tlOcSubst | _tlOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (tl_7 _tlOcSubst _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOfinTyVarMp _tlOfinValGam _tlOmoduleNm _tlOrangeMp _tlOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                          { ( _tlIallErrSq,_tlIcSubst,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpatTy,_tlIpp,_tlIppL,_tlIraltL,_tlIraltL') | True ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (_tlIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                   { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (_tlIpatTy) of
-                                                                                                                                                                                                                                                                                                                                                                    { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_hdIpp >-< _tlIpp) of
-                                                                                                                                                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (empty) of
-                                                                                                                                                                                                                                                                                                                                                                      { _extraPP | _extraPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case ((_hdIpp >|< _extraPP) : _tlIppL) of
-                                                                                                                                                                                                                                                                                                                                                                       { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIralt  : _tlIraltL) of
-                                                                                                                                                                                                                                                                                                                                                                        { _lhsOraltL | _lhsOraltL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                        (case (_hdIralt' : _tlIraltL') of
-                                                                                                                                                                                                                                                                                                                                                                         { _lhsOraltL' | _lhsOraltL' `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOppL,_lhsOraltL,_lhsOraltL') }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                                                                               in  sem_CaseAlts_Cons_7)) of
-                                                                                                                                                                                                                                                                                                        { ( sem_CaseAlts_7) | True ->
-                                                                                                                                                                                                                                                                                                        ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlts_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))
-                                                                                                                                                                                                                                                       in  sem_CaseAlts_Cons_6)) of
-                                                                                                                                                                                                                                                { ( sem_CaseAlts_6) | True ->
-                                                                                                                                                                                                                                                ( _lhsOpatTyVarMp,_lhsOty,sem_CaseAlts_6) }) }) }) }) }) }) }) }) }) }) }) }))))))
-                                                                                                                                                                                                           in  sem_CaseAlts_Cons_5)) of
-                                                                                                                                                                                                    { ( sem_CaseAlts_5) | True ->
-                                                                                                                                                                                                    ( _lhsOchrInstDeclSq,sem_CaseAlts_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                            in  sem_CaseAlts_Cons_4)) of
-                                                                                                                                                     { ( sem_CaseAlts_4) | True ->
-                                                                                                                                                     ( _lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlts_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+                                                                                                                                                                                                                                                                                                                                                   { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                    { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                     { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                      { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                       { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                        { _hdOcSubst | _hdOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                         { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                          { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (hd_7 _hdOcSubst _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOfinTyVarMp _hdOfinValGam _hdOmoduleNm _hdOrangeMp _hdOsysfEnv _hdOtr) of
+                                                                                                                                                                                                                                                                                                                                                           { ( _hdIallErrSq,_hdIcSubst,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpatTy,_hdIpp,_hdIralt,_hdIralt',_hdItrpp,_hdIty) | True ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_hdIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                { _tlOcSubst | _tlOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (tl_7 _tlOcSubst _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOfinTyVarMp _tlOfinValGam _tlOmoduleNm _tlOrangeMp _tlOsysfEnv _tlOtr) of
+                                                                                                                                                                                                                                                                                                                                                                 { ( _tlIallErrSq,_tlIcSubst,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpatTy,_tlIpp,_tlIppL,_tlIraltL,_tlIraltL',_tlItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (_tlIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                       { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (_tlIpatTy) of
+                                                                                                                                                                                                                                                                                                                                                                           { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                                                                                                                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (empty) of
+                                                                                                                                                                                                                                                                                                                                                                             { _extraPP | _extraPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case ((_hdIpp >|< _extraPP) : _tlIppL) of
+                                                                                                                                                                                                                                                                                                                                                                              { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                              (case (_hdIralt  : _tlIraltL) of
+                                                                                                                                                                                                                                                                                                                                                                               { _lhsOraltL | _lhsOraltL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                               (case (_hdIralt' : _tlIraltL') of
+                                                                                                                                                                                                                                                                                                                                                                                { _lhsOraltL' | _lhsOraltL' `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOppL,_lhsOraltL,_lhsOraltL',_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                                                                                   in  sem_CaseAlts_Cons_7)) of
+                                                                                                                                                                                                                                                                                                            { ( sem_CaseAlts_7) | True ->
+                                                                                                                                                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlts_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))
+                                                                                                                                                                                                                                                           in  sem_CaseAlts_Cons_6)) of
+                                                                                                                                                                                                                                                    { ( sem_CaseAlts_6) | True ->
+                                                                                                                                                                                                                                                    ( _lhsOpatTyVarMp,_lhsOty,sem_CaseAlts_6) }) }) }) }) }) }) }) }) }) }) }) }))))))
+                                                                                                                                                                                                               in  sem_CaseAlts_Cons_5)) of
+                                                                                                                                                                                                        { ( sem_CaseAlts_5) | True ->
+                                                                                                                                                                                                        ( _lhsOchrInstDeclSq,sem_CaseAlts_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                in  sem_CaseAlts_Cons_4)) of
+                                                                                                                                                         { ( sem_CaseAlts_4) | True ->
+                                                                                                                                                         ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlts_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                                    in  sem_CaseAlts_Cons_3)) of
                                                                                             { ( sem_CaseAlts_3) | True ->
                                                                                             ( _lhsOpredSameScopeCounter,sem_CaseAlts_3) }) }) }) }) }) }) }) }) }) })))))
@@ -525,7 +544,8 @@
                                                      { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
                                                      (case ((let sem_CaseAlts_Nil_3 :: T_CaseAlts_3
                                                                  sem_CaseAlts_Nil_3 =
-                                                                     (\ _lhsIkiVarMp
+                                                                     (\ _lhsIgenerDataInfoMp
+                                                                        _lhsIkiVarMp
                                                                         _lhsIopts
                                                                         _lhsIpolGam
                                                                         _lhsIpolVarMp
@@ -533,119 +553,126 @@
                                                                         _lhsItyGam
                                                                         _lhsItyKiGam
                                                                         _lhsItyKiGlobFreeTvarS ->
-                                                                          _lhsIkiVarMp `seq`
-                                                                          (_lhsIopts `seq`
-                                                                           (_lhsIpolGam `seq`
-                                                                            (_lhsIpolVarMp `seq`
-                                                                             (_lhsIpredScope `seq`
-                                                                              (_lhsItyGam `seq`
-                                                                               (_lhsItyKiGam `seq`
-                                                                                (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                 ((case (_lhsIkiVarMp) of
-                                                                                   { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                   (case (_lhsIpolVarMp) of
-                                                                                    { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                    (case ((let sem_CaseAlts_Nil_4 :: T_CaseAlts_4
-                                                                                                sem_CaseAlts_Nil_4 =
-                                                                                                    (\ _lhsIclGam
-                                                                                                       _lhsIdataGam
-                                                                                                       _lhsIfinKiVarMp
-                                                                                                       _lhsIfinTyKiGam
-                                                                                                       _lhsItyTyTySigFreeTvarS ->
-                                                                                                         _lhsIclGam `seq`
-                                                                                                         (_lhsIdataGam `seq`
-                                                                                                          (_lhsIfinKiVarMp `seq`
-                                                                                                           (_lhsIfinTyKiGam `seq`
-                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                             ((case (Seq.empty) of
-                                                                                                               { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                               (case ((let sem_CaseAlts_Nil_5 :: T_CaseAlts_5
-                                                                                                                           sem_CaseAlts_Nil_5 =
-                                                                                                                               (\ _lhsIknPatTy
-                                                                                                                                  _lhsIknTy
-                                                                                                                                  _lhsIpatTyVarMp
-                                                                                                                                  _lhsIvalGam ->
-                                                                                                                                    _lhsIknPatTy `seq`
-                                                                                                                                    (_lhsIknTy `seq`
-                                                                                                                                     (_lhsIpatTyVarMp `seq`
-                                                                                                                                      (_lhsIvalGam `seq`
-                                                                                                                                       ((case (_lhsIpatTyVarMp) of
-                                                                                                                                         { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                         (case (_lhsIknTy) of
-                                                                                                                                          { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                          (case ((let sem_CaseAlts_Nil_6 :: T_CaseAlts_6
-                                                                                                                                                      sem_CaseAlts_Nil_6 =
-                                                                                                                                                          (\ _lhsIchrStore
-                                                                                                                                                             _lhsIclDfGam
-                                                                                                                                                             _lhsIfiOpts
-                                                                                                                                                             _lhsItvKiVarMp
-                                                                                                                                                             _lhsItyTyGlobFreeTvarS
-                                                                                                                                                             _lhsItyVarMp
-                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                               _lhsIchrStore `seq`
-                                                                                                                                                               (_lhsIclDfGam `seq`
-                                                                                                                                                                (_lhsIfiOpts `seq`
-                                                                                                                                                                 (_lhsItvKiVarMp `seq`
-                                                                                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                   (_lhsItyVarMp `seq`
-                                                                                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                     ((case (Map.empty) of
-                                                                                                                                                                       { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                       (case (Map.empty) of
-                                                                                                                                                                        { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                        (case (_lhsItyVarMp) of
-                                                                                                                                                                         { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                         (case ((let sem_CaseAlts_Nil_7 :: T_CaseAlts_7
-                                                                                                                                                                                     sem_CaseAlts_Nil_7 =
-                                                                                                                                                                                         (\ _lhsIcSubst
-                                                                                                                                                                                            _lhsIchrEvidBindMp
-                                                                                                                                                                                            _lhsIchrScopeBindMp
-                                                                                                                                                                                            _lhsIfinTyVarMp
-                                                                                                                                                                                            _lhsIfinValGam
-                                                                                                                                                                                            _lhsImoduleNm
-                                                                                                                                                                                            _lhsIrangeMp
-                                                                                                                                                                                            _lhsIsysfEnv ->
-                                                                                                                                                                                              _lhsIcSubst `seq`
-                                                                                                                                                                                              (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                               (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                 (_lhsIfinValGam `seq`
-                                                                                                                                                                                                  (_lhsImoduleNm `seq`
-                                                                                                                                                                                                   (_lhsIrangeMp `seq`
-                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                     ((case (Seq.empty) of
-                                                                                                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                       (case (_lhsIcSubst) of
-                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                        (case (Seq.empty) of
-                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                         (case (Map.empty) of
-                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                          (case (emptyVarMp) of
-                                                                                                                                                                                                           { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                           (case (_lhsIknPatTy) of
-                                                                                                                                                                                                            { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
-                                                                                                                                                                                                            (case (empty) of
-                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                             (case ([]) of
-                                                                                                                                                                                                              { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                              (case ([]) of
-                                                                                                                                                                                                               { _lhsOraltL | _lhsOraltL `seq` (True) ->
-                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                { _lhsOraltL' | _lhsOraltL' `seq` (True) ->
-                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOppL,_lhsOraltL,_lhsOraltL') }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                 in  sem_CaseAlts_Nil_7)) of
-                                                                                                                                                                          { ( sem_CaseAlts_7) | True ->
-                                                                                                                                                                          ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlts_7) }) }) }) })))))))))
-                                                                                                                                                  in  sem_CaseAlts_Nil_6)) of
-                                                                                                                                           { ( sem_CaseAlts_6) | True ->
-                                                                                                                                           ( _lhsOpatTyVarMp,_lhsOty,sem_CaseAlts_6) }) }) }))))))
-                                                                                                                       in  sem_CaseAlts_Nil_5)) of
-                                                                                                                { ( sem_CaseAlts_5) | True ->
-                                                                                                                ( _lhsOchrInstDeclSq,sem_CaseAlts_5) }) })))))))
-                                                                                            in  sem_CaseAlts_Nil_4)) of
-                                                                                     { ( sem_CaseAlts_4) | True ->
-                                                                                     ( _lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlts_4) }) }) }))))))))))
+                                                                          _lhsIgenerDataInfoMp `seq`
+                                                                          (_lhsIkiVarMp `seq`
+                                                                           (_lhsIopts `seq`
+                                                                            (_lhsIpolGam `seq`
+                                                                             (_lhsIpolVarMp `seq`
+                                                                              (_lhsIpredScope `seq`
+                                                                               (_lhsItyGam `seq`
+                                                                                (_lhsItyKiGam `seq`
+                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                  ((case (_lhsIgenerDataInfoMp) of
+                                                                                    { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                    (case (_lhsIkiVarMp) of
+                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                     (case (_lhsIpolVarMp) of
+                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                      (case ((let sem_CaseAlts_Nil_4 :: T_CaseAlts_4
+                                                                                                  sem_CaseAlts_Nil_4 =
+                                                                                                      (\ _lhsIclGam
+                                                                                                         _lhsIdataGam
+                                                                                                         _lhsIfinKiVarMp
+                                                                                                         _lhsIfinTyKiGam
+                                                                                                         _lhsItyTyTySigFreeTvarS ->
+                                                                                                           _lhsIclGam `seq`
+                                                                                                           (_lhsIdataGam `seq`
+                                                                                                            (_lhsIfinKiVarMp `seq`
+                                                                                                             (_lhsIfinTyKiGam `seq`
+                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                               ((case (Seq.empty) of
+                                                                                                                 { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                 (case ((let sem_CaseAlts_Nil_5 :: T_CaseAlts_5
+                                                                                                                             sem_CaseAlts_Nil_5 =
+                                                                                                                                 (\ _lhsIknPatTy
+                                                                                                                                    _lhsIknTy
+                                                                                                                                    _lhsIpatTyVarMp
+                                                                                                                                    _lhsIvalGam ->
+                                                                                                                                      _lhsIknPatTy `seq`
+                                                                                                                                      (_lhsIknTy `seq`
+                                                                                                                                       (_lhsIpatTyVarMp `seq`
+                                                                                                                                        (_lhsIvalGam `seq`
+                                                                                                                                         ((case (_lhsIpatTyVarMp) of
+                                                                                                                                           { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                           (case (_lhsIknTy) of
+                                                                                                                                            { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                            (case ((let sem_CaseAlts_Nil_6 :: T_CaseAlts_6
+                                                                                                                                                        sem_CaseAlts_Nil_6 =
+                                                                                                                                                            (\ _lhsIchrStore
+                                                                                                                                                               _lhsIclDfGam
+                                                                                                                                                               _lhsIfiOpts
+                                                                                                                                                               _lhsItvKiVarMp
+                                                                                                                                                               _lhsItyTyGlobFreeTvarS
+                                                                                                                                                               _lhsItyVarMp
+                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                 _lhsIchrStore `seq`
+                                                                                                                                                                 (_lhsIclDfGam `seq`
+                                                                                                                                                                  (_lhsIfiOpts `seq`
+                                                                                                                                                                   (_lhsItvKiVarMp `seq`
+                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                     (_lhsItyVarMp `seq`
+                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                       ((case (Map.empty) of
+                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                         (case (Map.empty) of
+                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                          (case (_lhsItyVarMp) of
+                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                           (case ((let sem_CaseAlts_Nil_7 :: T_CaseAlts_7
+                                                                                                                                                                                       sem_CaseAlts_Nil_7 =
+                                                                                                                                                                                           (\ _lhsIcSubst
+                                                                                                                                                                                              _lhsIchrEvidBindMp
+                                                                                                                                                                                              _lhsIchrScopeBindMp
+                                                                                                                                                                                              _lhsIfinTyVarMp
+                                                                                                                                                                                              _lhsIfinValGam
+                                                                                                                                                                                              _lhsImoduleNm
+                                                                                                                                                                                              _lhsIrangeMp
+                                                                                                                                                                                              _lhsIsysfEnv
+                                                                                                                                                                                              _lhsItr ->
+                                                                                                                                                                                                _lhsIcSubst `seq`
+                                                                                                                                                                                                (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                 (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                   (_lhsIfinValGam `seq`
+                                                                                                                                                                                                    (_lhsImoduleNm `seq`
+                                                                                                                                                                                                     (_lhsIrangeMp `seq`
+                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                       (_lhsItr `seq`
+                                                                                                                                                                                                        ((case (Seq.empty) of
+                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                          (case (_lhsIcSubst) of
+                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                           (case (Seq.empty) of
+                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                            (case (Map.empty) of
+                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                             (case (emptyVarMp) of
+                                                                                                                                                                                                              { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                              (case (_lhsIknPatTy) of
+                                                                                                                                                                                                               { _lhsOpatTy | _lhsOpatTy `seq` (True) ->
+                                                                                                                                                                                                               (case (empty) of
+                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                (case ([]) of
+                                                                                                                                                                                                                 { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                 (case ([]) of
+                                                                                                                                                                                                                  { _lhsOraltL | _lhsOraltL `seq` (True) ->
+                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                   { _lhsOraltL' | _lhsOraltL' `seq` (True) ->
+                                                                                                                                                                                                                   (case (trppEmpty) of
+                                                                                                                                                                                                                    { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTy,_lhsOpp,_lhsOppL,_lhsOraltL,_lhsOraltL',_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                   in  sem_CaseAlts_Nil_7)) of
+                                                                                                                                                                            { ( sem_CaseAlts_7) | True ->
+                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOtyVarMp,sem_CaseAlts_7) }) }) }) })))))))))
+                                                                                                                                                    in  sem_CaseAlts_Nil_6)) of
+                                                                                                                                             { ( sem_CaseAlts_6) | True ->
+                                                                                                                                             ( _lhsOpatTyVarMp,_lhsOty,sem_CaseAlts_6) }) }) }))))))
+                                                                                                                         in  sem_CaseAlts_Nil_5)) of
+                                                                                                                  { ( sem_CaseAlts_5) | True ->
+                                                                                                                  ( _lhsOchrInstDeclSq,sem_CaseAlts_5) }) })))))))
+                                                                                              in  sem_CaseAlts_Nil_4)) of
+                                                                                       { ( sem_CaseAlts_4) | True ->
+                                                                                       ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_CaseAlts_4) }) }) }) })))))))))))
                                                              in  sem_CaseAlts_Nil_3)) of
                                                       { ( sem_CaseAlts_3) | True ->
                                                       ( _lhsOpredSameScopeCounter,sem_CaseAlts_3) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_DataConstr.hs b/src/UHC/Light/Compiler/EH/MainAG_DataConstr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_DataConstr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_DataConstr.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -144,6 +144,7 @@
          predScope            : PredScope
          rangeMp              : RangeMp
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -157,6 +158,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          gathTvKiVarMp        : VarMp
          pp                   : PP_Doc
+         trpp                 : TrPP
          tyCBindL             : CBindL
          valCBindL            : CBindL
    alternatives:
@@ -169,7 +171,7 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup10      : _
+            local _tup12      : _
             intra range       : {Range}
          visit 2:
             local dataConFldTyL : _
@@ -177,18 +179,19 @@
             local gadtTyVarMp : _
             local dataConGadtTyL : _
             local dataConGadtFldTyL : _
-            local dataConProdTy2 : _
-            local dataConProdTy1 : _
+            local dataConTyL  : _
+            local _tup10      : _
             local dataConProdTy : {Ty}
             local dataAltTyL  : _
             local arity       : {Int}
-            intra _tup10      : _
+            intra _tup12      : _
             intra range       : {Range}
          visit 3:
             local dataAltForNewType : _
             local lUniq_con   : {UID}
             local tag         : _
             local ctag        : _
+            local _tup11      : _
             local fldRefL     : _
             local fldMp       : _
             local dataConTyAsVar : {Ty}
@@ -199,31 +202,25 @@
             local _tup9       : _
             local fo_         : {FIOut}
             intra dataConGadtFldTyL : _
-            intra _tup10      : _
+            intra _tup12      : _
             intra arity       : {Int}
             intra dataConGadtTyL : _
-            intra dataConFldTyL : _
             intra dataConProdTy : {Ty}
+            intra _tup10      : _
             intra gadtTyVarMp : _
             intra range       : {Range}
             intra mbGadtFO    : _
          visit 4:
             local lUniq_uncon : {UID}
-            local dataConTyL  : _
-            local dataConTy2  : _
-            local dataConTy1  : {Ty}
-            local dataConTy   : {Ty}
             local dataUnConTyVar : _
             local dataConTyVar : _
-            local dataConProdTyFv : _
-            local dataConTyFv : {[TyVarId]}
             local dataQuUnConTy : _
-            local dataConGadtTy : _
+            local dataConTy   : {Ty}
             local dataUnConTyAsVar : _
-            intra _tup10      : _
-            intra dataConFldTyL : _
+            intra _tup12      : _
             intra lUniq_con   : {UID}
             intra dataConProdTy : {Ty}
+            intra _tup10      : _
             intra gadtTyVarMp : _
             intra dataConTyAsVar : {Ty}
             intra range       : {Range}
@@ -260,8 +257,8 @@
                                 (\ _lhsIgUniq ->
                                      _lhsIgUniq `seq`
                                      ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_con) -> case nextUnique __cont of { (__cont, lUniq_uncon) -> (__cont,lUniq,lUniq_con,lUniq_uncon)}}} )) of
-                                       { __tup10 | __tup10 `seq` (True) ->
-                                       (case (__tup10) of
+                                       { __tup12 | __tup12 `seq` (True) ->
+                                       (case (__tup12) of
                                         { (_fieldsOgUniq,_,_,_) | _fieldsOgUniq `seq` (True) ->
                                         (case (fields_1 _fieldsOgUniq) of
                                          { ( _fieldsIgUniq,fields_2) | True ->
@@ -313,13 +310,12 @@
                                                                                                     { _dataConGadtTyL | _dataConGadtTyL `seq` (True) ->
                                                                                                     (case (zip (repeat Nothing) _dataConGadtTyL ++ _dataConFldTyL) of
                                                                                                      { _dataConGadtFldTyL | _dataConGadtFldTyL `seq` (True) ->
-                                                                                                     (case (let  lbls = zipWith (\p (ml,_) -> maybe p id ml) positionalFldNames _dataConGadtFldTyL
-                                                                                                            in   recRec (zipWith (\l (_,t) -> (l,t)) lbls _dataConGadtFldTyL)) of
-                                                                                                      { _dataConProdTy2 | _dataConProdTy2 `seq` (True) ->
-                                                                                                      (case (_dataConProdTy2) of
-                                                                                                       { _dataConProdTy1 | _dataConProdTy1 `seq` (True) ->
-                                                                                                       (case (_dataConProdTy1) of
-                                                                                                        { _dataConProdTy | _dataConProdTy `seq` (True) ->
+                                                                                                     (case (assocLElts _dataConFldTyL) of
+                                                                                                      { _dataConTyL | _dataConTyL `seq` (True) ->
+                                                                                                      (case (mkDataConstrTys1 (_dataConTyL, _dataConGadtFldTyL) _lhsIdataTy) of
+                                                                                                       { __tup10 | __tup10 `seq` (True) ->
+                                                                                                       (case (__tup10) of
+                                                                                                        { (_,_dataConProdTy) | _dataConProdTy `seq` (True) ->
                                                                                                         (case ([(conNm_,_dataConProdTy)]) of
                                                                                                          { _dataAltTyL | _dataAltTyL `seq` (True) ->
                                                                                                          (case (_dataAltTyL) of
@@ -348,274 +344,264 @@
                                                                                                                                          { _lhsOdataAltForNewType | _lhsOdataAltForNewType `seq` (True) ->
                                                                                                                                          (case ([conNm_]) of
                                                                                                                                           { _lhsOdataConstrNmL | _lhsOdataConstrNmL `seq` (True) ->
-                                                                                                                                          (case (__tup10) of
+                                                                                                                                          (case (__tup12) of
                                                                                                                                            { (_,_,_lUniq_con,_) | _lUniq_con `seq` (True) ->
                                                                                                                                            (case (tyRecOffset conNm_ _lhsIdataAltTy) of
                                                                                                                                             { _tag | _tag `seq` (True) ->
                                                                                                                                             (case (patchTyInfoCTag _lhsItyNm _lhsImaxArity $ mkOnlyConInfoCTag conNm_ _tag _arity) of
                                                                                                                                              { _ctag | _ctag `seq` (True) ->
-                                                                                                                                             (case (refGen 0 1 $ zipWith (\pn (ml,_) -> maybe pn id ml) positionalFldNames _dataConGadtFldTyL) of
-                                                                                                                                              { _fldRefL | _fldRefL `seq` (True) ->
-                                                                                                                                              (case (Map.fromList $ catMaybes $ zipWith (\(_,r) (ml,_) -> fmap (\l -> (l,emptyDataFldInfo {dfiOffset = r})) ml) _fldRefL _dataConGadtFldTyL) of
-                                                                                                                                               { _fldMp | _fldMp `seq` (True) ->
-                                                                                                                                               (case (mkNewTyVar _lUniq_con) of
-                                                                                                                                                { _dataConTyAsVar | _dataConTyAsVar `seq` (True) ->
-                                                                                                                                                (case (replicate (length _dataConGadtTyL)
-                                                                                                                                                                 (DataConFldAnnInfo
-                                                                                                                                                                   Strictness_NonStrict
-                                                                                                                                                                 )
-                                                                                                                                                       ++ _fieldsIfldAnnL) of
-                                                                                                                                                 { _dataConGadtFldAnnL | _dataConGadtFldAnnL `seq` (True) ->
-                                                                                                                                                 (case (emptyDataTagInfo
-                                                                                                                                                          { dtiFldMp        = _fldMp
-                                                                                                                                                          , dtiFldTyL       = _dataConGadtFldTyL
-                                                                                                                                                          , dtiConFldAnnL   = _dataConGadtFldAnnL
-                                                                                                                                                          , dtiConNm        = conNm_
-                                                                                                                                                          , dtiConTy        = _dataConTyAsVar
-                                                                                                                                                          , dtiCTag         = _ctag
-                                                                                                                                                          , dtiFldRefL          = assocLElts _fldRefL
-                                                                                                                                                          , dtiMbFixityPrio = mbFixityPrio_
-                                                                                                                                                          }) of
-                                                                                                                                                  { _dti | _dti `seq` (True) ->
-                                                                                                                                                  (case (conNm_ `Map.singleton` _dti) of
-                                                                                                                                                   { _lhsOdataConstrTagMp | _lhsOdataConstrTagMp `seq` (True) ->
-                                                                                                                                                   (case (_lhsItyKiGam) of
-                                                                                                                                                    { _fieldsOtyKiGam | _fieldsOtyKiGam `seq` (True) ->
-                                                                                                                                                    (case (fields_3 _fieldsOtyKiGam) of
-                                                                                                                                                     { ( _fieldsIintlTyKiGam,_fieldsItyKiGam,fields_4) | True ->
-                                                                                                                                                         (case (_fieldsItyKiGam) of
-                                                                                                                                                          { _mbGadtTyExprOtyKiGam | _mbGadtTyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                          (case (_lhsIkiVarMp) of
-                                                                                                                                                           { _fieldsOkiVarMp | _fieldsOkiVarMp `seq` (True) ->
-                                                                                                                                                           (case (__tup10) of
-                                                                                                                                                            { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                            (case (_lhsIdataTy) of
-                                                                                                                                                             { _fieldsOdataTy | _fieldsOdataTy `seq` (True) ->
-                                                                                                                                                             (case (fields_4 _fieldsOdataTy _fieldsOkiVarMp) of
-                                                                                                                                                              { ( _fieldsIfldSelGam,_fieldsIfldUpdGam,_fieldsIgathCnstrMp,_fieldsIgathRangeMp,_fieldsIkiL,_fieldsIkiVarMp,fields_5) | True ->
-                                                                                                                                                                  (case (_fieldsIkiVarMp) of
-                                                                                                                                                                   { _fldsKiVarMp | _fldsKiVarMp `seq` (True) ->
-                                                                                                                                                                   (case (fitsInL  weakFIOpts defaultFIEnv _lUniq _fldsKiVarMp
-                                                                                                                                                                                   _fieldsIkiL (repeat kiStar)) of
-                                                                                                                                                                    { __tup9 | __tup9 `seq` (True) ->
-                                                                                                                                                                    (case (__tup9) of
-                                                                                                                                                                     { (_,_fo_) | _fo_ `seq` (True) ->
-                                                                                                                                                                     (case (foVarMp _fo_ `varUpd` _fldsKiVarMp) of
-                                                                                                                                                                      { _mbGadtTyExprOkiVarMp | _mbGadtTyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                      (case (mbGadtTyExpr_3 _mbGadtTyExprOkiVarMp _mbGadtTyExprOtyKiGam) of
-                                                                                                                                                                       { ( _mbGadtTyExprIintlTyKiGam,_mbGadtTyExprIkiVarMp,mbGadtTyExpr_4) | True ->
-                                                                                                                                                                           (case (_fieldsIintlTyKiGam `gamUnion` _mbGadtTyExprIintlTyKiGam) of
-                                                                                                                                                                            { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                            (case (_mbGadtTyExprIkiVarMp) of
-                                                                                                                                                                             { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                             (case ((let sem_DataConstr_Constr_4 :: T_DataConstr_4
-                                                                                                                                                                                         sem_DataConstr_Constr_4 =
-                                                                                                                                                                                             (\ _lhsIfinTyKiGam
-                                                                                                                                                                                                _lhsIpatTyVarMp
-                                                                                                                                                                                                _lhsIpatValGam
-                                                                                                                                                                                                _lhsItvKiVarMp ->
-                                                                                                                                                                                                  _lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                  (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                   (_lhsIpatValGam `seq`
-                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                     ((case (_fieldsIfldSelGam) of
-                                                                                                                                                                                                       { _lhsOfldSelGam | _lhsOfldSelGam `seq` (True) ->
-                                                                                                                                                                                                       (case (_fieldsIfldUpdGam) of
-                                                                                                                                                                                                        { _lhsOfldUpdGam | _lhsOfldUpdGam `seq` (True) ->
-                                                                                                                                                                                                        (case (_fieldsIgathCnstrMp) of
-                                                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                         (case (_fieldsIgathRangeMp) of
-                                                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                          (case (__tup10) of
-                                                                                                                                                                                                           { (_,_,_,_lUniq_uncon) | _lUniq_uncon `seq` (True) ->
-                                                                                                                                                                                                           (case (assocLElts _dataConFldTyL) of
-                                                                                                                                                                                                            { _dataConTyL | _dataConTyL `seq` (True) ->
-                                                                                                                                                                                                            (case (_dataConTyL `appArr` _lhsIdataTy) of
-                                                                                                                                                                                                             { _dataConTy2 | _dataConTy2 `seq` (True) ->
-                                                                                                                                                                                                             (case (_dataConTy2) of
-                                                                                                                                                                                                              { _dataConTy1 | _dataConTy1 `seq` (True) ->
-                                                                                                                                                                                                              (case (_dataConTy1) of
-                                                                                                                                                                                                               { _dataConTy | _dataConTy `seq` (True) ->
-                                                                                                                                                                                                               (case (_lUniq_uncon) of
-                                                                                                                                                                                                                { _dataUnConTyVar | _dataUnConTyVar `seq` (True) ->
-                                                                                                                                                                                                                (case (_lUniq_con) of
-                                                                                                                                                                                                                 { _dataConTyVar | _dataConTyVar `seq` (True) ->
-                                                                                                                                                                                                                 (case (varFree _dataConProdTy) of
-                                                                                                                                                                                                                  { _dataConProdTyFv | _dataConProdTyFv `seq` (True) ->
-                                                                                                                                                                                                                  (case (varFree _lhsIdataTy) of
-                                                                                                                                                                                                                   { _dataConTyFv | _dataConTyFv `seq` (True) ->
-                                                                                                                                                                                                                   (case (let fvD = _dataConTyFv
-                                                                                                                                                                                                                              fvU = _dataConProdTyFv
-                                                                                                                                                                                                                              tkg = gamUnion _lhsIfinTyKiGam _fieldsIintlTyKiGam
-                                                                                                                                                                                                                              mkk tvs = [ (v,tvarKi tkg _lhsItvKiVarMp emptyVarMp v) | v <- tvs ]
-                                                                                                                                                                                                                          in  (                                   ([_lhsIdataTy] `appArr` mkTyQu tyQu_Exists (mkk (fvU \\ fvD)) _dataConProdTy))) of
-                                                                                                                                                                                                                    { _dataQuUnConTy | _dataQuUnConTy `seq` (True) ->
-                                                                                                                                                                                                                    (case (_gadtTyVarMp `varUpd` _dataConTy) of
-                                                                                                                                                                                                                     { _dataConGadtTy | _dataConGadtTy `seq` (True) ->
-                                                                                                                                                                                                                     (case (assocTyLToVarMp [(_dataConTyVar,_dataConGadtTy),(_dataUnConTyVar,_dataQuUnConTy)] `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                                                      { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                      (case (mkNewTyVar _lUniq_uncon) of
-                                                                                                                                                                                                                       { _dataUnConTyAsVar | _dataUnConTyAsVar `seq` (True) ->
-                                                                                                                                                                                                                       (case (gamUnions
-                                                                                                                                                                                                                                [ assocLToGam
-                                                                                                                                                                                                                                    [ (conNm_, ValGamInfo _dataConTyAsVar)
-                                                                                                                                                                                                                                    , (hsnUn conNm_, ValGamInfo _dataUnConTyAsVar)
-                                                                                                                                                                                                                                    ]
-                                                                                                                                                                                                                                , _lhsIpatValGam
-                                                                                                                                                                                                                                ]) of
-                                                                                                                                                                                                                        { _lhsOpatValGam | _lhsOpatValGam `seq` (True) ->
-                                                                                                                                                                                                                        (case ((let sem_DataConstr_Constr_5 :: T_DataConstr_5
-                                                                                                                                                                                                                                    sem_DataConstr_Constr_5 =
-                                                                                                                                                                                                                                        (\ _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                           _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                           _lhsIchrStore
-                                                                                                                                                                                                                                           _lhsIclDfGam
-                                                                                                                                                                                                                                           _lhsIclGam
-                                                                                                                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                                                                                                                           _lhsIfinTyVarMp
-                                                                                                                                                                                                                                           _lhsIisNewtype
-                                                                                                                                                                                                                                           _lhsIkiGam
-                                                                                                                                                                                                                                           _lhsIlexLev
-                                                                                                                                                                                                                                           _lhsImoduleNm
-                                                                                                                                                                                                                                           _lhsIopts
-                                                                                                                                                                                                                                           _lhsIpredScope
-                                                                                                                                                                                                                                           _lhsIrangeMp
-                                                                                                                                                                                                                                           _lhsIsysfEnv
-                                                                                                                                                                                                                                           _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                           _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                           _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                           _lhsIvalGam
-                                                                                                                                                                                                                                           _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                             _lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                             (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                              (_lhsIchrStore `seq`
-                                                                                                                                                                                                                                               (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                (_lhsIclGam `seq`
-                                                                                                                                                                                                                                                 (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                   (_lhsIisNewtype `seq`
-                                                                                                                                                                                                                                                    (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                     (_lhsIlexLev `seq`
-                                                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                       (_lhsIopts `seq`
-                                                                                                                                                                                                                                                        (_lhsIpredScope `seq`
-                                                                                                                                                                                                                                                         (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                          (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                              (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _mbGadtTyExprOvalTyGlobFreeTvarS | _mbGadtTyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _mbGadtTyExprOtyTyTySigFreeTvarS | _mbGadtTyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                    { _mbGadtTyExprOtyTyGlobFreeTvarS | _mbGadtTyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                     { _mbGadtTyExprOtyKiGlobFreeTvarS | _mbGadtTyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                      { _mbGadtTyExprOsysfEnv | _mbGadtTyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                       { _mbGadtTyExprOopts | _mbGadtTyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                        { _mbGadtTyExprOmoduleNm | _mbGadtTyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                         { _mbGadtTyExprOkiGam | _mbGadtTyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                          { _mbGadtTyExprOfinTyVarMp | _mbGadtTyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                           { _mbGadtTyExprOfinTyKiGam | _mbGadtTyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                            { _mbGadtTyExprOfinKiVarMp | _mbGadtTyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                             { _mbGadtTyExprOclGam | _mbGadtTyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (mbGadtTyExpr_4 _mbGadtTyExprOclGam _mbGadtTyExprOfinKiVarMp _mbGadtTyExprOfinTyKiGam _mbGadtTyExprOfinTyVarMp _mbGadtTyExprOkiGam _mbGadtTyExprOmoduleNm _mbGadtTyExprOopts _mbGadtTyExprOsysfEnv _mbGadtTyExprOtyKiGlobFreeTvarS _mbGadtTyExprOtyTyGlobFreeTvarS _mbGadtTyExprOtyTyTySigFreeTvarS _mbGadtTyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                              { ( _mbGadtTyExprIallErrSq,_mbGadtTyExprIclMissNmS,_mbGadtTyExprIclNmS,_mbGadtTyExprIerrSq,_mbGadtTyExprIgathMentrelFilterMp,_mbGadtTyExprIpp,_mbGadtTyExprIppMb,_mbGadtTyExprItyGam,_mbGadtTyExprItyKiGam,_mbGadtTyExprItyVarWildMp) | True ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                   { _fieldsOvalTyGlobFreeTvarS | _fieldsOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                    { _fieldsOtyTyTySigFreeTvarS | _fieldsOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                     { _fieldsOtyTyGlobFreeTvarS | _fieldsOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                      { _fieldsOtyKiGlobFreeTvarS | _fieldsOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                       { _fieldsOtvKiVarMp | _fieldsOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                        { _fieldsOsysfEnv | _fieldsOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                         { _fieldsOrangeMp | _fieldsOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                                                                          { _fieldsOpredScope | _fieldsOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                           { _fieldsOpatTyVarMp | _fieldsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                            { _fieldsOopts | _fieldsOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                             { _fieldsOmoduleNm | _fieldsOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_lhsIlexLev) of
-                                                                                                                                                                                                                                                                                              { _fieldsOlexLev | _fieldsOlexLev `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                               { _fieldsOkiGam | _fieldsOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                { _fieldsOfinTyVarMp | _fieldsOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                 { _fieldsOfinTyKiGam | _fieldsOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                  { _fieldsOfinKiVarMp | _fieldsOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                                   { _fieldsOclGam | _fieldsOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                    { _fieldsOclDfGam | _fieldsOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                     { _fieldsOchrStore | _fieldsOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                      { _fieldsOchrScopeBindMp | _fieldsOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                       { _fieldsOchrEvidBindMp | _fieldsOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (fields_5 _fieldsOchrEvidBindMp _fieldsOchrScopeBindMp _fieldsOchrStore _fieldsOclDfGam _fieldsOclGam _fieldsOfinKiVarMp _fieldsOfinTyKiGam _fieldsOfinTyVarMp _fieldsOkiGam _fieldsOlexLev _fieldsOmoduleNm _fieldsOopts _fieldsOpatTyVarMp _fieldsOpredScope _fieldsOrangeMp _fieldsOsysfEnv _fieldsOtvKiVarMp _fieldsOtyKiGlobFreeTvarS _fieldsOtyTyGlobFreeTvarS _fieldsOtyTyTySigFreeTvarS _fieldsOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                        { ( _fieldsIallErrSq,_fieldsIerrSq,_fieldsIgathMentrelFilterMp,_fieldsIgathTvKiVarMp,_fieldsIpatTyVarMp,_fieldsIpp,_fieldsIppL) | True ->
-                                                                                                                                                                                                                                                                                                            (case (_fieldsIallErrSq `Seq.union` _mbGadtTyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                             { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (let  nms = assocLKeys $ gamToOnlyDups _fieldsIfldSelGam
-                                                                                                                                                                                                                                                                                                                    in   if null nms then [] else [rngLift _range Err_NamesDupIntrod "data field" (zip nms (repeat Nothing))]) of
-                                                                                                                                                                                                                                                                                                              { _dupErrs | _dupErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (pp conNm_
-                                                                                                                                                                                                                                                                                                                     >#<  (if null $ catMaybes $ assocLKeys $ _dataConGadtFldTyL
-                                                                                                                                                                                                                                                                                                                           then ppSpaced _fieldsIppL
-                                                                                                                                                                                                                                                                                                                           else ppCurlysCommas' _fieldsIppL
-                                                                                                                                                                                                                                                                                                                          )
-                                                                                                                                                                                                                                                                                                                                             >|< maybe empty (\t -> " ->" >#< t) _mbGadtTyExprIppMb) of
-                                                                                                                                                                                                                                                                                                               { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (rngLift _range mkNestErr' _pp [ _fieldsIerrSq
-                                                                                                                                                                                                                                                                                                                                                    , _mbGadtTyExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                    , Seq.fromList _dupErrs
-                                                                                                                                                                                                                                                                                                                                                    , foErrSq _fo_
-                                                                                                                                                                                                                                                                                                                                                    , maybe Seq.empty foErrSq _mbGadtFO
-                                                                                                                                                                                                                                                                                                                                                    ]) of
-                                                                                                                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                                                                                 { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                                                                                                  { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_fieldsIgathMentrelFilterMp `mentrelFilterMpUnion` _mbGadtTyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_fieldsIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                    { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_pp) of
-                                                                                                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                             (case (mkFldRefAndMp _dataConGadtFldTyL) of
+                                                                                                                                              { __tup11 | __tup11 `seq` (True) ->
+                                                                                                                                              (case (__tup11) of
+                                                                                                                                               { (_,_,_fldRefL) | _fldRefL `seq` (True) ->
+                                                                                                                                               (case (__tup11) of
+                                                                                                                                                { (_fldMp,_,_) | _fldMp `seq` (True) ->
+                                                                                                                                                (case (mkNewTyVar _lUniq_con) of
+                                                                                                                                                 { _dataConTyAsVar | _dataConTyAsVar `seq` (True) ->
+                                                                                                                                                 (case (replicate (length _dataConGadtTyL)
+                                                                                                                                                                  (DataConFldAnnInfo
+                                                                                                                                                                    Strictness_NonStrict
+                                                                                                                                                                  )
+                                                                                                                                                        ++ _fieldsIfldAnnL) of
+                                                                                                                                                  { _dataConGadtFldAnnL | _dataConGadtFldAnnL `seq` (True) ->
+                                                                                                                                                  (case (emptyDataTagInfo
+                                                                                                                                                           { dtiFldMp        = _fldMp
+                                                                                                                                                           , dtiFldTyL       = _dataConGadtFldTyL
+                                                                                                                                                           , dtiConFldAnnL   = _dataConGadtFldAnnL
+                                                                                                                                                           , dtiConNm        = conNm_
+                                                                                                                                                           , dtiConTy        = _dataConTyAsVar
+                                                                                                                                                           , dtiCTag         = _ctag
+                                                                                                                                                           , dtiFldRefL          = assocLElts _fldRefL
+                                                                                                                                                           , dtiMbFixityPrio = mbFixityPrio_
+                                                                                                                                                           }) of
+                                                                                                                                                   { _dti | _dti `seq` (True) ->
+                                                                                                                                                   (case (conNm_ `Map.singleton` _dti) of
+                                                                                                                                                    { _lhsOdataConstrTagMp | _lhsOdataConstrTagMp `seq` (True) ->
+                                                                                                                                                    (case (_lhsItyKiGam) of
+                                                                                                                                                     { _fieldsOtyKiGam | _fieldsOtyKiGam `seq` (True) ->
+                                                                                                                                                     (case (fields_3 _fieldsOtyKiGam) of
+                                                                                                                                                      { ( _fieldsIintlTyKiGam,_fieldsItyKiGam,fields_4) | True ->
+                                                                                                                                                          (case (_fieldsItyKiGam) of
+                                                                                                                                                           { _mbGadtTyExprOtyKiGam | _mbGadtTyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                           (case (_lhsIkiVarMp) of
+                                                                                                                                                            { _fieldsOkiVarMp | _fieldsOkiVarMp `seq` (True) ->
+                                                                                                                                                            (case (__tup12) of
+                                                                                                                                                             { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                             (case (_lhsIdataTy) of
+                                                                                                                                                              { _fieldsOdataTy | _fieldsOdataTy `seq` (True) ->
+                                                                                                                                                              (case (fields_4 _fieldsOdataTy _fieldsOkiVarMp) of
+                                                                                                                                                               { ( _fieldsIfldSelGam,_fieldsIfldUpdGam,_fieldsIgathCnstrMp,_fieldsIgathRangeMp,_fieldsIkiL,_fieldsIkiVarMp,fields_5) | True ->
+                                                                                                                                                                   (case (_fieldsIkiVarMp) of
+                                                                                                                                                                    { _fldsKiVarMp | _fldsKiVarMp `seq` (True) ->
+                                                                                                                                                                    (case (fitsInL  weakFIOpts defaultFIEnv _lUniq _fldsKiVarMp
+                                                                                                                                                                                    _fieldsIkiL (repeat kiStar)) of
+                                                                                                                                                                     { __tup9 | __tup9 `seq` (True) ->
+                                                                                                                                                                     (case (__tup9) of
+                                                                                                                                                                      { (_,_fo_) | _fo_ `seq` (True) ->
+                                                                                                                                                                      (case (foVarMp _fo_ `varUpd` _fldsKiVarMp) of
+                                                                                                                                                                       { _mbGadtTyExprOkiVarMp | _mbGadtTyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                       (case (mbGadtTyExpr_3 _mbGadtTyExprOkiVarMp _mbGadtTyExprOtyKiGam) of
+                                                                                                                                                                        { ( _mbGadtTyExprIintlTyKiGam,_mbGadtTyExprIkiVarMp,mbGadtTyExpr_4) | True ->
+                                                                                                                                                                            (case (_fieldsIintlTyKiGam `gamUnion` _mbGadtTyExprIintlTyKiGam) of
+                                                                                                                                                                             { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                             (case (_mbGadtTyExprIkiVarMp) of
+                                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                              (case ((let sem_DataConstr_Constr_4 :: T_DataConstr_4
+                                                                                                                                                                                          sem_DataConstr_Constr_4 =
+                                                                                                                                                                                              (\ _lhsIfinTyKiGam
+                                                                                                                                                                                                 _lhsIpatTyVarMp
+                                                                                                                                                                                                 _lhsIpatValGam
+                                                                                                                                                                                                 _lhsItvKiVarMp ->
+                                                                                                                                                                                                   _lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                   (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                    (_lhsIpatValGam `seq`
+                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                      ((case (_fieldsIfldSelGam) of
+                                                                                                                                                                                                        { _lhsOfldSelGam | _lhsOfldSelGam `seq` (True) ->
+                                                                                                                                                                                                        (case (_fieldsIfldUpdGam) of
+                                                                                                                                                                                                         { _lhsOfldUpdGam | _lhsOfldUpdGam `seq` (True) ->
+                                                                                                                                                                                                         (case (_fieldsIgathCnstrMp) of
+                                                                                                                                                                                                          { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                          (case (_fieldsIgathRangeMp) of
+                                                                                                                                                                                                           { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                           (case (__tup12) of
+                                                                                                                                                                                                            { (_,_,_,_lUniq_uncon) | _lUniq_uncon `seq` (True) ->
+                                                                                                                                                                                                            (case (_lUniq_uncon) of
+                                                                                                                                                                                                             { _dataUnConTyVar | _dataUnConTyVar `seq` (True) ->
+                                                                                                                                                                                                             (case (_lUniq_con) of
+                                                                                                                                                                                                              { _dataConTyVar | _dataConTyVar `seq` (True) ->
+                                                                                                                                                                                                              (case (let
+                                                                                                                                                                                                                         mkKi = tvarKi _lhsIfinTyKiGam _fieldsIintlTyKiGam _lhsItvKiVarMp emptyVarMp
+                                                                                                                                                                                                                     in  mkDataConstrTys2 mkKi _dataConProdTy _lhsIdataTy) of
+                                                                                                                                                                                                               { _dataQuUnConTy | _dataQuUnConTy `seq` (True) ->
+                                                                                                                                                                                                               (case (__tup10) of
+                                                                                                                                                                                                                { (_dataConTy,_) | _dataConTy `seq` (True) ->
+                                                                                                                                                                                                                (case (assocTyLToVarMp [(_dataConTyVar, _gadtTyVarMp `varUpd` _dataConTy),(_dataUnConTyVar,_dataQuUnConTy)] `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                                                 { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                 (case (mkNewTyVar _lUniq_uncon) of
+                                                                                                                                                                                                                  { _dataUnConTyAsVar | _dataUnConTyAsVar `seq` (True) ->
+                                                                                                                                                                                                                  (case (mkDataConstrValGam conNm_ _dataConTyAsVar _dataUnConTyAsVar `gamUnion` _lhsIpatValGam) of
+                                                                                                                                                                                                                   { _lhsOpatValGam | _lhsOpatValGam `seq` (True) ->
+                                                                                                                                                                                                                   (case ((let sem_DataConstr_Constr_5 :: T_DataConstr_5
+                                                                                                                                                                                                                               sem_DataConstr_Constr_5 =
+                                                                                                                                                                                                                                   (\ _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                      _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                      _lhsIchrStore
+                                                                                                                                                                                                                                      _lhsIclDfGam
+                                                                                                                                                                                                                                      _lhsIclGam
+                                                                                                                                                                                                                                      _lhsIfinKiVarMp
+                                                                                                                                                                                                                                      _lhsIfinTyVarMp
+                                                                                                                                                                                                                                      _lhsIisNewtype
+                                                                                                                                                                                                                                      _lhsIkiGam
+                                                                                                                                                                                                                                      _lhsIlexLev
+                                                                                                                                                                                                                                      _lhsImoduleNm
+                                                                                                                                                                                                                                      _lhsIopts
+                                                                                                                                                                                                                                      _lhsIpredScope
+                                                                                                                                                                                                                                      _lhsIrangeMp
+                                                                                                                                                                                                                                      _lhsIsysfEnv
+                                                                                                                                                                                                                                      _lhsItr
+                                                                                                                                                                                                                                      _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                      _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                      _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                      _lhsIvalGam
+                                                                                                                                                                                                                                      _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                        _lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                        (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                         (_lhsIchrStore `seq`
+                                                                                                                                                                                                                                          (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                           (_lhsIclGam `seq`
+                                                                                                                                                                                                                                            (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                              (_lhsIisNewtype `seq`
+                                                                                                                                                                                                                                               (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                (_lhsIlexLev `seq`
+                                                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                  (_lhsIopts `seq`
+                                                                                                                                                                                                                                                   (_lhsIpredScope `seq`
+                                                                                                                                                                                                                                                    (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                     (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                      (_lhsItr `seq`
+                                                                                                                                                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                         (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                          (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                                           (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                            ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                              { _mbGadtTyExprOvalTyGlobFreeTvarS | _mbGadtTyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                               { _mbGadtTyExprOtyTyTySigFreeTvarS | _mbGadtTyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                { _mbGadtTyExprOtyTyGlobFreeTvarS | _mbGadtTyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _mbGadtTyExprOtyKiGlobFreeTvarS | _mbGadtTyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                                                                                                                  { _mbGadtTyExprOtr | _mbGadtTyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                   { _mbGadtTyExprOsysfEnv | _mbGadtTyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                    { _mbGadtTyExprOopts | _mbGadtTyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                     { _mbGadtTyExprOmoduleNm | _mbGadtTyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                      { _mbGadtTyExprOkiGam | _mbGadtTyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                       { _mbGadtTyExprOfinTyVarMp | _mbGadtTyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                        { _mbGadtTyExprOfinTyKiGam | _mbGadtTyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                         { _mbGadtTyExprOfinKiVarMp | _mbGadtTyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                          { _mbGadtTyExprOclGam | _mbGadtTyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (mbGadtTyExpr_4 _mbGadtTyExprOclGam _mbGadtTyExprOfinKiVarMp _mbGadtTyExprOfinTyKiGam _mbGadtTyExprOfinTyVarMp _mbGadtTyExprOkiGam _mbGadtTyExprOmoduleNm _mbGadtTyExprOopts _mbGadtTyExprOsysfEnv _mbGadtTyExprOtr _mbGadtTyExprOtyKiGlobFreeTvarS _mbGadtTyExprOtyTyGlobFreeTvarS _mbGadtTyExprOtyTyTySigFreeTvarS _mbGadtTyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                           { ( _mbGadtTyExprIallErrSq,_mbGadtTyExprIclMissNmS,_mbGadtTyExprIclNmS,_mbGadtTyExprIerrSq,_mbGadtTyExprIgathMentrelFilterMp,_mbGadtTyExprIpp,_mbGadtTyExprIppMb,_mbGadtTyExprItrpp,_mbGadtTyExprItyGam,_mbGadtTyExprItyKiGam,_mbGadtTyExprItyVarWildMp) | True ->
+                                                                                                                                                                                                                                                                               (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { _fieldsOvalTyGlobFreeTvarS | _fieldsOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                 { _fieldsOtyTyTySigFreeTvarS | _fieldsOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                  { _fieldsOtyTyGlobFreeTvarS | _fieldsOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { _fieldsOtyKiGlobFreeTvarS | _fieldsOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                    { _fieldsOtvKiVarMp | _fieldsOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                     { _fieldsOtr | _fieldsOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                      { _fieldsOsysfEnv | _fieldsOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                       { _fieldsOrangeMp | _fieldsOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                                                                        { _fieldsOpredScope | _fieldsOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                         { _fieldsOpatTyVarMp | _fieldsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                          { _fieldsOopts | _fieldsOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                           { _fieldsOmoduleNm | _fieldsOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_lhsIlexLev) of
+                                                                                                                                                                                                                                                                                            { _fieldsOlexLev | _fieldsOlexLev `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                             { _fieldsOkiGam | _fieldsOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                              { _fieldsOfinTyVarMp | _fieldsOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                               { _fieldsOfinTyKiGam | _fieldsOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                { _fieldsOfinKiVarMp | _fieldsOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                                 { _fieldsOclGam | _fieldsOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                  { _fieldsOclDfGam | _fieldsOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                   { _fieldsOchrStore | _fieldsOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                    { _fieldsOchrScopeBindMp | _fieldsOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                     { _fieldsOchrEvidBindMp | _fieldsOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (fields_5 _fieldsOchrEvidBindMp _fieldsOchrScopeBindMp _fieldsOchrStore _fieldsOclDfGam _fieldsOclGam _fieldsOfinKiVarMp _fieldsOfinTyKiGam _fieldsOfinTyVarMp _fieldsOkiGam _fieldsOlexLev _fieldsOmoduleNm _fieldsOopts _fieldsOpatTyVarMp _fieldsOpredScope _fieldsOrangeMp _fieldsOsysfEnv _fieldsOtr _fieldsOtvKiVarMp _fieldsOtyKiGlobFreeTvarS _fieldsOtyTyGlobFreeTvarS _fieldsOtyTyTySigFreeTvarS _fieldsOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                      { ( _fieldsIallErrSq,_fieldsIerrSq,_fieldsIgathMentrelFilterMp,_fieldsIgathTvKiVarMp,_fieldsIpatTyVarMp,_fieldsIpp,_fieldsIppL,_fieldsItrpp) | True ->
+                                                                                                                                                                                                                                                                                                          (case (_fieldsIallErrSq `Seq.union` _mbGadtTyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case (let  nms = assocLKeys $ gamToOnlyDups _fieldsIfldSelGam
+                                                                                                                                                                                                                                                                                                                  in   if null nms then [] else [rngLift _range Err_NamesDupIntrod "data field" (zip nms (repeat Nothing))]) of
+                                                                                                                                                                                                                                                                                                            { _dupErrs | _dupErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (pp conNm_
+                                                                                                                                                                                                                                                                                                                   >#<  (if null $ catMaybes $ assocLKeys $ _dataConGadtFldTyL
+                                                                                                                                                                                                                                                                                                                         then ppSpaced _fieldsIppL
+                                                                                                                                                                                                                                                                                                                         else ppCurlysCommas' _fieldsIppL
+                                                                                                                                                                                                                                                                                                                        )
+                                                                                                                                                                                                                                                                                                                                           >|< maybe empty (\t -> " ->" >#< t) _mbGadtTyExprIppMb) of
+                                                                                                                                                                                                                                                                                                             { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                             (case (rngLift _range mkNestErr' _pp [ _fieldsIerrSq
+                                                                                                                                                                                                                                                                                                                                                  , _mbGadtTyExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                  , Seq.fromList _dupErrs
+                                                                                                                                                                                                                                                                                                                                                  , foErrSq _fo_
+                                                                                                                                                                                                                                                                                                                                                  , maybe Seq.empty foErrSq _mbGadtFO
+                                                                                                                                                                                                                                                                                                                                                  ]) of
+                                                                                                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                              (case ([]) of
+                                                                                                                                                                                                                                                                                                               { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                                                                                                { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (_fieldsIgathMentrelFilterMp `mentrelFilterMpUnion` _mbGadtTyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_fieldsIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                  { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_pp) of
+                                                                                                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_fieldsItrpp >< _mbGadtTyExprItrpp) of
+                                                                                                                                                                                                                                                                                                                    { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case ([]) of
+                                                                                                                                                                                                                                                                                                                     { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
                                                                                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                                                                                      { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                                                                                       { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))
-                                                                                                                                                                                                                                in  sem_DataConstr_Constr_5)) of
-                                                                                                                                                                                                                         { ( sem_DataConstr_5) | True ->
-                                                                                                                                                                                                                         ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOpatTyVarMp,_lhsOpatValGam,sem_DataConstr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))
-                                                                                                                                                                                     in  sem_DataConstr_Constr_4)) of
-                                                                                                                                                                              { ( sem_DataConstr_4) | True ->
-                                                                                                                                                                              ( _lhsOdataAltForNewType,_lhsOdataConstrNmL,_lhsOdataConstrTagMp,_lhsOintlTyKiGam,_lhsOkiVarMp,sem_DataConstr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                                                                                                                                                                      { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpp,_lhsOtrpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))))
+                                                                                                                                                                                                                           in  sem_DataConstr_Constr_5)) of
+                                                                                                                                                                                                                    { ( sem_DataConstr_5) | True ->
+                                                                                                                                                                                                                    ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOpatTyVarMp,_lhsOpatValGam,sem_DataConstr_5) }) }) }) }) }) }) }) }) }) }) }) }) }))))))
+                                                                                                                                                                                      in  sem_DataConstr_Constr_4)) of
+                                                                                                                                                                               { ( sem_DataConstr_4) | True ->
+                                                                                                                                                                               ( _lhsOdataAltForNewType,_lhsOdataConstrNmL,_lhsOdataConstrTagMp,_lhsOintlTyKiGam,_lhsOkiVarMp,sem_DataConstr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
                                                                                                                      in  sem_DataConstr_Constr_3)) of
                                                                                                               { ( sem_DataConstr_3) | True ->
                                                                                                               ( _lhsOdataAltTyL,_lhsOgathMaxArity,_lhsOpolVarMp,sem_DataConstr_3) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_DataConstrs.hs b/src/UHC/Light/Compiler/EH/MainAG_DataConstrs.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_DataConstrs.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_DataConstrs.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -144,6 +144,7 @@
          predScope            : PredScope
          rangeMp              : RangeMp
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -158,6 +159,7 @@
          gathTvKiVarMp        : VarMp
          pp                   : PP_Doc
          ppL                  : [PP_Doc]
+         trpp                 : TrPP
          tyCBindL             : CBindL
          valCBindL            : CBindL
    alternatives:
@@ -338,6 +340,7 @@
                                                                                                                                                                                                                           _lhsIpredScope
                                                                                                                                                                                                                           _lhsIrangeMp
                                                                                                                                                                                                                           _lhsIsysfEnv
+                                                                                                                                                                                                                          _lhsItr
                                                                                                                                                                                                                           _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                           _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                           _lhsItyTyTySigFreeTvarS
@@ -358,116 +361,123 @@
                                                                                                                                                                                                                                        (_lhsIpredScope `seq`
                                                                                                                                                                                                                                         (_lhsIrangeMp `seq`
                                                                                                                                                                                                                                          (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                             (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                               ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                 { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                  { _tlOvalGam | _tlOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                   { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                    { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                     { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                      { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                       { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                                        { _tlOpredScope | _tlOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (_lhsIopts) of
-                                                                                                                                                                                                                                                         { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                          { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (_lhsIlexLev) of
-                                                                                                                                                                                                                                                           { _tlOlexLev | _tlOlexLev `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                            { _tlOkiGam | _tlOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIisNewtype) of
-                                                                                                                                                                                                                                                             { _tlOisNewtype | _tlOisNewtype `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                              { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                               { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                { _tlOclGam | _tlOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                 { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                  { _tlOchrStore | _tlOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                   { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                    { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (tl_5 _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOchrStore _tlOclDfGam _tlOclGam _tlOfinKiVarMp _tlOfinTyVarMp _tlOisNewtype _tlOkiGam _tlOlexLev _tlOmoduleNm _tlOopts _tlOpredScope _tlOrangeMp _tlOsysfEnv _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalGam _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                     { ( _tlIallErrSq,_tlIerrSq,_tlIffeCBindL,_tlIffiCBindL,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpp,_tlIppL,_tlItyCBindL,_tlIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                         (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                          { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                           { _hdOvalGam | _hdOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                            { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                              { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                               { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                                                                 { _hdOpredScope | _hdOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                  { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                   { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsIlexLev) of
-                                                                                                                                                                                                                                                                                    { _hdOlexLev | _hdOlexLev `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                     { _hdOkiGam | _hdOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsIisNewtype) of
-                                                                                                                                                                                                                                                                                      { _hdOisNewtype | _hdOisNewtype `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                       { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                        { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                         { _hdOclGam | _hdOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                          { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                           { _hdOchrStore | _hdOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                            { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                             { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (hd_5 _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOchrStore _hdOclDfGam _hdOclGam _hdOfinKiVarMp _hdOfinTyVarMp _hdOisNewtype _hdOkiGam _hdOlexLev _hdOmoduleNm _hdOopts _hdOpredScope _hdOrangeMp _hdOsysfEnv _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalGam _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                              { ( _hdIallErrSq,_hdIerrSq,_hdIffeCBindL,_hdIffiCBindL,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpp,_hdItyCBindL,_hdIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                  (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                                                                                                                                                                                                    { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case (_hdIffeCBindL ++ _tlIffeCBindL) of
-                                                                                                                                                                                                                                                                                                     { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (_hdIffiCBindL ++ _tlIffiCBindL) of
-                                                                                                                                                                                                                                                                                                      { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                        { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (_hdIpp >-< _tlIpp) of
-                                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                         (case (_hdIpp : _tlIppL) of
-                                                                                                                                                                                                                                                                                                          { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                          (case (_hdItyCBindL ++ _tlItyCBindL) of
-                                                                                                                                                                                                                                                                                                           { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                           (case (_hdIvalCBindL ++ _tlIvalCBindL) of
-                                                                                                                                                                                                                                                                                                            { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpp,_lhsOppL,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))
+                                                                                                                                                                                                                                          (_lhsItr `seq`
+                                                                                                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                              (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                  { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                  (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                   { _tlOvalGam | _tlOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                    { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                     { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                      { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (_lhsItr) of
+                                                                                                                                                                                                                                                       { _tlOtr | _tlOtr `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                        { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                         { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                                          { _tlOpredScope | _tlOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (_lhsIopts) of
+                                                                                                                                                                                                                                                           { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                            { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (_lhsIlexLev) of
+                                                                                                                                                                                                                                                             { _tlOlexLev | _tlOlexLev `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                              { _tlOkiGam | _tlOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_lhsIisNewtype) of
+                                                                                                                                                                                                                                                               { _tlOisNewtype | _tlOisNewtype `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                 { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                  { _tlOclGam | _tlOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                   { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                    { _tlOchrStore | _tlOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                     { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                      { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (tl_5 _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOchrStore _tlOclDfGam _tlOclGam _tlOfinKiVarMp _tlOfinTyVarMp _tlOisNewtype _tlOkiGam _tlOlexLev _tlOmoduleNm _tlOopts _tlOpredScope _tlOrangeMp _tlOsysfEnv _tlOtr _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalGam _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                       { ( _tlIallErrSq,_tlIerrSq,_tlIffeCBindL,_tlIffiCBindL,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpp,_tlIppL,_tlItrpp,_tlItyCBindL,_tlIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                           (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                            { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                             { _hdOvalGam | _hdOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                              { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                               { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                 { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                  { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                   { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                                                                    { _hdOpredScope | _hdOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                     { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                      { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIlexLev) of
+                                                                                                                                                                                                                                                                                       { _hdOlexLev | _hdOlexLev `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                        { _hdOkiGam | _hdOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsIisNewtype) of
+                                                                                                                                                                                                                                                                                         { _hdOisNewtype | _hdOisNewtype `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                          { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                           { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                            { _hdOclGam | _hdOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                             { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                              { _hdOchrStore | _hdOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                               { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (hd_5 _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOchrStore _hdOclDfGam _hdOclGam _hdOfinKiVarMp _hdOfinTyVarMp _hdOisNewtype _hdOkiGam _hdOlexLev _hdOmoduleNm _hdOopts _hdOpredScope _hdOrangeMp _hdOsysfEnv _hdOtr _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalGam _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                 { ( _hdIallErrSq,_hdIerrSq,_hdIffeCBindL,_hdIffiCBindL,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpp,_hdItrpp,_hdItyCBindL,_hdIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                     (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_hdIffeCBindL ++ _tlIffeCBindL) of
+                                                                                                                                                                                                                                                                                                        { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (_hdIffiCBindL ++ _tlIffiCBindL) of
+                                                                                                                                                                                                                                                                                                         { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                           { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                                                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (_hdIpp : _tlIppL) of
+                                                                                                                                                                                                                                                                                                             { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                             (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                                                                                                                                                              { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                              (case (_hdItyCBindL ++ _tlItyCBindL) of
+                                                                                                                                                                                                                                                                                                               { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                               (case (_hdIvalCBindL ++ _tlIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))))
                                                                                                                                                                                                                in  sem_DataConstrs_Cons_5)) of
                                                                                                                                                                                                         { ( sem_DataConstrs_5) | True ->
                                                                                                                                                                                                         ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOpatTyVarMp,_lhsOpatValGam,sem_DataConstrs_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))
@@ -574,6 +584,7 @@
                                                                                                                                           _lhsIpredScope
                                                                                                                                           _lhsIrangeMp
                                                                                                                                           _lhsIsysfEnv
+                                                                                                                                          _lhsItr
                                                                                                                                           _lhsItyKiGlobFreeTvarS
                                                                                                                                           _lhsItyTyGlobFreeTvarS
                                                                                                                                           _lhsItyTyTySigFreeTvarS
@@ -594,32 +605,35 @@
                                                                                                                                                        (_lhsIpredScope `seq`
                                                                                                                                                         (_lhsIrangeMp `seq`
                                                                                                                                                          (_lhsIsysfEnv `seq`
-                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                             (_lhsIvalGam `seq`
-                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                               ((case (Seq.empty) of
-                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                 (case (Seq.empty) of
-                                                                                                                                                                  { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                  (case ([]) of
-                                                                                                                                                                   { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
+                                                                                                                                                          (_lhsItr `seq`
+                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                              (_lhsIvalGam `seq`
+                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                ((case (Seq.empty) of
+                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                  (case (Seq.empty) of
+                                                                                                                                                                   { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                    { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
-                                                                                                                                                                    (case (Map.empty) of
-                                                                                                                                                                     { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                     (case (emptyVarMp) of
-                                                                                                                                                                      { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                      (case (empty) of
-                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                        { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                    { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
+                                                                                                                                                                    (case ([]) of
+                                                                                                                                                                     { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
+                                                                                                                                                                     (case (Map.empty) of
+                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                      (case (emptyVarMp) of
+                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                       (case (empty) of
+                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                         { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
-                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                          { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                          ( _lhsOallErrSq,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpp,_lhsOppL,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))
+                                                                                                                                                                         { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                         (case (trppEmpty) of
+                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                          (case ([]) of
+                                                                                                                                                                           { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
+                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                            { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                            ( _lhsOallErrSq,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))))
                                                                                                                                in  sem_DataConstrs_Nil_5)) of
                                                                                                                         { ( sem_DataConstrs_5) | True ->
                                                                                                                         ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOpatTyVarMp,_lhsOpatValGam,sem_DataConstrs_5) }) }) }) }) }) }) }))))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_DataField.hs b/src/UHC/Light/Compiler/EH/MainAG_DataField.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_DataField.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_DataField.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -134,6 +134,7 @@
          predScope            : PredScope
          rangeMp              : RangeMp
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tvKiVarMp            : VarMp
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
@@ -147,6 +148,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          gathTvKiVarMp        : VarMp
          pp                   : PP_Doc
+         trpp                 : TrPP
    alternatives:
       alternative Field:
          child hsrange        : {Range}
@@ -288,6 +290,7 @@
                                                                                                                                                                                 _lhsIpredScope
                                                                                                                                                                                 _lhsIrangeMp
                                                                                                                                                                                 _lhsIsysfEnv
+                                                                                                                                                                                _lhsItr
                                                                                                                                                                                 _lhsItvKiVarMp
                                                                                                                                                                                 _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                 _lhsItyTyGlobFreeTvarS
@@ -309,54 +312,59 @@
                                                                                                                                                                                               (_lhsIpredScope `seq`
                                                                                                                                                                                                (_lhsIrangeMp `seq`
                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                 (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                      ((case (_lhsIclGam) of
-                                                                                                                                                                                                        { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                        (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                         { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                              { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                               { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                 { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                  { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                  (case (_lhsIopts) of
-                                                                                                                                                                                                                   { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                    { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                    (case (_lhsIkiGam) of
-                                                                                                                                                                                                                     { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                      { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                       { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                        { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                        (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                         { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                             (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                              (case (_tyExprIerrSq) of
-                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                               (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                (case (emptyVarMp) of
-                                                                                                                                                                                                                                 { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                 (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                  { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                  (case (case mbLabels_ of
-                                                                                                                                                                                                                                           Just l  -> ppCommas' l >#< "::" >#< _tyExprIpp
-                                                                                                                                                                                                                                           Nothing -> _tyExprIpp) of
-                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTyVarMp,_lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))))
+                                                                                                                                                                                                 (_lhsItr `seq`
+                                                                                                                                                                                                  (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                       ((case (_lhsIclGam) of
+                                                                                                                                                                                                         { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                         (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                          { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                              (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                               { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                               (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                 { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                 (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                  { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                  (case (_lhsItr) of
+                                                                                                                                                                                                                   { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                    { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                    (case (_lhsIopts) of
+                                                                                                                                                                                                                     { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                      { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                      (case (_lhsIkiGam) of
+                                                                                                                                                                                                                       { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                        { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                         { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                          { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                          (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                           { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                               (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                (case (_tyExprIerrSq) of
+                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                  (case (emptyVarMp) of
+                                                                                                                                                                                                                                   { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                   (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                    { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                    (case (case mbLabels_ of
+                                                                                                                                                                                                                                             Just l  -> ppCommas' l >#< "::" >#< _tyExprIpp
+                                                                                                                                                                                                                                             Nothing -> _tyExprIpp) of
+                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                     (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                      { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTyVarMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))))
                                                                                                                                                                      in  sem_DataField_Field_5)) of
                                                                                                                                                               { ( sem_DataField_5) | True ->
                                                                                                                                                               ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOkiL,_lhsOkiVarMp,sem_DataField_5) }) }) }) }) }) }) }) }) }) }) }))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_DataFieldExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_DataFieldExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_DataFieldExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_DataFieldExpr.hs
@@ -19,1169 +19,1208 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- DataFieldExpr -----------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attribute:
-         gUniq                : UID
-   visit 2:
-      inherited attributes:
-         kiGam                : KiGam
-         lexLev               : Int
-      chained attribute:
-         predSameScopeCounter : Int
-   visit 3:
-      inherited attributes:
-         opts                 : EHCOpts
-         polGam               : PolGam
-         predScope            : PredScope
-         tyGam                : TyGam
-         tyKiGam              : TyKiGam
-         tyKiGlobFreeTvarS    : TyVarIdS
-      chained attributes:
-         kiVarMp              : VarMp
-         polVarMp             : VarMp
-   visit 4:
-      inherited attributes:
-         clGam                : ClGam
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         tyTyTySigFreeTvarS   : TyVarIdS
-      chained attribute:
-         gathDataGam          : DataGam
-   visit 5:
-      inherited attribute:
-         dataGam              : DataGam
-      synthesized attribute:
-         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
-   visit 6:
-      inherited attributes:
-         chrStore             : ScopedPredStore
-         clDfGam              : ClassDefaultGam
-         fiOpts               : FIOpts
-         tvKiVarMp            : VarMp
-         tyTyGlobFreeTvarS    : TyVarIdS
-         valGam               : ValGam
-         valTyGlobFreeTvarS   : TyVarIdS
-      chained attribute:
-         updExprTyVarMp       : VarMp
-      synthesized attributes:
-         fldL                 : [HsName]
-         mbConNm              : Maybe HsName
-         updExprTy            : Ty
-   visit 7:
-      inherited attributes:
-         fldFIOpts            : FIOpts
-         knTy                 : Ty
-      chained attribute:
-         tyVarMp              : VarMp
-      synthesized attributes:
-         gathCnstrMp          : CHRPredOccCnstrMp
-         gathRangeMp          : RangeMp
-         noLetQuantTyVarIdS   : TyVarIdS
-         ty                   : Ty
-   visit 8:
-      inherited attributes:
-         chrEvidBindMp        : EvidKeyToCBindMap
-         chrScopeBindMp       : PredScopeToCBindMap
-         dgi                  : DataGamInfo
-         finTyVarMp           : VarMp
-         finValGam            : ValGam
-         moduleNm             : HsName
-         rangeMp              : RangeMp
-         sysfEnv              : ToSysfEnv
-      chained attribute:
-         cSubst               : CSubst
-      synthesized attributes:
-         allErrSq             : ErrSq
-         dfeCBindL            : CBindL
-         dfeCExpr             : CExpr
-         errSq                : ErrSq
-         fuCExprL             : FieldUpdateL (DataTagInfo -> Int -> CExpr)
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         gathTvKiVarMp        : VarMp
-         mbDti                : Maybe DataTagInfo
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-   alternatives:
-      alternative Upd:
-         child hsrange        : {Range}
-         child dataFieldExpr  : DataFieldExpr 
-         child nm             : {HsName}
-         child expr           : Expr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup12      : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup12      : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup12      : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup12      : _
-            intra range       : {Range}
-         visit 5:
-            intra _tup12      : _
-            intra range       : {Range}
-         visit 6:
-            intra _tup12      : _
-            intra range       : {Range}
-         visit 7:
-            local lUniq       : {UID}
-            local fe          : {FIEnv}
-            local _tup11      : _
-            local fo_         : {FIOut}
-            local knDataTy    : {Ty}
-            local ty          : {Ty}
-            intra _tup12      : _
-            intra range       : {Range}
-         visit 8:
-            local finalTyExpr : _
-            local finalTyExprExpanded : _
-            local fldExprNm   : _
-            local sysfty      : _
-            local acorety     : _
-            local nmErrs      : {ErrL}
-            local pp          : _
-            local gTy         : {Ty}
-            local gathMentrelFilterMp : _
-            intra fe          : {FIEnv}
-            intra lUniq       : {UID}
-            intra _tup11      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-      alternative Con:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup14      : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup14      : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup14      : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup14      : _
-            intra range       : {Range}
-         visit 5:
-            intra _tup14      : _
-            intra range       : {Range}
-         visit 6:
-            intra _tup14      : _
-            intra range       : {Range}
-         visit 7:
-            local ty          : {Ty}
-            local lUniq2      : {UID}
-            local lUniq       : {UID}
-            local _tup13      : _
-            local gTy         : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup14      : _
-            intra range       : {Range}
-         visit 8:
-            local dti         : _
-            local nmErrs      : {ErrL}
-            local pp          : _
-            local gathMentrelFilterMp : _
-            intra _tup13      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-            intra gTy         : {Ty}
-      alternative Expr:
-         child hsrange        : {Range}
-         child expr           : Expr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup15      : _
-         visit 2:
-            intra _tup15      : _
-         visit 3:
-            intra _tup15      : _
-         visit 4:
-            intra _tup15      : _
-         visit 5:
-            intra _tup15      : _
-         visit 6:
-            local lUniq       : {UID}
-            intra _tup15      : _
-         visit 7:
-            local ty          : {Ty}
-         visit 8:
-            local dfeCBindL   : _
-            local dfeCExpr    : _
-            local fuCExprL    : _
-            local pp          : _
--}
-sem_DataFieldExpr_Upd :: Range ->
-                         T_DataFieldExpr ->
-                         HsName ->
-                         T_Expr ->
-                         T_DataFieldExpr
-
-sem_DataFieldExpr_Upd hsrange_ dataFieldExpr_ nm_ expr_ | hsrange_ `seq` (dataFieldExpr_ `seq` (nm_ `seq` (expr_ `seq` (True)))) =
-    (case (expr_) of
-     { ( _exprIrange,expr_1) | True ->
-         (case (dataFieldExpr_) of
-          { ( _dataFieldExprIrange,dataFieldExpr_1) | True ->
-              (case (rangeUnions [hsrange_, _dataFieldExprIrange
-                                                          , _exprIrange  ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_DataFieldExpr_Upd_1 :: T_DataFieldExpr_1
-                            sem_DataFieldExpr_Upd_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                       { __tup12 | __tup12 `seq` (True) ->
-                                       (case (__tup12) of
-                                        { (_dataFieldExprOgUniq,_) | _dataFieldExprOgUniq `seq` (True) ->
-                                        (case (dataFieldExpr_1 _dataFieldExprOgUniq) of
-                                         { ( _dataFieldExprIgUniq,dataFieldExpr_2) | True ->
-                                             (case (_dataFieldExprIgUniq) of
-                                              { _exprOgUniq | _exprOgUniq `seq` (True) ->
-                                              (case (expr_1 _exprOgUniq) of
-                                               { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
-                                                   (case (_exprIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_DataFieldExpr_Upd_2 :: T_DataFieldExpr_2
-                                                                sem_DataFieldExpr_Upd_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _dataFieldExprOpredSameScopeCounter | _dataFieldExprOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _dataFieldExprOlexLev | _dataFieldExprOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _dataFieldExprOkiGam | _dataFieldExprOkiGam `seq` (True) ->
-                                                                               (case (dataFieldExpr_2 _dataFieldExprOkiGam _dataFieldExprOlexLev _dataFieldExprOpredSameScopeCounter) of
-                                                                                { ( _dataFieldExprIpredSameScopeCounter,dataFieldExpr_3) | True ->
-                                                                                    (case (_dataFieldExprIpredSameScopeCounter) of
-                                                                                     { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case (_lhsIlexLev) of
-                                                                                      { _exprOlexLev | _exprOlexLev `seq` (True) ->
-                                                                                      (case (_lhsIkiGam) of
-                                                                                       { _exprOkiGam | _exprOkiGam `seq` (True) ->
-                                                                                       (case (True) of
-                                                                                        { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
-                                                                                        (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
-                                                                                         { ( _exprIpredSameScopeCounter,expr_3) | True ->
-                                                                                             (case (_exprIpredSameScopeCounter) of
-                                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                              (case ((let sem_DataFieldExpr_Upd_3 :: T_DataFieldExpr_3
-                                                                                                          sem_DataFieldExpr_Upd_3 =
-                                                                                                              (\ _lhsIkiVarMp
-                                                                                                                 _lhsIopts
-                                                                                                                 _lhsIpolGam
-                                                                                                                 _lhsIpolVarMp
-                                                                                                                 _lhsIpredScope
-                                                                                                                 _lhsItyGam
-                                                                                                                 _lhsItyKiGam
-                                                                                                                 _lhsItyKiGlobFreeTvarS ->
-                                                                                                                   _lhsIkiVarMp `seq`
-                                                                                                                   (_lhsIopts `seq`
-                                                                                                                    (_lhsIpolGam `seq`
-                                                                                                                     (_lhsIpolVarMp `seq`
-                                                                                                                      (_lhsIpredScope `seq`
-                                                                                                                       (_lhsItyGam `seq`
-                                                                                                                        (_lhsItyKiGam `seq`
-                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsItyGam) of
-                                                                                                                              { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                               { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                { _dataFieldExprOtyKiGlobFreeTvarS | _dataFieldExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                (case (_lhsItyKiGam) of
-                                                                                                                                 { _dataFieldExprOtyKiGam | _dataFieldExprOtyKiGam `seq` (True) ->
-                                                                                                                                 (case (_lhsItyGam) of
-                                                                                                                                  { _dataFieldExprOtyGam | _dataFieldExprOtyGam `seq` (True) ->
-                                                                                                                                  (case (_lhsIpredScope) of
-                                                                                                                                   { _dataFieldExprOpredScope | _dataFieldExprOpredScope `seq` (True) ->
-                                                                                                                                   (case (_lhsIpolVarMp) of
-                                                                                                                                    { _dataFieldExprOpolVarMp | _dataFieldExprOpolVarMp `seq` (True) ->
-                                                                                                                                    (case (_lhsIpolGam) of
-                                                                                                                                     { _dataFieldExprOpolGam | _dataFieldExprOpolGam `seq` (True) ->
-                                                                                                                                     (case (_lhsIopts) of
-                                                                                                                                      { _dataFieldExprOopts | _dataFieldExprOopts `seq` (True) ->
-                                                                                                                                      (case (_lhsIkiVarMp) of
-                                                                                                                                       { _dataFieldExprOkiVarMp | _dataFieldExprOkiVarMp `seq` (True) ->
-                                                                                                                                       (case (dataFieldExpr_3 _dataFieldExprOkiVarMp _dataFieldExprOopts _dataFieldExprOpolGam _dataFieldExprOpolVarMp _dataFieldExprOpredScope _dataFieldExprOtyGam _dataFieldExprOtyKiGam _dataFieldExprOtyKiGlobFreeTvarS) of
-                                                                                                                                        { ( _dataFieldExprIkiVarMp,_dataFieldExprIpolVarMp,dataFieldExpr_4) | True ->
-                                                                                                                                            (case (_dataFieldExprIpolVarMp) of
-                                                                                                                                             { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                                                             (case (_lhsIpolGam) of
-                                                                                                                                              { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                                                              (case (_lhsIopts) of
-                                                                                                                                               { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                                                               (case (_dataFieldExprIkiVarMp) of
-                                                                                                                                                { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                                                                (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                                                 { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                                                     (case (_exprIkiVarMp) of
-                                                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                      (case (_exprIpolVarMp) of
-                                                                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                       (case ((let sem_DataFieldExpr_Upd_4 :: T_DataFieldExpr_4
-                                                                                                                                                                   sem_DataFieldExpr_Upd_4 =
-                                                                                                                                                                       (\ _lhsIclGam
-                                                                                                                                                                          _lhsIfinKiVarMp
-                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                          _lhsIgathDataGam
-                                                                                                                                                                          _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                                                            (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                             (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                              (_lhsIgathDataGam `seq`
-                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                  { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                   { _dataFieldExprOtyTyTySigFreeTvarS | _dataFieldExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIgathDataGam) of
-                                                                                                                                                                                    { _dataFieldExprOgathDataGam | _dataFieldExprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                     { _dataFieldExprOfinTyKiGam | _dataFieldExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                      { _dataFieldExprOfinKiVarMp | _dataFieldExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                                                       { _dataFieldExprOclGam | _dataFieldExprOclGam `seq` (True) ->
-                                                                                                                                                                                       (case (dataFieldExpr_4 _dataFieldExprOclGam _dataFieldExprOfinKiVarMp _dataFieldExprOfinTyKiGam _dataFieldExprOgathDataGam _dataFieldExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                        { ( _dataFieldExprIgathDataGam,dataFieldExpr_5) | True ->
-                                                                                                                                                                                            (case (_dataFieldExprIgathDataGam) of
-                                                                                                                                                                                             { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                              { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                               { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                               (case (_lhsIclGam) of
-                                                                                                                                                                                                { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                                                                (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                 { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                                                                     (case (_exprIgathDataGam) of
-                                                                                                                                                                                                      { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                      (case ((let sem_DataFieldExpr_Upd_5 :: T_DataFieldExpr_5
-                                                                                                                                                                                                                  sem_DataFieldExpr_Upd_5 =
-                                                                                                                                                                                                                      (\ _lhsIdataGam ->
-                                                                                                                                                                                                                           _lhsIdataGam `seq`
-                                                                                                                                                                                                                           ((case (_lhsIdataGam) of
-                                                                                                                                                                                                                             { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIdataGam) of
-                                                                                                                                                                                                                              { _dataFieldExprOdataGam | _dataFieldExprOdataGam `seq` (True) ->
-                                                                                                                                                                                                                              (case (expr_5 _exprOdataGam) of
-                                                                                                                                                                                                                               { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                                                                                   (case (dataFieldExpr_5 _dataFieldExprOdataGam) of
-                                                                                                                                                                                                                                    { ( _dataFieldExprIchrInstDeclSq,dataFieldExpr_6) | True ->
-                                                                                                                                                                                                                                        (case (_dataFieldExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
-                                                                                                                                                                                                                                         { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                         (case ((let sem_DataFieldExpr_Upd_6 :: T_DataFieldExpr_6
-                                                                                                                                                                                                                                                     sem_DataFieldExpr_Upd_6 =
-                                                                                                                                                                                                                                                         (\ _lhsIchrStore
-                                                                                                                                                                                                                                                            _lhsIclDfGam
-                                                                                                                                                                                                                                                            _lhsIfiOpts
-                                                                                                                                                                                                                                                            _lhsItvKiVarMp
-                                                                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                            _lhsIupdExprTyVarMp
-                                                                                                                                                                                                                                                            _lhsIvalGam
-                                                                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                              _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                              (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                               (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                                (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                  (_lhsIupdExprTyVarMp `seq`
-                                                                                                                                                                                                                                                                   (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                     ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                       { _dataFieldExprOvalTyGlobFreeTvarS | _dataFieldExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                        { _dataFieldExprOvalGam | _dataFieldExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIupdExprTyVarMp) of
-                                                                                                                                                                                                                                                                         { _dataFieldExprOupdExprTyVarMp | _dataFieldExprOupdExprTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                          { _dataFieldExprOtyTyGlobFreeTvarS | _dataFieldExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                           { _dataFieldExprOtvKiVarMp | _dataFieldExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                            { _dataFieldExprOfiOpts | _dataFieldExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                             { _dataFieldExprOclDfGam | _dataFieldExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                              { _dataFieldExprOchrStore | _dataFieldExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (dataFieldExpr_6 _dataFieldExprOchrStore _dataFieldExprOclDfGam _dataFieldExprOfiOpts _dataFieldExprOtvKiVarMp _dataFieldExprOtyTyGlobFreeTvarS _dataFieldExprOupdExprTyVarMp _dataFieldExprOvalGam _dataFieldExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                               { ( _dataFieldExprIfldL,_dataFieldExprImbConNm,_dataFieldExprIupdExprTy,_dataFieldExprIupdExprTyVarMp,dataFieldExpr_7) | True ->
-                                                                                                                                                                                                                                                                                   (case (nm_ : _dataFieldExprIfldL) of
-                                                                                                                                                                                                                                                                                    { _lhsOfldL | _lhsOfldL `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_dataFieldExprImbConNm) of
-                                                                                                                                                                                                                                                                                     { _lhsOmbConNm | _lhsOmbConNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_dataFieldExprIupdExprTy) of
-                                                                                                                                                                                                                                                                                      { _lhsOupdExprTy | _lhsOupdExprTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_dataFieldExprIupdExprTyVarMp) of
-                                                                                                                                                                                                                                                                                       { _lhsOupdExprTyVarMp | _lhsOupdExprTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case ((let sem_DataFieldExpr_Upd_7 :: T_DataFieldExpr_7
-                                                                                                                                                                                                                                                                                                   sem_DataFieldExpr_Upd_7 =
-                                                                                                                                                                                                                                                                                                       (\ _lhsIfldFIOpts
-                                                                                                                                                                                                                                                                                                          _lhsIknTy
-                                                                                                                                                                                                                                                                                                          _lhsItyVarMp ->
-                                                                                                                                                                                                                                                                                                            _lhsIfldFIOpts `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                                                                 { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsIfldFIOpts) of
-                                                                                                                                                                                                                                                                                                                  { _dataFieldExprOfldFIOpts | _dataFieldExprOfldFIOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (__tup12) of
-                                                                                                                                                                                                                                                                                                                   { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                                                              { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                                                              , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                                                              , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                                                              , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                                                              , feRange = _range
-                                                                                                                                                                                                                                                                                                                              }) of
-                                                                                                                                                                                                                                                                                                                    { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (dfCheck _lUniq _lhsIfiOpts _fe nm_ _lhsIvalGam _lhsItyVarMp _lhsIknTy) of
-                                                                                                                                                                                                                                                                                                                     { __tup11 | __tup11 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (__tup11) of
-                                                                                                                                                                                                                                                                                                                      { (_,_,_,_fo_,_) | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                                       { _dataFieldExprOtyVarMp | _dataFieldExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (__tup11) of
-                                                                                                                                                                                                                                                                                                                        { (_,_knDataTy,_,_,_) | _knDataTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_knDataTy) of
-                                                                                                                                                                                                                                                                                                                         { _dataFieldExprOknTy | _dataFieldExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (dataFieldExpr_7 _dataFieldExprOfldFIOpts _dataFieldExprOknTy _dataFieldExprOtyVarMp) of
-                                                                                                                                                                                                                                                                                                                          { ( _dataFieldExprIgathCnstrMp,_dataFieldExprIgathRangeMp,_dataFieldExprInoLetQuantTyVarIdS,_dataFieldExprIty,_dataFieldExprItyVarMp,dataFieldExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                              (case (_dataFieldExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                               { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                 { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                                  { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                                   { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (__tup11) of
-                                                                                                                                                                                                                                                                                                                                    { (_,_,_exprOknTy,_,_) | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfldFIOpts) of
-                                                                                                                                                                                                                                                                                                                                     { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                      { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                                                                                                                          (case (_dataFieldExprIgathCnstrMp `cnstrMpUnion` _exprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (_dataFieldExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_dataFieldExprInoLetQuantTyVarIdS `Set.union` _exprInoLetQuantTyVarIdS) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_knDataTy) of
-                                                                                                                                                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_ty) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case ((let sem_DataFieldExpr_Upd_8 :: T_DataFieldExpr_8
-                                                                                                                                                                                                                                                                                                                                                            sem_DataFieldExpr_Upd_8 =
-                                                                                                                                                                                                                                                                                                                                                                (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIdgi
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                                   _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                                   _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                       (_lhsIdgi `seq`
-                                                                                                                                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                                             ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                               { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                 { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                  { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                   { _dataFieldExprOsysfEnv | _dataFieldExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                    { _dataFieldExprOrangeMp | _dataFieldExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                     { _dataFieldExprOfinValGam | _dataFieldExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                      { _dataFieldExprOfinTyVarMp | _dataFieldExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                       { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                        { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                         { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                          { _dataFieldExprOchrScopeBindMp | _dataFieldExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _dataFieldExprOchrEvidBindMp | _dataFieldExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _dataFieldExprOcSubst | _dataFieldExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                             { _dataFieldExprOmoduleNm | _dataFieldExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIdgi) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _dataFieldExprOdgi | _dataFieldExprOdgi `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case (dataFieldExpr_8 _dataFieldExprOcSubst _dataFieldExprOchrEvidBindMp _dataFieldExprOchrScopeBindMp _dataFieldExprOdgi _dataFieldExprOfinTyVarMp _dataFieldExprOfinValGam _dataFieldExprOmoduleNm _dataFieldExprOrangeMp _dataFieldExprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                               { ( _dataFieldExprIallErrSq,_dataFieldExprIcSubst,_dataFieldExprIdfeCBindL,_dataFieldExprIdfeCExpr,_dataFieldExprIerrSq,_dataFieldExprIfuCExprL,_dataFieldExprIgathMentrelFilterMp,_dataFieldExprIgathTvKiVarMp,_dataFieldExprImbDti,_dataFieldExprIpp,_dataFieldExprIppL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (_dataFieldExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                                      { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                          (case (_dataFieldExprIallErrSq `Seq.union` _exprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                           (case (_exprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp `varUpd` _exprIty) of
-                                                                                                                                                                                                                                                                                                                                                                                                             { _finalTyExpr | _finalTyExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                             (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTyExpr) of
-                                                                                                                                                                                                                                                                                                                                                                                                              { _finalTyExprExpanded | _finalTyExprExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                              (case (mkHNm _lUniq) of
-                                                                                                                                                                                                                                                                                                                                                                                                               { _fldExprNm | _fldExprNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                               (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                                                                                                                                                                { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                (case (mkCTy _lhsIopts _finalTyExprExpanded _sysfty) of
-                                                                                                                                                                                                                                                                                                                                                                                                                 { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                 (case (acoreBind1Ty _fldExprNm _acorety _exprIcexpr : _dataFieldExprIdfeCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOdfeCBindL | _lhsOdfeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldExprIdfeCExpr) of
-                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOdfeCExpr | _lhsOdfeCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                   (case (__tup11) of
-                                                                                                                                                                                                                                                                                                                                                                                                                    { (_,_,_,_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                    (case (ppFld "=" Nothing nm_ (pp nm_) _exprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                     (case (Seq.unions [ _dataFieldExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                                                       , rngLift _range mkNestErr' _pp [_exprIerrSq, Seq.fromList _nmErrs, foErrSq _fo_]
-                                                                                                                                                                                                                                                                                                                                                                                                                                       ]) of
-                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                      (case (let mke dti o = CExpr_TupIns _dataFieldExprIdfeCExpr (dtiCTag dti) nm_ (acoreInt _lhsIopts o) (acoreVar _fldExprNm)
-                                                                                                                                                                                                                                                                                                                                                                                                                             in  (nm_,(mke,Nothing)) : _dataFieldExprIfuCExprL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                       (case (__tup11) of
-                                                                                                                                                                                                                                                                                                                                                                                                                        { (_gTy,_,_,_,_) | _gTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                        (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val (hsnFldUpd nm_)
-                                                                                                                                                                                                                                                                                                                                                                                                                               `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                                                                                                                                                                                                               tyUsedNames _lhsImoduleNm _gTy) of
-                                                                                                                                                                                                                                                                                                                                                                                                                         { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_dataFieldExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_dataFieldExprImbDti) of
-                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOmbDti | _lhsOmbDti `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_dataFieldExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_pp : _dataFieldExprIppL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOcSubst,_lhsOdfeCBindL,_lhsOdfeCExpr,_lhsOerrSq,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOmbDti,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                                                                                                                                                                                                                        in  sem_DataFieldExpr_Upd_8)) of
-                                                                                                                                                                                                                                                                                                                                                 { ( sem_DataFieldExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                                                 ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOty,_lhsOtyVarMp,sem_DataFieldExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))
-                                                                                                                                                                                                                                                                                               in  sem_DataFieldExpr_Upd_7)) of
-                                                                                                                                                                                                                                                                                        { ( sem_DataFieldExpr_7) | True ->
-                                                                                                                                                                                                                                                                                        ( _lhsOfldL,_lhsOmbConNm,_lhsOupdExprTy,_lhsOupdExprTyVarMp,sem_DataFieldExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                 in  sem_DataFieldExpr_Upd_6)) of
-                                                                                                                                                                                                                                          { ( sem_DataFieldExpr_6) | True ->
-                                                                                                                                                                                                                                          ( _lhsOchrInstDeclSq,sem_DataFieldExpr_6) }) }) }) }) }) })))
-                                                                                                                                                                                                              in  sem_DataFieldExpr_Upd_5)) of
-                                                                                                                                                                                                       { ( sem_DataFieldExpr_5) | True ->
-                                                                                                                                                                                                       ( _lhsOgathDataGam,sem_DataFieldExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                               in  sem_DataFieldExpr_Upd_4)) of
-                                                                                                                                                        { ( sem_DataFieldExpr_4) | True ->
-                                                                                                                                                        ( _lhsOkiVarMp,_lhsOpolVarMp,sem_DataFieldExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                      in  sem_DataFieldExpr_Upd_3)) of
-                                                                                               { ( sem_DataFieldExpr_3) | True ->
-                                                                                               ( _lhsOpredSameScopeCounter,sem_DataFieldExpr_3) }) }) }) }) }) }) }) }) }) }) })))))
-                                                            in  sem_DataFieldExpr_Upd_2)) of
-                                                     { ( sem_DataFieldExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_DataFieldExpr_2) }) }) }) }) }) }) })))
-                        in  sem_DataFieldExpr_Upd_1)) of
-                 { ( sem_DataFieldExpr_1) | True ->
-                 ( _lhsOrange,sem_DataFieldExpr_1) }) }) }) }) })
-
-sem_DataFieldExpr_Con :: Range ->
-                         HsName ->
-                         T_DataFieldExpr
-
-sem_DataFieldExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_DataFieldExpr_Con_1 :: T_DataFieldExpr_1
-                  sem_DataFieldExpr_Con_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
-                             { __tup14 | __tup14 `seq` (True) ->
-                             (case (__tup14) of
-                              { (_lhsOgUniq,_,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_DataFieldExpr_Con_2 :: T_DataFieldExpr_2
-                                          sem_DataFieldExpr_Con_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_DataFieldExpr_Con_3 :: T_DataFieldExpr_3
-                                                                   sem_DataFieldExpr_Con_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case ((let sem_DataFieldExpr_Con_4 :: T_DataFieldExpr_4
-                                                                                                  sem_DataFieldExpr_Con_4 =
-                                                                                                      (\ _lhsIclGam
-                                                                                                         _lhsIfinKiVarMp
-                                                                                                         _lhsIfinTyKiGam
-                                                                                                         _lhsIgathDataGam
-                                                                                                         _lhsItyTyTySigFreeTvarS ->
-                                                                                                           _lhsIclGam `seq`
-                                                                                                           (_lhsIfinKiVarMp `seq`
-                                                                                                            (_lhsIfinTyKiGam `seq`
-                                                                                                             (_lhsIgathDataGam `seq`
-                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                               ((case (_lhsIgathDataGam) of
-                                                                                                                 { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                 (case ((let sem_DataFieldExpr_Con_5 :: T_DataFieldExpr_5
-                                                                                                                             sem_DataFieldExpr_Con_5 =
-                                                                                                                                 (\ _lhsIdataGam ->
-                                                                                                                                      _lhsIdataGam `seq`
-                                                                                                                                      ((case (Seq.empty) of
-                                                                                                                                        { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                        (case ((let sem_DataFieldExpr_Con_6 :: T_DataFieldExpr_6
-                                                                                                                                                    sem_DataFieldExpr_Con_6 =
-                                                                                                                                                        (\ _lhsIchrStore
-                                                                                                                                                           _lhsIclDfGam
-                                                                                                                                                           _lhsIfiOpts
-                                                                                                                                                           _lhsItvKiVarMp
-                                                                                                                                                           _lhsItyTyGlobFreeTvarS
-                                                                                                                                                           _lhsIupdExprTyVarMp
-                                                                                                                                                           _lhsIvalGam
-                                                                                                                                                           _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                             _lhsIchrStore `seq`
-                                                                                                                                                             (_lhsIclDfGam `seq`
-                                                                                                                                                              (_lhsIfiOpts `seq`
-                                                                                                                                                               (_lhsItvKiVarMp `seq`
-                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                 (_lhsIupdExprTyVarMp `seq`
-                                                                                                                                                                  (_lhsIvalGam `seq`
-                                                                                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                    ((case ([]) of
-                                                                                                                                                                      { _lhsOfldL | _lhsOfldL `seq` (True) ->
-                                                                                                                                                                      (case (Just nm_) of
-                                                                                                                                                                       { _lhsOmbConNm | _lhsOmbConNm `seq` (True) ->
-                                                                                                                                                                       (case (Ty_Any) of
-                                                                                                                                                                        { _lhsOupdExprTy | _lhsOupdExprTy `seq` (True) ->
-                                                                                                                                                                        (case (_lhsIupdExprTyVarMp) of
-                                                                                                                                                                         { _lhsOupdExprTyVarMp | _lhsOupdExprTyVarMp `seq` (True) ->
-                                                                                                                                                                         (case ((let sem_DataFieldExpr_Con_7 :: T_DataFieldExpr_7
-                                                                                                                                                                                     sem_DataFieldExpr_Con_7 =
-                                                                                                                                                                                         (\ _lhsIfldFIOpts
-                                                                                                                                                                                            _lhsIknTy
-                                                                                                                                                                                            _lhsItyVarMp ->
-                                                                                                                                                                                              _lhsIfldFIOpts `seq`
-                                                                                                                                                                                              (_lhsIknTy `seq`
-                                                                                                                                                                                               (_lhsItyVarMp `seq`
-                                                                                                                                                                                                ((case (Map.empty) of
-                                                                                                                                                                                                  { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                  (case (Map.empty) of
-                                                                                                                                                                                                   { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                   (case (Set.empty) of
-                                                                                                                                                                                                    { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                    (case (_lhsIknTy) of
-                                                                                                                                                                                                     { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                     (case (_ty) of
-                                                                                                                                                                                                      { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                      (case (__tup14) of
-                                                                                                                                                                                                       { (_,_,_lUniq2) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                       (case (__tup14) of
-                                                                                                                                                                                                        { (_,_lUniq,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                        (case (valGamLookupTy (hsnUn nm_) _lhsIvalGam) of
-                                                                                                                                                                                                         { __tup13 | __tup13 `seq` (True) ->
-                                                                                                                                                                                                         (case (__tup13) of
-                                                                                                                                                                                                          { (_gTy,_) | _gTy `seq` (True) ->
-                                                                                                                                                                                                          (case (defaultFIEnv
-                                                                                                                                                                                                                     { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                     , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                     , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                     , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                     , feRange = _range
-                                                                                                                                                                                                                     }) of
-                                                                                                                                                                                                           { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                           (case (let [u] = mkNewTyVarL 1 _lUniq
-                                                                                                                                                                                                                  in  fitsIn _lhsIfiOpts _fe _lUniq2 _lhsItyVarMp (_gTy) ([_lhsIknTy] `appArr` u)) of
-                                                                                                                                                                                                            { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                            (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
-                                                                                                                                                                                                             { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                             (case ((let sem_DataFieldExpr_Con_8 :: T_DataFieldExpr_8
-                                                                                                                                                                                                                         sem_DataFieldExpr_Con_8 =
-                                                                                                                                                                                                                             (\ _lhsIcSubst
-                                                                                                                                                                                                                                _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                _lhsIdgi
-                                                                                                                                                                                                                                _lhsIfinTyVarMp
-                                                                                                                                                                                                                                _lhsIfinValGam
-                                                                                                                                                                                                                                _lhsImoduleNm
-                                                                                                                                                                                                                                _lhsIrangeMp
-                                                                                                                                                                                                                                _lhsIsysfEnv ->
-                                                                                                                                                                                                                                  _lhsIcSubst `seq`
-                                                                                                                                                                                                                                  (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                   (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                    (_lhsIdgi `seq`
-                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                      (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                        (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                          ((case (Seq.empty) of
-                                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                             { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                             (case ([]) of
-                                                                                                                                                                                                                                              { _lhsOdfeCBindL | _lhsOdfeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                              (case (dgiDtiOfCon nm_ _lhsIdgi) of
-                                                                                                                                                                                                                                               { _dti | _dti `seq` (True) ->
-                                                                                                                                                                                                                                               (case (CExpr_Tup (dtiCTag _dti)) of
-                                                                                                                                                                                                                                                { _lhsOdfeCExpr | _lhsOdfeCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                (case (__tup13) of
-                                                                                                                                                                                                                                                 { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (pp nm_) of
-                                                                                                                                                                                                                                                  { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs, foErrSq _fo_]) of
-                                                                                                                                                                                                                                                   { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                   (case ([]) of
-                                                                                                                                                                                                                                                    { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val (hsnUn nm_)
-                                                                                                                                                                                                                                                           `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                                           tyUsedNames _lhsImoduleNm _gTy) of
-                                                                                                                                                                                                                                                     { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (emptyVarMp) of
-                                                                                                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (Just _dti) of
-                                                                                                                                                                                                                                                        { _lhsOmbDti | _lhsOmbDti `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (_pp) of
-                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                                                                                                          { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOcSubst,_lhsOdfeCBindL,_lhsOdfeCExpr,_lhsOerrSq,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOmbDti,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                                                                                     in  sem_DataFieldExpr_Con_8)) of
-                                                                                                                                                                                                              { ( sem_DataFieldExpr_8) | True ->
-                                                                                                                                                                                                              ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOty,_lhsOtyVarMp,sem_DataFieldExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) })))))
-                                                                                                                                                                                 in  sem_DataFieldExpr_Con_7)) of
-                                                                                                                                                                          { ( sem_DataFieldExpr_7) | True ->
-                                                                                                                                                                          ( _lhsOfldL,_lhsOmbConNm,_lhsOupdExprTy,_lhsOupdExprTyVarMp,sem_DataFieldExpr_7) }) }) }) }) }))))))))))
-                                                                                                                                                in  sem_DataFieldExpr_Con_6)) of
-                                                                                                                                         { ( sem_DataFieldExpr_6) | True ->
-                                                                                                                                         ( _lhsOchrInstDeclSq,sem_DataFieldExpr_6) }) })))
-                                                                                                                         in  sem_DataFieldExpr_Con_5)) of
-                                                                                                                  { ( sem_DataFieldExpr_5) | True ->
-                                                                                                                  ( _lhsOgathDataGam,sem_DataFieldExpr_5) }) })))))))
-                                                                                              in  sem_DataFieldExpr_Con_4)) of
-                                                                                       { ( sem_DataFieldExpr_4) | True ->
-                                                                                       ( _lhsOkiVarMp,_lhsOpolVarMp,sem_DataFieldExpr_4) }) }) }))))))))))
-                                                               in  sem_DataFieldExpr_Con_3)) of
-                                                        { ( sem_DataFieldExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_DataFieldExpr_3) }) })))))
-                                      in  sem_DataFieldExpr_Con_2)) of
-                               { ( sem_DataFieldExpr_2) | True ->
-                               ( _lhsOgUniq,sem_DataFieldExpr_2) }) }) })))
-              in  sem_DataFieldExpr_Con_1)) of
-       { ( sem_DataFieldExpr_1) | True ->
-       ( _lhsOrange,sem_DataFieldExpr_1) }) }) })
-
-sem_DataFieldExpr_Expr :: Range ->
-                          T_Expr ->
-                          T_DataFieldExpr
-
-sem_DataFieldExpr_Expr hsrange_ expr_ | hsrange_ `seq` (expr_ `seq` (True)) =
-    (case (expr_) of
-     { ( _exprIrange,expr_1) | True ->
-         (case (rangeUnions [hsrange_, _exprIrange   , _exprIrange  ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_DataFieldExpr_Expr_1 :: T_DataFieldExpr_1
-                       sem_DataFieldExpr_Expr_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup15 | __tup15 `seq` (True) ->
-                                  (case (__tup15) of
-                                   { (_exprOgUniq,_) | _exprOgUniq `seq` (True) ->
-                                   (case (expr_1 _exprOgUniq) of
-                                    { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
-                                        (case (_exprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_DataFieldExpr_Expr_2 :: T_DataFieldExpr_2
-                                                     sem_DataFieldExpr_Expr_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _exprOlexLev | _exprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _exprOkiGam | _exprOkiGam `seq` (True) ->
-                                                                    (case (True) of
-                                                                     { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
-                                                                     (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
-                                                                      { ( _exprIpredSameScopeCounter,expr_3) | True ->
-                                                                          (case (_exprIpredSameScopeCounter) of
-                                                                           { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                           (case ((let sem_DataFieldExpr_Expr_3 :: T_DataFieldExpr_3
-                                                                                       sem_DataFieldExpr_Expr_3 =
-                                                                                           (\ _lhsIkiVarMp
-                                                                                              _lhsIopts
-                                                                                              _lhsIpolGam
-                                                                                              _lhsIpolVarMp
-                                                                                              _lhsIpredScope
-                                                                                              _lhsItyGam
-                                                                                              _lhsItyKiGam
-                                                                                              _lhsItyKiGlobFreeTvarS ->
-                                                                                                _lhsIkiVarMp `seq`
-                                                                                                (_lhsIopts `seq`
-                                                                                                 (_lhsIpolGam `seq`
-                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                   (_lhsIpredScope `seq`
-                                                                                                    (_lhsItyGam `seq`
-                                                                                                     (_lhsItyKiGam `seq`
-                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                         { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                         (case (_lhsItyKiGam) of
-                                                                                                          { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                          (case (_lhsItyGam) of
-                                                                                                           { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                           (case (_lhsIpredScope) of
-                                                                                                            { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                            (case (_lhsIpolVarMp) of
-                                                                                                             { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                             (case (_lhsIpolGam) of
-                                                                                                              { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                              (case (_lhsIopts) of
-                                                                                                               { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                               (case (_lhsIkiVarMp) of
-                                                                                                                { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                                (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                 { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                     (case (_exprIkiVarMp) of
-                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                      (case (_exprIpolVarMp) of
-                                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                       (case ((let sem_DataFieldExpr_Expr_4 :: T_DataFieldExpr_4
-                                                                                                                                   sem_DataFieldExpr_Expr_4 =
-                                                                                                                                       (\ _lhsIclGam
-                                                                                                                                          _lhsIfinKiVarMp
-                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                          _lhsIgathDataGam
-                                                                                                                                          _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                            (_lhsIfinKiVarMp `seq`
-                                                                                                                                             (_lhsIfinTyKiGam `seq`
-                                                                                                                                              (_lhsIgathDataGam `seq`
-                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                  { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                  (case (_lhsIgathDataGam) of
-                                                                                                                                                   { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIclGam) of
-                                                                                                                                                      { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                      (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                       { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                           (case (_exprIgathDataGam) of
-                                                                                                                                                            { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                            (case ((let sem_DataFieldExpr_Expr_5 :: T_DataFieldExpr_5
-                                                                                                                                                                        sem_DataFieldExpr_Expr_5 =
-                                                                                                                                                                            (\ _lhsIdataGam ->
-                                                                                                                                                                                 _lhsIdataGam `seq`
-                                                                                                                                                                                 ((case (_lhsIdataGam) of
-                                                                                                                                                                                   { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                                                   (case (expr_5 _exprOdataGam) of
-                                                                                                                                                                                    { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                                        (case (_exprIchrInstDeclSq) of
-                                                                                                                                                                                         { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                         (case ((let sem_DataFieldExpr_Expr_6 :: T_DataFieldExpr_6
-                                                                                                                                                                                                     sem_DataFieldExpr_Expr_6 =
-                                                                                                                                                                                                         (\ _lhsIchrStore
-                                                                                                                                                                                                            _lhsIclDfGam
-                                                                                                                                                                                                            _lhsIfiOpts
-                                                                                                                                                                                                            _lhsItvKiVarMp
-                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                            _lhsIupdExprTyVarMp
-                                                                                                                                                                                                            _lhsIvalGam
-                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                              _lhsIchrStore `seq`
-                                                                                                                                                                                                              (_lhsIclDfGam `seq`
-                                                                                                                                                                                                               (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                  (_lhsIupdExprTyVarMp `seq`
-                                                                                                                                                                                                                   (_lhsIvalGam `seq`
-                                                                                                                                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                     ((case ([]) of
-                                                                                                                                                                                                                       { _lhsOfldL | _lhsOfldL `seq` (True) ->
-                                                                                                                                                                                                                       (case (Nothing) of
-                                                                                                                                                                                                                        { _lhsOmbConNm | _lhsOmbConNm `seq` (True) ->
-                                                                                                                                                                                                                        (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                         { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                         (case (_lhsIvalGam) of
-                                                                                                                                                                                                                          { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                           { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                            { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                             { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                              { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIchrStore) of
-                                                                                                                                                                                                                               { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                               (case (__tup15) of
-                                                                                                                                                                                                                                { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                (case (mkNewTyVar _lUniq) of
-                                                                                                                                                                                                                                 { _exprOknTy | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                 (case (_lhsIupdExprTyVarMp) of
-                                                                                                                                                                                                                                  { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                  (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                   { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                       (case (_exprIty) of
-                                                                                                                                                                                                                                        { _lhsOupdExprTy | _lhsOupdExprTy `seq` (True) ->
-                                                                                                                                                                                                                                        (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                         { _lhsOupdExprTyVarMp | _lhsOupdExprTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                         (case ((let sem_DataFieldExpr_Expr_7 :: T_DataFieldExpr_7
-                                                                                                                                                                                                                                                     sem_DataFieldExpr_Expr_7 =
-                                                                                                                                                                                                                                                         (\ _lhsIfldFIOpts
-                                                                                                                                                                                                                                                            _lhsIknTy
-                                                                                                                                                                                                                                                            _lhsItyVarMp ->
-                                                                                                                                                                                                                                                              _lhsIfldFIOpts `seq`
-                                                                                                                                                                                                                                                              (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                               (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                ((case (_exprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                  { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_exprIgathRangeMp) of
-                                                                                                                                                                                                                                                                   { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_exprInoLetQuantTyVarIdS) of
-                                                                                                                                                                                                                                                                    { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIknTy) of
-                                                                                                                                                                                                                                                                     { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_ty) of
-                                                                                                                                                                                                                                                                      { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                       { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case ((let sem_DataFieldExpr_Expr_8 :: T_DataFieldExpr_8
-                                                                                                                                                                                                                                                                                   sem_DataFieldExpr_Expr_8 =
-                                                                                                                                                                                                                                                                                       (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                          _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                          _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                          _lhsIdgi
-                                                                                                                                                                                                                                                                                          _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                          _lhsIfinValGam
-                                                                                                                                                                                                                                                                                          _lhsImoduleNm
-                                                                                                                                                                                                                                                                                          _lhsIrangeMp
-                                                                                                                                                                                                                                                                                          _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                            _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                            (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                             (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                              (_lhsIdgi `seq`
-                                                                                                                                                                                                                                                                                               (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                  (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                   (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                    ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                      { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                       { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                        { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                         { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                          { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                           { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                            { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                             { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                                              { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                               { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                                                   (case (_exprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_exprIcSubst) of
-                                                                                                                                                                                                                                                                                                                     { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case ([]) of
-                                                                                                                                                                                                                                                                                                                      { _dfeCBindL | _dfeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_dfeCBindL) of
-                                                                                                                                                                                                                                                                                                                       { _lhsOdfeCBindL | _lhsOdfeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_exprIcexpr) of
-                                                                                                                                                                                                                                                                                                                        { _dfeCExpr | _dfeCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_dfeCExpr) of
-                                                                                                                                                                                                                                                                                                                         { _lhsOdfeCExpr | _lhsOdfeCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_exprIerrSq) of
-                                                                                                                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case ([]) of
-                                                                                                                                                                                                                                                                                                                           { _fuCExprL | _fuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_fuCExprL) of
-                                                                                                                                                                                                                                                                                                                            { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_exprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (_exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                              { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case (Nothing) of
-                                                                                                                                                                                                                                                                                                                               { _lhsOmbDti | _lhsOmbDti `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (_exprIpp) of
-                                                                                                                                                                                                                                                                                                                                { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                                                                                                                  { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOcSubst,_lhsOdfeCBindL,_lhsOdfeCExpr,_lhsOerrSq,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOmbDti,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                                                                                                                                               in  sem_DataFieldExpr_Expr_8)) of
-                                                                                                                                                                                                                                                                        { ( sem_DataFieldExpr_8) | True ->
-                                                                                                                                                                                                                                                                        ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOty,_lhsOtyVarMp,sem_DataFieldExpr_8) }) }) }) }) }) }) })))))
-                                                                                                                                                                                                                                                 in  sem_DataFieldExpr_Expr_7)) of
-                                                                                                                                                                                                                                          { ( sem_DataFieldExpr_7) | True ->
-                                                                                                                                                                                                                                          ( _lhsOfldL,_lhsOmbConNm,_lhsOupdExprTy,_lhsOupdExprTyVarMp,sem_DataFieldExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                 in  sem_DataFieldExpr_Expr_6)) of
-                                                                                                                                                                                          { ( sem_DataFieldExpr_6) | True ->
-                                                                                                                                                                                          ( _lhsOchrInstDeclSq,sem_DataFieldExpr_6) }) }) }) })))
-                                                                                                                                                                    in  sem_DataFieldExpr_Expr_5)) of
-                                                                                                                                                             { ( sem_DataFieldExpr_5) | True ->
-                                                                                                                                                             ( _lhsOgathDataGam,sem_DataFieldExpr_5) }) }) }) }) }) }) }) })))))))
-                                                                                                                               in  sem_DataFieldExpr_Expr_4)) of
-                                                                                                                        { ( sem_DataFieldExpr_4) | True ->
-                                                                                                                        ( _lhsOkiVarMp,_lhsOpolVarMp,sem_DataFieldExpr_4) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- DataFieldExpr -----------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attribute:
+         gUniq                : UID
+   visit 2:
+      inherited attributes:
+         kiGam                : KiGam
+         lexLev               : Int
+      chained attribute:
+         predSameScopeCounter : Int
+   visit 3:
+      inherited attributes:
+         opts                 : EHCOpts
+         polGam               : PolGam
+         predScope            : PredScope
+         tyGam                : TyGam
+         tyKiGam              : TyKiGam
+         tyKiGlobFreeTvarS    : TyVarIdS
+      chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
+         kiVarMp              : VarMp
+         polVarMp             : VarMp
+   visit 4:
+      inherited attributes:
+         clGam                : ClGam
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         tyTyTySigFreeTvarS   : TyVarIdS
+      chained attribute:
+         gathDataGam          : DataGam
+   visit 5:
+      inherited attribute:
+         dataGam              : DataGam
+      synthesized attribute:
+         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
+   visit 6:
+      inherited attributes:
+         chrStore             : ScopedPredStore
+         clDfGam              : ClassDefaultGam
+         fiOpts               : FIOpts
+         tvKiVarMp            : VarMp
+         tyTyGlobFreeTvarS    : TyVarIdS
+         valGam               : ValGam
+         valTyGlobFreeTvarS   : TyVarIdS
+      chained attribute:
+         updExprTyVarMp       : VarMp
+      synthesized attributes:
+         fldL                 : [HsName]
+         mbConNm              : Maybe HsName
+         updExprTy            : Ty
+   visit 7:
+      inherited attributes:
+         fldFIOpts            : FIOpts
+         knTy                 : Ty
+      chained attribute:
+         tyVarMp              : VarMp
+      synthesized attributes:
+         gathCnstrMp          : CHRPredOccCnstrMp
+         gathRangeMp          : RangeMp
+         noLetQuantTyVarIdS   : TyVarIdS
+         ty                   : Ty
+   visit 8:
+      inherited attributes:
+         chrEvidBindMp        : EvidKeyToCBindMap
+         chrScopeBindMp       : PredScopeToCBindMap
+         dgi                  : DataGamInfo
+         finTyVarMp           : VarMp
+         finValGam            : ValGam
+         moduleNm             : HsName
+         rangeMp              : RangeMp
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attribute:
+         cSubst               : CSubst
+      synthesized attributes:
+         allErrSq             : ErrSq
+         dfeCBindL            : CBindL
+         dfeCExpr             : CExpr
+         errSq                : ErrSq
+         fuCExprL             : FieldUpdateL (DataTagInfo -> Int -> CExpr)
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         gathTvKiVarMp        : VarMp
+         mbDti                : Maybe DataTagInfo
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         trpp                 : TrPP
+   alternatives:
+      alternative Upd:
+         child hsrange        : {Range}
+         child dataFieldExpr  : DataFieldExpr 
+         child nm             : {HsName}
+         child expr           : Expr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup14      : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup14      : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup14      : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup14      : _
+            intra range       : {Range}
+         visit 5:
+            intra _tup14      : _
+            intra range       : {Range}
+         visit 6:
+            intra _tup14      : _
+            intra range       : {Range}
+         visit 7:
+            local lUniq       : {UID}
+            local fe          : {FIEnv}
+            local _tup13      : _
+            local fo_         : {FIOut}
+            local knDataTy    : {Ty}
+            local ty          : {Ty}
+            intra _tup14      : _
+            intra range       : {Range}
+         visit 8:
+            local finalTyExpr : _
+            local finalTyExprExpanded : _
+            local fldExprNm   : _
+            local sysfty      : _
+            local acorety     : _
+            local nmErrs      : {ErrL}
+            local pp          : _
+            local gTy         : {Ty}
+            local gathMentrelFilterMp : _
+            intra fe          : {FIEnv}
+            intra lUniq       : {UID}
+            intra _tup13      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+      alternative Con:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup16      : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup16      : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup16      : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup16      : _
+            intra range       : {Range}
+         visit 5:
+            intra _tup16      : _
+            intra range       : {Range}
+         visit 6:
+            intra _tup16      : _
+            intra range       : {Range}
+         visit 7:
+            local ty          : {Ty}
+            local lUniq2      : {UID}
+            local lUniq       : {UID}
+            local _tup15      : _
+            local gTy         : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup16      : _
+            intra range       : {Range}
+         visit 8:
+            local dti         : _
+            local nmErrs      : {ErrL}
+            local pp          : _
+            local gathMentrelFilterMp : _
+            intra _tup15      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+            intra gTy         : {Ty}
+      alternative Expr:
+         child hsrange        : {Range}
+         child expr           : Expr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup17      : _
+         visit 2:
+            intra _tup17      : _
+         visit 3:
+            intra _tup17      : _
+         visit 4:
+            intra _tup17      : _
+         visit 5:
+            intra _tup17      : _
+         visit 6:
+            local lUniq       : {UID}
+            intra _tup17      : _
+         visit 7:
+            local ty          : {Ty}
+         visit 8:
+            local dfeCBindL   : _
+            local dfeCExpr    : _
+            local fuCExprL    : _
+            local pp          : _
+-}
+sem_DataFieldExpr_Upd :: Range ->
+                         T_DataFieldExpr ->
+                         HsName ->
+                         T_Expr ->
+                         T_DataFieldExpr
+
+sem_DataFieldExpr_Upd hsrange_ dataFieldExpr_ nm_ expr_ | hsrange_ `seq` (dataFieldExpr_ `seq` (nm_ `seq` (expr_ `seq` (True)))) =
+    (case (expr_) of
+     { ( _exprIrange,expr_1) | True ->
+         (case (dataFieldExpr_) of
+          { ( _dataFieldExprIrange,dataFieldExpr_1) | True ->
+              (case (rangeUnions [hsrange_, _dataFieldExprIrange
+                                                          , _exprIrange  ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_DataFieldExpr_Upd_1 :: T_DataFieldExpr_1
+                            sem_DataFieldExpr_Upd_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                       { __tup14 | __tup14 `seq` (True) ->
+                                       (case (__tup14) of
+                                        { (_dataFieldExprOgUniq,_) | _dataFieldExprOgUniq `seq` (True) ->
+                                        (case (dataFieldExpr_1 _dataFieldExprOgUniq) of
+                                         { ( _dataFieldExprIgUniq,dataFieldExpr_2) | True ->
+                                             (case (_dataFieldExprIgUniq) of
+                                              { _exprOgUniq | _exprOgUniq `seq` (True) ->
+                                              (case (expr_1 _exprOgUniq) of
+                                               { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
+                                                   (case (_exprIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_DataFieldExpr_Upd_2 :: T_DataFieldExpr_2
+                                                                sem_DataFieldExpr_Upd_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _dataFieldExprOpredSameScopeCounter | _dataFieldExprOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _dataFieldExprOlexLev | _dataFieldExprOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _dataFieldExprOkiGam | _dataFieldExprOkiGam `seq` (True) ->
+                                                                               (case (dataFieldExpr_2 _dataFieldExprOkiGam _dataFieldExprOlexLev _dataFieldExprOpredSameScopeCounter) of
+                                                                                { ( _dataFieldExprIpredSameScopeCounter,dataFieldExpr_3) | True ->
+                                                                                    (case (_dataFieldExprIpredSameScopeCounter) of
+                                                                                     { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case (_lhsIlexLev) of
+                                                                                      { _exprOlexLev | _exprOlexLev `seq` (True) ->
+                                                                                      (case (_lhsIkiGam) of
+                                                                                       { _exprOkiGam | _exprOkiGam `seq` (True) ->
+                                                                                       (case (True) of
+                                                                                        { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
+                                                                                        (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
+                                                                                         { ( _exprIpredSameScopeCounter,expr_3) | True ->
+                                                                                             (case (_exprIpredSameScopeCounter) of
+                                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                              (case ((let sem_DataFieldExpr_Upd_3 :: T_DataFieldExpr_3
+                                                                                                          sem_DataFieldExpr_Upd_3 =
+                                                                                                              (\ _lhsIgenerDataInfoMp
+                                                                                                                 _lhsIkiVarMp
+                                                                                                                 _lhsIopts
+                                                                                                                 _lhsIpolGam
+                                                                                                                 _lhsIpolVarMp
+                                                                                                                 _lhsIpredScope
+                                                                                                                 _lhsItyGam
+                                                                                                                 _lhsItyKiGam
+                                                                                                                 _lhsItyKiGlobFreeTvarS ->
+                                                                                                                   _lhsIgenerDataInfoMp `seq`
+                                                                                                                   (_lhsIkiVarMp `seq`
+                                                                                                                    (_lhsIopts `seq`
+                                                                                                                     (_lhsIpolGam `seq`
+                                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                                       (_lhsIpredScope `seq`
+                                                                                                                        (_lhsItyGam `seq`
+                                                                                                                         (_lhsItyKiGam `seq`
+                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                           ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyGam) of
+                                                                                                                               { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                 { _dataFieldExprOtyKiGlobFreeTvarS | _dataFieldExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                 (case (_lhsItyKiGam) of
+                                                                                                                                  { _dataFieldExprOtyKiGam | _dataFieldExprOtyKiGam `seq` (True) ->
+                                                                                                                                  (case (_lhsItyGam) of
+                                                                                                                                   { _dataFieldExprOtyGam | _dataFieldExprOtyGam `seq` (True) ->
+                                                                                                                                   (case (_lhsIpredScope) of
+                                                                                                                                    { _dataFieldExprOpredScope | _dataFieldExprOpredScope `seq` (True) ->
+                                                                                                                                    (case (_lhsIpolVarMp) of
+                                                                                                                                     { _dataFieldExprOpolVarMp | _dataFieldExprOpolVarMp `seq` (True) ->
+                                                                                                                                     (case (_lhsIpolGam) of
+                                                                                                                                      { _dataFieldExprOpolGam | _dataFieldExprOpolGam `seq` (True) ->
+                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                       { _dataFieldExprOopts | _dataFieldExprOopts `seq` (True) ->
+                                                                                                                                       (case (_lhsIkiVarMp) of
+                                                                                                                                        { _dataFieldExprOkiVarMp | _dataFieldExprOkiVarMp `seq` (True) ->
+                                                                                                                                        (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                         { _dataFieldExprOgenerDataInfoMp | _dataFieldExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                         (case (dataFieldExpr_3 _dataFieldExprOgenerDataInfoMp _dataFieldExprOkiVarMp _dataFieldExprOopts _dataFieldExprOpolGam _dataFieldExprOpolVarMp _dataFieldExprOpredScope _dataFieldExprOtyGam _dataFieldExprOtyKiGam _dataFieldExprOtyKiGlobFreeTvarS) of
+                                                                                                                                          { ( _dataFieldExprIgenerDataInfoMp,_dataFieldExprIkiVarMp,_dataFieldExprIpolVarMp,dataFieldExpr_4) | True ->
+                                                                                                                                              (case (_dataFieldExprIpolVarMp) of
+                                                                                                                                               { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                                                               (case (_lhsIpolGam) of
+                                                                                                                                                { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                                                                (case (_lhsIopts) of
+                                                                                                                                                 { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                                                                 (case (_dataFieldExprIkiVarMp) of
+                                                                                                                                                  { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                                                  (case (_dataFieldExprIgenerDataInfoMp) of
+                                                                                                                                                   { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                   (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                                                    { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                                                        (case (_exprIgenerDataInfoMp) of
+                                                                                                                                                         { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                         (case (_exprIkiVarMp) of
+                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_exprIpolVarMp) of
+                                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                           (case ((let sem_DataFieldExpr_Upd_4 :: T_DataFieldExpr_4
+                                                                                                                                                                       sem_DataFieldExpr_Upd_4 =
+                                                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                                                              _lhsIgathDataGam
+                                                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                  (_lhsIgathDataGam `seq`
+                                                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                      { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                       { _dataFieldExprOtyTyTySigFreeTvarS | _dataFieldExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIgathDataGam) of
+                                                                                                                                                                                        { _dataFieldExprOgathDataGam | _dataFieldExprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                         { _dataFieldExprOfinTyKiGam | _dataFieldExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                          { _dataFieldExprOfinKiVarMp | _dataFieldExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIclGam) of
+                                                                                                                                                                                           { _dataFieldExprOclGam | _dataFieldExprOclGam `seq` (True) ->
+                                                                                                                                                                                           (case (dataFieldExpr_4 _dataFieldExprOclGam _dataFieldExprOfinKiVarMp _dataFieldExprOfinTyKiGam _dataFieldExprOgathDataGam _dataFieldExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                            { ( _dataFieldExprIgathDataGam,dataFieldExpr_5) | True ->
+                                                                                                                                                                                                (case (_dataFieldExprIgathDataGam) of
+                                                                                                                                                                                                 { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                 (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                  { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                  (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                   { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                   (case (_lhsIclGam) of
+                                                                                                                                                                                                    { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                                                                    (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                     { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                                                                         (case (_exprIgathDataGam) of
+                                                                                                                                                                                                          { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                          (case ((let sem_DataFieldExpr_Upd_5 :: T_DataFieldExpr_5
+                                                                                                                                                                                                                      sem_DataFieldExpr_Upd_5 =
+                                                                                                                                                                                                                          (\ _lhsIdataGam ->
+                                                                                                                                                                                                                               _lhsIdataGam `seq`
+                                                                                                                                                                                                                               ((case (_lhsIdataGam) of
+                                                                                                                                                                                                                                 { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIdataGam) of
+                                                                                                                                                                                                                                  { _dataFieldExprOdataGam | _dataFieldExprOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                  (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                                                                                   { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                                                                                       (case (dataFieldExpr_5 _dataFieldExprOdataGam) of
+                                                                                                                                                                                                                                        { ( _dataFieldExprIchrInstDeclSq,dataFieldExpr_6) | True ->
+                                                                                                                                                                                                                                            (case (_dataFieldExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
+                                                                                                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                             (case ((let sem_DataFieldExpr_Upd_6 :: T_DataFieldExpr_6
+                                                                                                                                                                                                                                                         sem_DataFieldExpr_Upd_6 =
+                                                                                                                                                                                                                                                             (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                _lhsIclDfGam
+                                                                                                                                                                                                                                                                _lhsIfiOpts
+                                                                                                                                                                                                                                                                _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                _lhsIupdExprTyVarMp
+                                                                                                                                                                                                                                                                _lhsIvalGam
+                                                                                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                  _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                  (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                   (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                      (_lhsIupdExprTyVarMp `seq`
+                                                                                                                                                                                                                                                                       (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                         ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                           { _dataFieldExprOvalTyGlobFreeTvarS | _dataFieldExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                            { _dataFieldExprOvalGam | _dataFieldExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIupdExprTyVarMp) of
+                                                                                                                                                                                                                                                                             { _dataFieldExprOupdExprTyVarMp | _dataFieldExprOupdExprTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                              { _dataFieldExprOtyTyGlobFreeTvarS | _dataFieldExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                               { _dataFieldExprOtvKiVarMp | _dataFieldExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                { _dataFieldExprOfiOpts | _dataFieldExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                 { _dataFieldExprOclDfGam | _dataFieldExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                  { _dataFieldExprOchrStore | _dataFieldExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (dataFieldExpr_6 _dataFieldExprOchrStore _dataFieldExprOclDfGam _dataFieldExprOfiOpts _dataFieldExprOtvKiVarMp _dataFieldExprOtyTyGlobFreeTvarS _dataFieldExprOupdExprTyVarMp _dataFieldExprOvalGam _dataFieldExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { ( _dataFieldExprIfldL,_dataFieldExprImbConNm,_dataFieldExprIupdExprTy,_dataFieldExprIupdExprTyVarMp,dataFieldExpr_7) | True ->
+                                                                                                                                                                                                                                                                                       (case (nm_ : _dataFieldExprIfldL) of
+                                                                                                                                                                                                                                                                                        { _lhsOfldL | _lhsOfldL `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_dataFieldExprImbConNm) of
+                                                                                                                                                                                                                                                                                         { _lhsOmbConNm | _lhsOmbConNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_dataFieldExprIupdExprTy) of
+                                                                                                                                                                                                                                                                                          { _lhsOupdExprTy | _lhsOupdExprTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_dataFieldExprIupdExprTyVarMp) of
+                                                                                                                                                                                                                                                                                           { _lhsOupdExprTyVarMp | _lhsOupdExprTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case ((let sem_DataFieldExpr_Upd_7 :: T_DataFieldExpr_7
+                                                                                                                                                                                                                                                                                                       sem_DataFieldExpr_Upd_7 =
+                                                                                                                                                                                                                                                                                                           (\ _lhsIfldFIOpts
+                                                                                                                                                                                                                                                                                                              _lhsIknTy
+                                                                                                                                                                                                                                                                                                              _lhsItyVarMp ->
+                                                                                                                                                                                                                                                                                                                _lhsIfldFIOpts `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                  ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                    { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                                                     { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsIfldFIOpts) of
+                                                                                                                                                                                                                                                                                                                      { _dataFieldExprOfldFIOpts | _dataFieldExprOfldFIOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (__tup14) of
+                                                                                                                                                                                                                                                                                                                       { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                                                                  { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                                                                  , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                                                                  , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                                                                  , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                                                                  , feRange = _range
+                                                                                                                                                                                                                                                                                                                                  }) of
+                                                                                                                                                                                                                                                                                                                        { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (dfCheck _lUniq _lhsIfiOpts _fe nm_ _lhsIvalGam _lhsItyVarMp _lhsIknTy) of
+                                                                                                                                                                                                                                                                                                                         { __tup13 | __tup13 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (__tup13) of
+                                                                                                                                                                                                                                                                                                                          { (_,_,_,_fo_,_) | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                                           { _dataFieldExprOtyVarMp | _dataFieldExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (__tup13) of
+                                                                                                                                                                                                                                                                                                                            { (_,_knDataTy,_,_,_) | _knDataTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_knDataTy) of
+                                                                                                                                                                                                                                                                                                                             { _dataFieldExprOknTy | _dataFieldExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (dataFieldExpr_7 _dataFieldExprOfldFIOpts _dataFieldExprOknTy _dataFieldExprOtyVarMp) of
+                                                                                                                                                                                                                                                                                                                              { ( _dataFieldExprIgathCnstrMp,_dataFieldExprIgathRangeMp,_dataFieldExprInoLetQuantTyVarIdS,_dataFieldExprIty,_dataFieldExprItyVarMp,dataFieldExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                   { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                    { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                     { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                                      { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                                       { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (__tup13) of
+                                                                                                                                                                                                                                                                                                                                        { (_,_,_exprOknTy,_,_) | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_lhsIfldFIOpts) of
+                                                                                                                                                                                                                                                                                                                                         { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                          { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                                                                                                                              (case (_dataFieldExprIgathCnstrMp `cnstrMpUnion` _exprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_dataFieldExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                                                { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_dataFieldExprInoLetQuantTyVarIdS `Set.union` _exprInoLetQuantTyVarIdS) of
+                                                                                                                                                                                                                                                                                                                                                 { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_knDataTy) of
+                                                                                                                                                                                                                                                                                                                                                  { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_ty) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case ((let sem_DataFieldExpr_Upd_8 :: T_DataFieldExpr_8
+                                                                                                                                                                                                                                                                                                                                                                sem_DataFieldExpr_Upd_8 =
+                                                                                                                                                                                                                                                                                                                                                                    (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIdgi
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                                       _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                                       _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                                       _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                                                         _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                                         (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                          (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                           (_lhsIdgi `seq`
+                                                                                                                                                                                                                                                                                                                                                                            (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                             (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                              (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                               (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                                                 (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                                                  ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                     { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                      { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                       { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                        { _dataFieldExprOsysfEnv | _dataFieldExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                         { _dataFieldExprOrangeMp | _dataFieldExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                          { _dataFieldExprOfinValGam | _dataFieldExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                           { _dataFieldExprOfinTyVarMp | _dataFieldExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                            { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                             { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                { _dataFieldExprOchrScopeBindMp | _dataFieldExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _dataFieldExprOchrEvidBindMp | _dataFieldExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _dataFieldExprOcSubst | _dataFieldExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _dataFieldExprOtr | _dataFieldExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _dataFieldExprOmoduleNm | _dataFieldExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIdgi) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _dataFieldExprOdgi | _dataFieldExprOdgi `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (dataFieldExpr_8 _dataFieldExprOcSubst _dataFieldExprOchrEvidBindMp _dataFieldExprOchrScopeBindMp _dataFieldExprOdgi _dataFieldExprOfinTyVarMp _dataFieldExprOfinValGam _dataFieldExprOmoduleNm _dataFieldExprOrangeMp _dataFieldExprOsysfEnv _dataFieldExprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { ( _dataFieldExprIallErrSq,_dataFieldExprIcSubst,_dataFieldExprIdfeCBindL,_dataFieldExprIdfeCExpr,_dataFieldExprIerrSq,_dataFieldExprIfuCExprL,_dataFieldExprIgathMentrelFilterMp,_dataFieldExprIgathTvKiVarMp,_dataFieldExprImbDti,_dataFieldExprIpp,_dataFieldExprIppL,_dataFieldExprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (_dataFieldExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                                             { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_dataFieldExprIallErrSq `Seq.union` _exprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_exprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp `varUpd` _exprIty) of
+                                                                                                                                                                                                                                                                                                                                                                                                                    { _finalTyExpr | _finalTyExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                    (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTyExpr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                     { _finalTyExprExpanded | _finalTyExprExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                     (case (mkHNm _lUniq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                      { _fldExprNm | _fldExprNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                      (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                                                                                                                                                       { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                       (case (mkCTy _lhsIopts _finalTyExprExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                                                                                                                                                        { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                        (case (acoreBind1Ty _fldExprNm _acorety _exprIcexpr : _dataFieldExprIdfeCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOdfeCBindL | _lhsOdfeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_dataFieldExprIdfeCExpr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOdfeCExpr | _lhsOdfeCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                          (case (__tup13) of
+                                                                                                                                                                                                                                                                                                                                                                                                                           { (_,_,_,_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                           (case (ppFld "=" Nothing nm_ (pp nm_) _exprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                            (case (Seq.unions [ _dataFieldExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                                                              , rngLift _range mkNestErr' _pp [_exprIerrSq, Seq.fromList _nmErrs, foErrSq _fo_]
+                                                                                                                                                                                                                                                                                                                                                                                                                                              ]) of
+                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                             (case (let mke dti o = CExpr_TupIns _dataFieldExprIdfeCExpr (dtiCTag dti) nm_ (acoreInt _lhsIopts o) (acoreVar _fldExprNm)
+                                                                                                                                                                                                                                                                                                                                                                                                                                    in  (nm_,(mke,Nothing)) : _dataFieldExprIfuCExprL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                              (case (__tup13) of
+                                                                                                                                                                                                                                                                                                                                                                                                                               { (_gTy,_,_,_,_) | _gTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                               (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val (hsnFldUpd nm_)
+                                                                                                                                                                                                                                                                                                                                                                                                                                      `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                                                                                                                                                                                                                      tyUsedNames _lhsImoduleNm _gTy) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_dataFieldExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldExprImbDti) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOmbDti | _lhsOmbDti `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_dataFieldExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_pp : _dataFieldExprIppL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_dataFieldExprItrpp >< _exprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOcSubst,_lhsOdfeCBindL,_lhsOdfeCExpr,_lhsOerrSq,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOmbDti,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                                                                                                                                                                                                                                                                            in  sem_DataFieldExpr_Upd_8)) of
+                                                                                                                                                                                                                                                                                                                                                     { ( sem_DataFieldExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                                                     ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOty,_lhsOtyVarMp,sem_DataFieldExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))
+                                                                                                                                                                                                                                                                                                   in  sem_DataFieldExpr_Upd_7)) of
+                                                                                                                                                                                                                                                                                            { ( sem_DataFieldExpr_7) | True ->
+                                                                                                                                                                                                                                                                                            ( _lhsOfldL,_lhsOmbConNm,_lhsOupdExprTy,_lhsOupdExprTyVarMp,sem_DataFieldExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+                                                                                                                                                                                                                                                     in  sem_DataFieldExpr_Upd_6)) of
+                                                                                                                                                                                                                                              { ( sem_DataFieldExpr_6) | True ->
+                                                                                                                                                                                                                                              ( _lhsOchrInstDeclSq,sem_DataFieldExpr_6) }) }) }) }) }) })))
+                                                                                                                                                                                                                  in  sem_DataFieldExpr_Upd_5)) of
+                                                                                                                                                                                                           { ( sem_DataFieldExpr_5) | True ->
+                                                                                                                                                                                                           ( _lhsOgathDataGam,sem_DataFieldExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                   in  sem_DataFieldExpr_Upd_4)) of
+                                                                                                                                                            { ( sem_DataFieldExpr_4) | True ->
+                                                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_DataFieldExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                      in  sem_DataFieldExpr_Upd_3)) of
+                                                                                               { ( sem_DataFieldExpr_3) | True ->
+                                                                                               ( _lhsOpredSameScopeCounter,sem_DataFieldExpr_3) }) }) }) }) }) }) }) }) }) }) })))))
+                                                            in  sem_DataFieldExpr_Upd_2)) of
+                                                     { ( sem_DataFieldExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_DataFieldExpr_2) }) }) }) }) }) }) })))
+                        in  sem_DataFieldExpr_Upd_1)) of
+                 { ( sem_DataFieldExpr_1) | True ->
+                 ( _lhsOrange,sem_DataFieldExpr_1) }) }) }) }) })
+
+sem_DataFieldExpr_Con :: Range ->
+                         HsName ->
+                         T_DataFieldExpr
+
+sem_DataFieldExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_DataFieldExpr_Con_1 :: T_DataFieldExpr_1
+                  sem_DataFieldExpr_Con_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
+                             { __tup16 | __tup16 `seq` (True) ->
+                             (case (__tup16) of
+                              { (_lhsOgUniq,_,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_DataFieldExpr_Con_2 :: T_DataFieldExpr_2
+                                          sem_DataFieldExpr_Con_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_DataFieldExpr_Con_3 :: T_DataFieldExpr_3
+                                                                   sem_DataFieldExpr_Con_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case ((let sem_DataFieldExpr_Con_4 :: T_DataFieldExpr_4
+                                                                                                    sem_DataFieldExpr_Con_4 =
+                                                                                                        (\ _lhsIclGam
+                                                                                                           _lhsIfinKiVarMp
+                                                                                                           _lhsIfinTyKiGam
+                                                                                                           _lhsIgathDataGam
+                                                                                                           _lhsItyTyTySigFreeTvarS ->
+                                                                                                             _lhsIclGam `seq`
+                                                                                                             (_lhsIfinKiVarMp `seq`
+                                                                                                              (_lhsIfinTyKiGam `seq`
+                                                                                                               (_lhsIgathDataGam `seq`
+                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                 ((case (_lhsIgathDataGam) of
+                                                                                                                   { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                   (case ((let sem_DataFieldExpr_Con_5 :: T_DataFieldExpr_5
+                                                                                                                               sem_DataFieldExpr_Con_5 =
+                                                                                                                                   (\ _lhsIdataGam ->
+                                                                                                                                        _lhsIdataGam `seq`
+                                                                                                                                        ((case (Seq.empty) of
+                                                                                                                                          { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                          (case ((let sem_DataFieldExpr_Con_6 :: T_DataFieldExpr_6
+                                                                                                                                                      sem_DataFieldExpr_Con_6 =
+                                                                                                                                                          (\ _lhsIchrStore
+                                                                                                                                                             _lhsIclDfGam
+                                                                                                                                                             _lhsIfiOpts
+                                                                                                                                                             _lhsItvKiVarMp
+                                                                                                                                                             _lhsItyTyGlobFreeTvarS
+                                                                                                                                                             _lhsIupdExprTyVarMp
+                                                                                                                                                             _lhsIvalGam
+                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                               _lhsIchrStore `seq`
+                                                                                                                                                               (_lhsIclDfGam `seq`
+                                                                                                                                                                (_lhsIfiOpts `seq`
+                                                                                                                                                                 (_lhsItvKiVarMp `seq`
+                                                                                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                   (_lhsIupdExprTyVarMp `seq`
+                                                                                                                                                                    (_lhsIvalGam `seq`
+                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                      ((case ([]) of
+                                                                                                                                                                        { _lhsOfldL | _lhsOfldL `seq` (True) ->
+                                                                                                                                                                        (case (Just nm_) of
+                                                                                                                                                                         { _lhsOmbConNm | _lhsOmbConNm `seq` (True) ->
+                                                                                                                                                                         (case (Ty_Any) of
+                                                                                                                                                                          { _lhsOupdExprTy | _lhsOupdExprTy `seq` (True) ->
+                                                                                                                                                                          (case (_lhsIupdExprTyVarMp) of
+                                                                                                                                                                           { _lhsOupdExprTyVarMp | _lhsOupdExprTyVarMp `seq` (True) ->
+                                                                                                                                                                           (case ((let sem_DataFieldExpr_Con_7 :: T_DataFieldExpr_7
+                                                                                                                                                                                       sem_DataFieldExpr_Con_7 =
+                                                                                                                                                                                           (\ _lhsIfldFIOpts
+                                                                                                                                                                                              _lhsIknTy
+                                                                                                                                                                                              _lhsItyVarMp ->
+                                                                                                                                                                                                _lhsIfldFIOpts `seq`
+                                                                                                                                                                                                (_lhsIknTy `seq`
+                                                                                                                                                                                                 (_lhsItyVarMp `seq`
+                                                                                                                                                                                                  ((case (Map.empty) of
+                                                                                                                                                                                                    { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                    (case (Map.empty) of
+                                                                                                                                                                                                     { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                     (case (Set.empty) of
+                                                                                                                                                                                                      { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                      (case (_lhsIknTy) of
+                                                                                                                                                                                                       { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                       (case (_ty) of
+                                                                                                                                                                                                        { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                        (case (__tup16) of
+                                                                                                                                                                                                         { (_,_,_lUniq2) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                         (case (__tup16) of
+                                                                                                                                                                                                          { (_,_lUniq,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                          (case (valGamLookupTy (hsnUn nm_) _lhsIvalGam) of
+                                                                                                                                                                                                           { __tup15 | __tup15 `seq` (True) ->
+                                                                                                                                                                                                           (case (__tup15) of
+                                                                                                                                                                                                            { (_gTy,_) | _gTy `seq` (True) ->
+                                                                                                                                                                                                            (case (defaultFIEnv
+                                                                                                                                                                                                                       { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                       , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                       , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                       , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                       , feRange = _range
+                                                                                                                                                                                                                       }) of
+                                                                                                                                                                                                             { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                             (case (let [u] = mkNewTyVarL 1 _lUniq
+                                                                                                                                                                                                                    in  fitsIn _lhsIfiOpts _fe _lUniq2 _lhsItyVarMp (_gTy) ([_lhsIknTy] `appArr` u)) of
+                                                                                                                                                                                                              { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                              (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
+                                                                                                                                                                                                               { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                               (case ((let sem_DataFieldExpr_Con_8 :: T_DataFieldExpr_8
+                                                                                                                                                                                                                           sem_DataFieldExpr_Con_8 =
+                                                                                                                                                                                                                               (\ _lhsIcSubst
+                                                                                                                                                                                                                                  _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                  _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                  _lhsIdgi
+                                                                                                                                                                                                                                  _lhsIfinTyVarMp
+                                                                                                                                                                                                                                  _lhsIfinValGam
+                                                                                                                                                                                                                                  _lhsImoduleNm
+                                                                                                                                                                                                                                  _lhsIrangeMp
+                                                                                                                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                                                                                                                  _lhsItr ->
+                                                                                                                                                                                                                                    _lhsIcSubst `seq`
+                                                                                                                                                                                                                                    (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                     (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                      (_lhsIdgi `seq`
+                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                                                                                                             ((case (Seq.empty) of
+                                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                               (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                (case ([]) of
+                                                                                                                                                                                                                                                 { _lhsOdfeCBindL | _lhsOdfeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                 (case (dgiDtiOfCon nm_ _lhsIdgi) of
+                                                                                                                                                                                                                                                  { _dti | _dti `seq` (True) ->
+                                                                                                                                                                                                                                                  (case (CExpr_Tup (dtiCTag _dti)) of
+                                                                                                                                                                                                                                                   { _lhsOdfeCExpr | _lhsOdfeCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (__tup15) of
+                                                                                                                                                                                                                                                    { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (pp nm_) of
+                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs, foErrSq _fo_]) of
+                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                                       { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val (hsnUn nm_)
+                                                                                                                                                                                                                                                              `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                                              tyUsedNames _lhsImoduleNm _gTy) of
+                                                                                                                                                                                                                                                        { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (emptyVarMp) of
+                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (Just _dti) of
+                                                                                                                                                                                                                                                           { _lhsOmbDti | _lhsOmbDti `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_pp) of
+                                                                                                                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                             { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (trppEmpty) of
+                                                                                                                                                                                                                                                              { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOcSubst,_lhsOdfeCBindL,_lhsOdfeCExpr,_lhsOerrSq,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOmbDti,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                                                                                                                                       in  sem_DataFieldExpr_Con_8)) of
+                                                                                                                                                                                                                { ( sem_DataFieldExpr_8) | True ->
+                                                                                                                                                                                                                ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOty,_lhsOtyVarMp,sem_DataFieldExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) })))))
+                                                                                                                                                                                   in  sem_DataFieldExpr_Con_7)) of
+                                                                                                                                                                            { ( sem_DataFieldExpr_7) | True ->
+                                                                                                                                                                            ( _lhsOfldL,_lhsOmbConNm,_lhsOupdExprTy,_lhsOupdExprTyVarMp,sem_DataFieldExpr_7) }) }) }) }) }))))))))))
+                                                                                                                                                  in  sem_DataFieldExpr_Con_6)) of
+                                                                                                                                           { ( sem_DataFieldExpr_6) | True ->
+                                                                                                                                           ( _lhsOchrInstDeclSq,sem_DataFieldExpr_6) }) })))
+                                                                                                                           in  sem_DataFieldExpr_Con_5)) of
+                                                                                                                    { ( sem_DataFieldExpr_5) | True ->
+                                                                                                                    ( _lhsOgathDataGam,sem_DataFieldExpr_5) }) })))))))
+                                                                                                in  sem_DataFieldExpr_Con_4)) of
+                                                                                         { ( sem_DataFieldExpr_4) | True ->
+                                                                                         ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_DataFieldExpr_4) }) }) }) })))))))))))
+                                                               in  sem_DataFieldExpr_Con_3)) of
+                                                        { ( sem_DataFieldExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_DataFieldExpr_3) }) })))))
+                                      in  sem_DataFieldExpr_Con_2)) of
+                               { ( sem_DataFieldExpr_2) | True ->
+                               ( _lhsOgUniq,sem_DataFieldExpr_2) }) }) })))
+              in  sem_DataFieldExpr_Con_1)) of
+       { ( sem_DataFieldExpr_1) | True ->
+       ( _lhsOrange,sem_DataFieldExpr_1) }) }) })
+
+sem_DataFieldExpr_Expr :: Range ->
+                          T_Expr ->
+                          T_DataFieldExpr
+
+sem_DataFieldExpr_Expr hsrange_ expr_ | hsrange_ `seq` (expr_ `seq` (True)) =
+    (case (expr_) of
+     { ( _exprIrange,expr_1) | True ->
+         (case (rangeUnions [hsrange_, _exprIrange   , _exprIrange  ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_DataFieldExpr_Expr_1 :: T_DataFieldExpr_1
+                       sem_DataFieldExpr_Expr_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup17 | __tup17 `seq` (True) ->
+                                  (case (__tup17) of
+                                   { (_exprOgUniq,_) | _exprOgUniq `seq` (True) ->
+                                   (case (expr_1 _exprOgUniq) of
+                                    { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
+                                        (case (_exprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_DataFieldExpr_Expr_2 :: T_DataFieldExpr_2
+                                                     sem_DataFieldExpr_Expr_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _exprOlexLev | _exprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _exprOkiGam | _exprOkiGam `seq` (True) ->
+                                                                    (case (True) of
+                                                                     { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
+                                                                     (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
+                                                                      { ( _exprIpredSameScopeCounter,expr_3) | True ->
+                                                                          (case (_exprIpredSameScopeCounter) of
+                                                                           { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                           (case ((let sem_DataFieldExpr_Expr_3 :: T_DataFieldExpr_3
+                                                                                       sem_DataFieldExpr_Expr_3 =
+                                                                                           (\ _lhsIgenerDataInfoMp
+                                                                                              _lhsIkiVarMp
+                                                                                              _lhsIopts
+                                                                                              _lhsIpolGam
+                                                                                              _lhsIpolVarMp
+                                                                                              _lhsIpredScope
+                                                                                              _lhsItyGam
+                                                                                              _lhsItyKiGam
+                                                                                              _lhsItyKiGlobFreeTvarS ->
+                                                                                                _lhsIgenerDataInfoMp `seq`
+                                                                                                (_lhsIkiVarMp `seq`
+                                                                                                 (_lhsIopts `seq`
+                                                                                                  (_lhsIpolGam `seq`
+                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                    (_lhsIpredScope `seq`
+                                                                                                     (_lhsItyGam `seq`
+                                                                                                      (_lhsItyKiGam `seq`
+                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                        ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                          { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                          (case (_lhsItyKiGam) of
+                                                                                                           { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                           (case (_lhsItyGam) of
+                                                                                                            { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                            (case (_lhsIpredScope) of
+                                                                                                             { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                             (case (_lhsIpolVarMp) of
+                                                                                                              { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                              (case (_lhsIpolGam) of
+                                                                                                               { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                               (case (_lhsIopts) of
+                                                                                                                { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                                (case (_lhsIkiVarMp) of
+                                                                                                                 { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                 (case (_lhsIgenerDataInfoMp) of
+                                                                                                                  { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                  (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                   { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                       (case (_exprIgenerDataInfoMp) of
+                                                                                                                        { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                        (case (_exprIkiVarMp) of
+                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                         (case (_exprIpolVarMp) of
+                                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                          (case ((let sem_DataFieldExpr_Expr_4 :: T_DataFieldExpr_4
+                                                                                                                                      sem_DataFieldExpr_Expr_4 =
+                                                                                                                                          (\ _lhsIclGam
+                                                                                                                                             _lhsIfinKiVarMp
+                                                                                                                                             _lhsIfinTyKiGam
+                                                                                                                                             _lhsIgathDataGam
+                                                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                               _lhsIclGam `seq`
+                                                                                                                                               (_lhsIfinKiVarMp `seq`
+                                                                                                                                                (_lhsIfinTyKiGam `seq`
+                                                                                                                                                 (_lhsIgathDataGam `seq`
+                                                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                   ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                     { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                     (case (_lhsIgathDataGam) of
+                                                                                                                                                      { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIclGam) of
+                                                                                                                                                         { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                         (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                          { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                              (case (_exprIgathDataGam) of
+                                                                                                                                                               { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                               (case ((let sem_DataFieldExpr_Expr_5 :: T_DataFieldExpr_5
+                                                                                                                                                                           sem_DataFieldExpr_Expr_5 =
+                                                                                                                                                                               (\ _lhsIdataGam ->
+                                                                                                                                                                                    _lhsIdataGam `seq`
+                                                                                                                                                                                    ((case (_lhsIdataGam) of
+                                                                                                                                                                                      { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                                                      (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                                       { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                                           (case (_exprIchrInstDeclSq) of
+                                                                                                                                                                                            { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                            (case ((let sem_DataFieldExpr_Expr_6 :: T_DataFieldExpr_6
+                                                                                                                                                                                                        sem_DataFieldExpr_Expr_6 =
+                                                                                                                                                                                                            (\ _lhsIchrStore
+                                                                                                                                                                                                               _lhsIclDfGam
+                                                                                                                                                                                                               _lhsIfiOpts
+                                                                                                                                                                                                               _lhsItvKiVarMp
+                                                                                                                                                                                                               _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                               _lhsIupdExprTyVarMp
+                                                                                                                                                                                                               _lhsIvalGam
+                                                                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                 _lhsIchrStore `seq`
+                                                                                                                                                                                                                 (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                  (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                   (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                     (_lhsIupdExprTyVarMp `seq`
+                                                                                                                                                                                                                      (_lhsIvalGam `seq`
+                                                                                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                        ((case ([]) of
+                                                                                                                                                                                                                          { _lhsOfldL | _lhsOfldL `seq` (True) ->
+                                                                                                                                                                                                                          (case (Nothing) of
+                                                                                                                                                                                                                           { _lhsOmbConNm | _lhsOmbConNm `seq` (True) ->
+                                                                                                                                                                                                                           (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                            { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                            (case (_lhsIvalGam) of
+                                                                                                                                                                                                                             { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                              { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                               { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                 { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                  { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                  (case (__tup17) of
+                                                                                                                                                                                                                                   { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                   (case (mkNewTyVar _lUniq) of
+                                                                                                                                                                                                                                    { _exprOknTy | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                    (case (_lhsIupdExprTyVarMp) of
+                                                                                                                                                                                                                                     { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                     (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                      { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                          (case (_exprIty) of
+                                                                                                                                                                                                                                           { _lhsOupdExprTy | _lhsOupdExprTy `seq` (True) ->
+                                                                                                                                                                                                                                           (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                            { _lhsOupdExprTyVarMp | _lhsOupdExprTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                            (case ((let sem_DataFieldExpr_Expr_7 :: T_DataFieldExpr_7
+                                                                                                                                                                                                                                                        sem_DataFieldExpr_Expr_7 =
+                                                                                                                                                                                                                                                            (\ _lhsIfldFIOpts
+                                                                                                                                                                                                                                                               _lhsIknTy
+                                                                                                                                                                                                                                                               _lhsItyVarMp ->
+                                                                                                                                                                                                                                                                 _lhsIfldFIOpts `seq`
+                                                                                                                                                                                                                                                                 (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                  (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                   ((case (_exprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                     { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_exprIgathRangeMp) of
+                                                                                                                                                                                                                                                                      { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_exprInoLetQuantTyVarIdS) of
+                                                                                                                                                                                                                                                                       { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIknTy) of
+                                                                                                                                                                                                                                                                        { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_ty) of
+                                                                                                                                                                                                                                                                         { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                          { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case ((let sem_DataFieldExpr_Expr_8 :: T_DataFieldExpr_8
+                                                                                                                                                                                                                                                                                      sem_DataFieldExpr_Expr_8 =
+                                                                                                                                                                                                                                                                                          (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                             _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                             _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                             _lhsIdgi
+                                                                                                                                                                                                                                                                                             _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                             _lhsIfinValGam
+                                                                                                                                                                                                                                                                                             _lhsImoduleNm
+                                                                                                                                                                                                                                                                                             _lhsIrangeMp
+                                                                                                                                                                                                                                                                                             _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                             _lhsItr ->
+                                                                                                                                                                                                                                                                                               _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                               (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                 (_lhsIdgi `seq`
+                                                                                                                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                   (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                    (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                     (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                       (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                        ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                          { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                           { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                            { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                             { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                              { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                               { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                 { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                  { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                                                   { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                                                    { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                        (case (_exprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_exprIcSubst) of
+                                                                                                                                                                                                                                                                                                                          { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case ([]) of
+                                                                                                                                                                                                                                                                                                                           { _dfeCBindL | _dfeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_dfeCBindL) of
+                                                                                                                                                                                                                                                                                                                            { _lhsOdfeCBindL | _lhsOdfeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_exprIcexpr) of
+                                                                                                                                                                                                                                                                                                                             { _dfeCExpr | _dfeCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_dfeCExpr) of
+                                                                                                                                                                                                                                                                                                                              { _lhsOdfeCExpr | _lhsOdfeCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_exprIerrSq) of
+                                                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                                                                                                                { _fuCExprL | _fuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_fuCExprL) of
+                                                                                                                                                                                                                                                                                                                                 { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_exprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case (_exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                   { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (Nothing) of
+                                                                                                                                                                                                                                                                                                                                    { _lhsOmbDti | _lhsOmbDti `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (_exprIpp) of
+                                                                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                                                                                                                       { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_exprItrpp) of
+                                                                                                                                                                                                                                                                                                                                        { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsOcSubst,_lhsOdfeCBindL,_lhsOdfeCExpr,_lhsOerrSq,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOmbDti,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                                                                                                                                                                                                  in  sem_DataFieldExpr_Expr_8)) of
+                                                                                                                                                                                                                                                                           { ( sem_DataFieldExpr_8) | True ->
+                                                                                                                                                                                                                                                                           ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOty,_lhsOtyVarMp,sem_DataFieldExpr_8) }) }) }) }) }) }) })))))
+                                                                                                                                                                                                                                                    in  sem_DataFieldExpr_Expr_7)) of
+                                                                                                                                                                                                                                             { ( sem_DataFieldExpr_7) | True ->
+                                                                                                                                                                                                                                             ( _lhsOfldL,_lhsOmbConNm,_lhsOupdExprTy,_lhsOupdExprTyVarMp,sem_DataFieldExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+                                                                                                                                                                                                    in  sem_DataFieldExpr_Expr_6)) of
+                                                                                                                                                                                             { ( sem_DataFieldExpr_6) | True ->
+                                                                                                                                                                                             ( _lhsOchrInstDeclSq,sem_DataFieldExpr_6) }) }) }) })))
+                                                                                                                                                                       in  sem_DataFieldExpr_Expr_5)) of
+                                                                                                                                                                { ( sem_DataFieldExpr_5) | True ->
+                                                                                                                                                                ( _lhsOgathDataGam,sem_DataFieldExpr_5) }) }) }) }) }) }) }) })))))))
+                                                                                                                                  in  sem_DataFieldExpr_Expr_4)) of
+                                                                                                                           { ( sem_DataFieldExpr_4) | True ->
+                                                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_DataFieldExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                    in  sem_DataFieldExpr_Expr_3)) of
                                                                             { ( sem_DataFieldExpr_3) | True ->
                                                                             ( _lhsOpredSameScopeCounter,sem_DataFieldExpr_3) }) }) }) }) }) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_DataFieldPatExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_DataFieldPatExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_DataFieldPatExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_DataFieldPatExpr.hs
@@ -19,848 +19,875 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- DataFieldPatExpr --------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attribute:
-         gUniq                : UID
-   visit 2:
-      inherited attributes:
-         kiGam                : KiGam
-         lexLev               : Int
-      chained attribute:
-         predSameScopeCounter : Int
-   visit 3:
-      inherited attributes:
-         opts                 : EHCOpts
-         polGam               : PolGam
-         predScope            : PredScope
-         tyKiGlobFreeTvarS    : TyVarIdS
-      chained attributes:
-         kiVarMp              : VarMp
-         polVarMp             : VarMp
-         tyGam                : TyGam
-         tyKiGam              : TyKiGam
-   visit 4:
-      inherited attributes:
-         clGam                : ClGam
-         dataGam              : DataGam
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         tyTyTySigFreeTvarS   : TyVarIdS
-      synthesized attribute:
-         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
-   visit 5:
-      inherited attributes:
-         fiOpts               : FIOpts
-         knTy                 : Ty
-         tySigGam             : ValGam
-      chained attributes:
-         patTyVarMp           : VarMp
-         valGam               : ValGam
-   visit 6:
-      inherited attributes:
-         chrStore             : ScopedPredStore
-         clDfGam              : ClassDefaultGam
-         tvKiVarMp            : VarMp
-         tyTyGlobFreeTvarS    : TyVarIdS
-         valTyGlobFreeTvarS   : TyVarIdS
-      chained attribute:
-         tyVarMp              : VarMp
-      synthesized attributes:
-         gathCnstrMp          : CHRPredOccCnstrMp
-         gathRangeMp          : RangeMp
-         scopeGam             : ScopeGam
-         ty                   : Ty
-   visit 7:
-      inherited attributes:
-         ceParentNm           : HsName
-         chrEvidBindMp        : EvidKeyToCBindMap
-         chrScopeBindMp       : PredScopeToCBindMap
-         finTyVarMp           : VarMp
-         finValGam            : ValGam
-         moduleNm             : HsName
-         rangeMp              : RangeMp
-         sysfEnv              : ToSysfEnv
-         tySigVarMp           : VarMp
-      chained attribute:
-         cSubst               : CSubst
-      synthesized attributes:
-         allErrSq             : ErrSq
-         dti                  : DataTagInfo
-         errSq                : ErrSq
-         fldL                 : [HsName]
-         fsRPatL              : FieldSplitL
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         gathTvKiVarMp        : VarMp
-         patCRest             : CPatRest
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         valCBindL            : CBindL
-   alternatives:
-      alternative Ext:
-         child hsrange        : {Range}
-         child dataFieldPatExpr : DataFieldPatExpr 
-         child nm             : {HsName}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup17      : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup17      : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup17      : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup17      : _
-            intra range       : {Range}
-         visit 5:
-            local lUniq2      : {UID}
-            local lUniq       : {UID}
-            local knFldTy     : _
-            local _tup16      : _
-            local gTy         : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup17      : _
-            intra range       : {Range}
-         visit 6:
-            local ty          : {Ty}
-            intra _tup16      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-            intra gTy         : {Ty}
-         visit 7:
-            local nmErrs      : {ErrL}
-            local pp          : _
-            local ioffset     : _
-            local gathMentrelFilterMp : _
-            intra _tup16      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-            intra gTy         : {Ty}
-      alternative Con:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup19      : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup19      : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup19      : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup19      : _
-            intra range       : {Range}
-         visit 5:
-            local lUniq2      : {UID}
-            local lUniq       : {UID}
-            local tyvar       : _
-            local knTyShape   : _
-            local _tup18      : _
-            local gTy         : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup19      : _
-            intra range       : {Range}
-         visit 6:
-            local ty          : {Ty}
-            intra _tup18      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-            intra gTy         : {Ty}
-         visit 7:
-            local dgi         : {DataGamInfo}
-            local dti         : _
-            local nmErrs      : {ErrL}
-            local pp          : _
-            local gathMentrelFilterMp : _
-            intra _tup18      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-            intra gTy         : {Ty}
--}
-sem_DataFieldPatExpr_Ext :: Range ->
-                            T_DataFieldPatExpr ->
-                            HsName ->
-                            T_PatExpr ->
-                            T_DataFieldPatExpr
-
-sem_DataFieldPatExpr_Ext hsrange_ dataFieldPatExpr_ nm_ patExpr_ | hsrange_ `seq` (dataFieldPatExpr_ `seq` (nm_ `seq` (patExpr_ `seq` (True)))) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (dataFieldPatExpr_) of
-          { ( _dataFieldPatExprIrange,dataFieldPatExpr_1) | True ->
-              (case (rangeUnions [hsrange_, _dataFieldPatExprIrange
-                                                          , _patExprIrange
-                                                                         ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_DataFieldPatExpr_Ext_1 :: T_DataFieldPatExpr_1
-                            sem_DataFieldPatExpr_Ext_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
-                                       { __tup17 | __tup17 `seq` (True) ->
-                                       (case (__tup17) of
-                                        { (_dataFieldPatExprOgUniq,_,_) | _dataFieldPatExprOgUniq `seq` (True) ->
-                                        (case (dataFieldPatExpr_1 _dataFieldPatExprOgUniq) of
-                                         { ( _dataFieldPatExprIgUniq,dataFieldPatExpr_2) | True ->
-                                             (case (_dataFieldPatExprIgUniq) of
-                                              { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
-                                              (case (patExpr_1 _patExprOgUniq) of
-                                               { ( _patExprIgUniq,patExpr_2) | True ->
-                                                   (case (_patExprIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_DataFieldPatExpr_Ext_2 :: T_DataFieldPatExpr_2
-                                                                sem_DataFieldPatExpr_Ext_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _dataFieldPatExprOpredSameScopeCounter | _dataFieldPatExprOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _dataFieldPatExprOlexLev | _dataFieldPatExprOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _dataFieldPatExprOkiGam | _dataFieldPatExprOkiGam `seq` (True) ->
-                                                                               (case (dataFieldPatExpr_2 _dataFieldPatExprOkiGam _dataFieldPatExprOlexLev _dataFieldPatExprOpredSameScopeCounter) of
-                                                                                { ( _dataFieldPatExprIpredSameScopeCounter,dataFieldPatExpr_3) | True ->
-                                                                                    (case (_dataFieldPatExprIpredSameScopeCounter) of
-                                                                                     { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case (_lhsIlexLev) of
-                                                                                      { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                                      (case (_lhsIkiGam) of
-                                                                                       { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                                       (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                                        { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                                            (case (_patExprIpredSameScopeCounter) of
-                                                                                             { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                             (case ((let sem_DataFieldPatExpr_Ext_3 :: T_DataFieldPatExpr_3
-                                                                                                         sem_DataFieldPatExpr_Ext_3 =
-                                                                                                             (\ _lhsIkiVarMp
-                                                                                                                _lhsIopts
-                                                                                                                _lhsIpolGam
-                                                                                                                _lhsIpolVarMp
-                                                                                                                _lhsIpredScope
-                                                                                                                _lhsItyGam
-                                                                                                                _lhsItyKiGam
-                                                                                                                _lhsItyKiGlobFreeTvarS ->
-                                                                                                                  _lhsIkiVarMp `seq`
-                                                                                                                  (_lhsIopts `seq`
-                                                                                                                   (_lhsIpolGam `seq`
-                                                                                                                    (_lhsIpolVarMp `seq`
-                                                                                                                     (_lhsIpredScope `seq`
-                                                                                                                      (_lhsItyGam `seq`
-                                                                                                                       (_lhsItyKiGam `seq`
-                                                                                                                        (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                         ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                           { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _dataFieldPatExprOtyKiGlobFreeTvarS | _dataFieldPatExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _dataFieldPatExprOtyKiGam | _dataFieldPatExprOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsItyGam) of
-                                                                                                                              { _dataFieldPatExprOtyGam | _dataFieldPatExprOtyGam `seq` (True) ->
-                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                               { _dataFieldPatExprOpredScope | _dataFieldPatExprOpredScope `seq` (True) ->
-                                                                                                                               (case (_lhsIpolVarMp) of
-                                                                                                                                { _dataFieldPatExprOpolVarMp | _dataFieldPatExprOpolVarMp `seq` (True) ->
-                                                                                                                                (case (_lhsIpolGam) of
-                                                                                                                                 { _dataFieldPatExprOpolGam | _dataFieldPatExprOpolGam `seq` (True) ->
-                                                                                                                                 (case (_lhsIopts) of
-                                                                                                                                  { _dataFieldPatExprOopts | _dataFieldPatExprOopts `seq` (True) ->
-                                                                                                                                  (case (_lhsIkiVarMp) of
-                                                                                                                                   { _dataFieldPatExprOkiVarMp | _dataFieldPatExprOkiVarMp `seq` (True) ->
-                                                                                                                                   (case (dataFieldPatExpr_3 _dataFieldPatExprOkiVarMp _dataFieldPatExprOopts _dataFieldPatExprOpolGam _dataFieldPatExprOpolVarMp _dataFieldPatExprOpredScope _dataFieldPatExprOtyGam _dataFieldPatExprOtyKiGam _dataFieldPatExprOtyKiGlobFreeTvarS) of
-                                                                                                                                    { ( _dataFieldPatExprIkiVarMp,_dataFieldPatExprIpolVarMp,_dataFieldPatExprItyGam,_dataFieldPatExprItyKiGam,dataFieldPatExpr_4) | True ->
-                                                                                                                                        (case (_dataFieldPatExprItyKiGam) of
-                                                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                                                         (case (_dataFieldPatExprItyGam) of
-                                                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                                                          (case (_lhsIpredScope) of
-                                                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                                                           (case (_dataFieldPatExprIpolVarMp) of
-                                                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                                                            (case (_lhsIpolGam) of
-                                                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                                                             (case (_lhsIopts) of
-                                                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                                                              (case (_dataFieldPatExprIkiVarMp) of
-                                                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                        (case ((let sem_DataFieldPatExpr_Ext_4 :: T_DataFieldPatExpr_4
-                                                                                                                                                                    sem_DataFieldPatExpr_Ext_4 =
-                                                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                                                           _lhsIdataGam
-                                                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                        { _dataFieldPatExprOtyTyTySigFreeTvarS | _dataFieldPatExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                         { _dataFieldPatExprOfinTyKiGam | _dataFieldPatExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                          { _dataFieldPatExprOfinKiVarMp | _dataFieldPatExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                          (case (_lhsIdataGam) of
-                                                                                                                                                                                           { _dataFieldPatExprOdataGam | _dataFieldPatExprOdataGam `seq` (True) ->
-                                                                                                                                                                                           (case (_lhsIclGam) of
-                                                                                                                                                                                            { _dataFieldPatExprOclGam | _dataFieldPatExprOclGam `seq` (True) ->
-                                                                                                                                                                                            (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                             { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                                                                 (case (dataFieldPatExpr_4 _dataFieldPatExprOclGam _dataFieldPatExprOdataGam _dataFieldPatExprOfinKiVarMp _dataFieldPatExprOfinTyKiGam _dataFieldPatExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                  { ( _dataFieldPatExprIchrInstDeclSq,dataFieldPatExpr_5) | True ->
-                                                                                                                                                                                                      (case (_dataFieldPatExprIchrInstDeclSq `Seq.union` _patExprIchrInstDeclSq) of
-                                                                                                                                                                                                       { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                       (case ((let sem_DataFieldPatExpr_Ext_5 :: T_DataFieldPatExpr_5
-                                                                                                                                                                                                                   sem_DataFieldPatExpr_Ext_5 =
-                                                                                                                                                                                                                       (\ _lhsIfiOpts
-                                                                                                                                                                                                                          _lhsIknTy
-                                                                                                                                                                                                                          _lhsIpatTyVarMp
-                                                                                                                                                                                                                          _lhsItySigGam
-                                                                                                                                                                                                                          _lhsIvalGam ->
-                                                                                                                                                                                                                            _lhsIfiOpts `seq`
-                                                                                                                                                                                                                            (_lhsIknTy `seq`
-                                                                                                                                                                                                                             (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                              (_lhsItySigGam `seq`
-                                                                                                                                                                                                                               (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                                  { _dataFieldPatExprOvalGam | _dataFieldPatExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                  (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                   { _dataFieldPatExprOtySigGam | _dataFieldPatExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                   (case (_lhsIknTy) of
-                                                                                                                                                                                                                                    { _dataFieldPatExprOknTy | _dataFieldPatExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                    (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                     { _dataFieldPatExprOfiOpts | _dataFieldPatExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                     (case (__tup17) of
-                                                                                                                                                                                                                                      { (_,_,_lUniq2) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                                                      (case (__tup17) of
-                                                                                                                                                                                                                                       { (_,_lUniq,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                       (case (mkNewTyVar _lUniq) of
-                                                                                                                                                                                                                                        { _knFldTy | _knFldTy `seq` (True) ->
-                                                                                                                                                                                                                                        (case (valGamLookupTy nm_ _lhsIvalGam) of
-                                                                                                                                                                                                                                         { __tup16 | __tup16 `seq` (True) ->
-                                                                                                                                                                                                                                         (case (__tup16) of
-                                                                                                                                                                                                                                          { (_gTy,_) | _gTy `seq` (True) ->
-                                                                                                                                                                                                                                          (case (defaultFIEnv
-                                                                                                                                                                                                                                                     { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                     , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                     , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                     , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                     , feRange = _range
-                                                                                                                                                                                                                                                     }) of
-                                                                                                                                                                                                                                           { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                           (case (fitsIn _lhsIfiOpts _fe _lUniq2 _lhsIpatTyVarMp _gTy ([_lhsIknTy] `appArr` _knFldTy)) of
-                                                                                                                                                                                                                                            { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                            (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                             { _dataFieldPatExprOpatTyVarMp | _dataFieldPatExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                             (case (dataFieldPatExpr_5 _dataFieldPatExprOfiOpts _dataFieldPatExprOknTy _dataFieldPatExprOpatTyVarMp _dataFieldPatExprOtySigGam _dataFieldPatExprOvalGam) of
-                                                                                                                                                                                                                                              { ( _dataFieldPatExprIpatTyVarMp,_dataFieldPatExprIvalGam,dataFieldPatExpr_6) | True ->
-                                                                                                                                                                                                                                                  (case (_dataFieldPatExprIvalGam) of
-                                                                                                                                                                                                                                                   { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                    { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_dataFieldPatExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                     { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                      { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (True) of
-                                                                                                                                                                                                                                                       { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (_knFldTy) of
-                                                                                                                                                                                                                                                        { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                        (case ([]) of
-                                                                                                                                                                                                                                                         { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                                                                                          { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                                                                                              (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                                               { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                                                   (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                                    { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                                                     { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case ((let sem_DataFieldPatExpr_Ext_6 :: T_DataFieldPatExpr_6
-                                                                                                                                                                                                                                                                                 sem_DataFieldPatExpr_Ext_6 =
-                                                                                                                                                                                                                                                                                     (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                                        _lhsIclDfGam
-                                                                                                                                                                                                                                                                                        _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                                        _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                        _lhsItyVarMp
-                                                                                                                                                                                                                                                                                        _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                          _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                                          (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                                           (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                             (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                               ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                 { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                  { _dataFieldPatExprOvalTyGlobFreeTvarS | _dataFieldPatExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                   { _dataFieldPatExprOtyVarMp | _dataFieldPatExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                    { _dataFieldPatExprOtyTyGlobFreeTvarS | _dataFieldPatExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                     { _dataFieldPatExprOtvKiVarMp | _dataFieldPatExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                      { _dataFieldPatExprOclDfGam | _dataFieldPatExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                       { _dataFieldPatExprOchrStore | _dataFieldPatExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (dataFieldPatExpr_6 _dataFieldPatExprOchrStore _dataFieldPatExprOclDfGam _dataFieldPatExprOtvKiVarMp _dataFieldPatExprOtyTyGlobFreeTvarS _dataFieldPatExprOtyVarMp _dataFieldPatExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                        { ( _dataFieldPatExprIgathCnstrMp,_dataFieldPatExprIgathRangeMp,_dataFieldPatExprIscopeGam,_dataFieldPatExprIty,_dataFieldPatExprItyVarMp,dataFieldPatExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                            (case (_dataFieldPatExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                             { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                              { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                               { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                 { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                  { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                      (case (_dataFieldPatExprIgathCnstrMp `cnstrMpUnion` _patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                                       { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_dataFieldPatExprIgathRangeMp `Map.union` _patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                        { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_dataFieldPatExprIscopeGam `gamUnion` _patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                                                         { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_dataFieldPatExprIty) of
-                                                                                                                                                                                                                                                                                                                          { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_ty) of
-                                                                                                                                                                                                                                                                                                                           { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                            { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case ((let sem_DataFieldPatExpr_Ext_7 :: T_DataFieldPatExpr_7
-                                                                                                                                                                                                                                                                                                                                        sem_DataFieldPatExpr_Ext_7 =
-                                                                                                                                                                                                                                                                                                                                            (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                               _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                                                               _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                               _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                               _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                                                               _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                                                 _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                 (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                                                                  (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                   (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                    (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                     (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                       (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                        (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                         (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                          ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                            { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                             { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                              { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                               { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                { _dataFieldPatExprOsysfEnv | _dataFieldPatExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                 { _dataFieldPatExprOrangeMp | _dataFieldPatExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                  { _dataFieldPatExprOfinValGam | _dataFieldPatExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                   { _dataFieldPatExprOfinTyVarMp | _dataFieldPatExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                    { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                     { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                      { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                       { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                                                        { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                         { _dataFieldPatExprOchrScopeBindMp | _dataFieldPatExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                          { _dataFieldPatExprOchrEvidBindMp | _dataFieldPatExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                           { _dataFieldPatExprOcSubst | _dataFieldPatExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                            { _dataFieldPatExprOtySigVarMp | _dataFieldPatExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                             { _dataFieldPatExprOmoduleNm | _dataFieldPatExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                                                              { _dataFieldPatExprOceParentNm | _dataFieldPatExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                              (case (dataFieldPatExpr_7 _dataFieldPatExprOcSubst _dataFieldPatExprOceParentNm _dataFieldPatExprOchrEvidBindMp _dataFieldPatExprOchrScopeBindMp _dataFieldPatExprOfinTyVarMp _dataFieldPatExprOfinValGam _dataFieldPatExprOmoduleNm _dataFieldPatExprOrangeMp _dataFieldPatExprOsysfEnv _dataFieldPatExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                               { ( _dataFieldPatExprIallErrSq,_dataFieldPatExprIcSubst,_dataFieldPatExprIdti,_dataFieldPatExprIerrSq,_dataFieldPatExprIfldL,_dataFieldPatExprIfsRPatL,_dataFieldPatExprIgathMentrelFilterMp,_dataFieldPatExprIgathTvKiVarMp,_dataFieldPatExprIpatCRest,_dataFieldPatExprIpp,_dataFieldPatExprIppL,_dataFieldPatExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                   (case (_dataFieldPatExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                    { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                    (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                     { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (_dataFieldPatExprIallErrSq `Seq.union` _patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case (_dataFieldPatExprIdti) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOdti | _lhsOdti `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (__tup16) of
-                                                                                                                                                                                                                                                                                                                                                                                             { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (ppFld "=" Nothing nm_ (pp nm_) _patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case (Seq.unions [ _dataFieldPatExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                                , rngLift _range mkNestErr' _pp [_patExprIerrSq, Seq.fromList _nmErrs, foErrSq _fo_]
-                                                                                                                                                                                                                                                                                                                                                                                                                ]) of
-                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case (nm_ : _dataFieldPatExprIfldL) of
-                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOfldL | _lhsOfldL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                (case (fldInt $ dfiOffset $ panicJust "DataFieldPatExpr.Ext.ioffset" $ Map.lookup nm_ $ dtiFldMp _dataFieldPatExprIdti) of
-                                                                                                                                                                                                                                                                                                                                                                                                 { _ioffset | _ioffset `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                 (case ((FldKnownOffset nm_ _ioffset,_patExprIrpat) : _dataFieldPatExprIfsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                  (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val nm_
-                                                                                                                                                                                                                                                                                                                                                                                                         `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                                                                                                                                                                                         tyUsedNames _lhsImoduleNm _gTy) of
-                                                                                                                                                                                                                                                                                                                                                                                                   { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (_dataFieldPatExprIgathTvKiVarMp `varmpUnion` _patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     (case (_dataFieldPatExprIpatCRest) of
-                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                      (case (_dataFieldPatExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                       (case (_pp : _dataFieldPatExprIppL) of
-                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                        (case (_dataFieldPatExprIvalCBindL ++ _patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOcSubst,_lhsOdti,_lhsOerrSq,_lhsOfldL,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                                                    in  sem_DataFieldPatExpr_Ext_7)) of
-                                                                                                                                                                                                                                                                                                                             { ( sem_DataFieldPatExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                                             ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_DataFieldPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                                             in  sem_DataFieldPatExpr_Ext_6)) of
-                                                                                                                                                                                                                                                                      { ( sem_DataFieldPatExpr_6) | True ->
-                                                                                                                                                                                                                                                                      ( _lhsOpatTyVarMp,_lhsOvalGam,sem_DataFieldPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                                                                               in  sem_DataFieldPatExpr_Ext_5)) of
-                                                                                                                                                                                                        { ( sem_DataFieldPatExpr_5) | True ->
-                                                                                                                                                                                                        ( _lhsOchrInstDeclSq,sem_DataFieldPatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                                in  sem_DataFieldPatExpr_Ext_4)) of
-                                                                                                                                                         { ( sem_DataFieldPatExpr_4) | True ->
-                                                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_DataFieldPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                     in  sem_DataFieldPatExpr_Ext_3)) of
-                                                                                              { ( sem_DataFieldPatExpr_3) | True ->
-                                                                                              ( _lhsOpredSameScopeCounter,sem_DataFieldPatExpr_3) }) }) }) }) }) }) }) }) }) })))))
-                                                            in  sem_DataFieldPatExpr_Ext_2)) of
-                                                     { ( sem_DataFieldPatExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_DataFieldPatExpr_2) }) }) }) }) }) }) })))
-                        in  sem_DataFieldPatExpr_Ext_1)) of
-                 { ( sem_DataFieldPatExpr_1) | True ->
-                 ( _lhsOrange,sem_DataFieldPatExpr_1) }) }) }) }) })
-
-sem_DataFieldPatExpr_Con :: Range ->
-                            HsName ->
-                            T_DataFieldPatExpr
-
-sem_DataFieldPatExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_DataFieldPatExpr_Con_1 :: T_DataFieldPatExpr_1
-                  sem_DataFieldPatExpr_Con_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
-                             { __tup19 | __tup19 `seq` (True) ->
-                             (case (__tup19) of
-                              { (_lhsOgUniq,_,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_DataFieldPatExpr_Con_2 :: T_DataFieldPatExpr_2
-                                          sem_DataFieldPatExpr_Con_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_DataFieldPatExpr_Con_3 :: T_DataFieldPatExpr_3
-                                                                   sem_DataFieldPatExpr_Con_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_DataFieldPatExpr_Con_4 :: T_DataFieldPatExpr_4
-                                                                                                    sem_DataFieldPatExpr_Con_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                 ((case (Seq.empty) of
-                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                   (case ((let sem_DataFieldPatExpr_Con_5 :: T_DataFieldPatExpr_5
-                                                                                                                               sem_DataFieldPatExpr_Con_5 =
-                                                                                                                                   (\ _lhsIfiOpts
-                                                                                                                                      _lhsIknTy
-                                                                                                                                      _lhsIpatTyVarMp
-                                                                                                                                      _lhsItySigGam
-                                                                                                                                      _lhsIvalGam ->
-                                                                                                                                        _lhsIfiOpts `seq`
-                                                                                                                                        (_lhsIknTy `seq`
-                                                                                                                                         (_lhsIpatTyVarMp `seq`
-                                                                                                                                          (_lhsItySigGam `seq`
-                                                                                                                                           (_lhsIvalGam `seq`
-                                                                                                                                            ((case (__tup19) of
-                                                                                                                                              { (_,_,_lUniq2) | _lUniq2 `seq` (True) ->
-                                                                                                                                              (case (__tup19) of
-                                                                                                                                               { (_,_lUniq,_) | _lUniq `seq` (True) ->
-                                                                                                                                               (case (mkTyVar _lUniq) of
-                                                                                                                                                { _tyvar | _tyvar `seq` (True) ->
-                                                                                                                                                (case ([_lhsIknTy] `appArr` _tyvar) of
-                                                                                                                                                 { _knTyShape | _knTyShape `seq` (True) ->
-                                                                                                                                                 (case (valGamLookupTy (hsnUn nm_) _lhsIvalGam) of
-                                                                                                                                                  { __tup18 | __tup18 `seq` (True) ->
-                                                                                                                                                  (case (__tup18) of
-                                                                                                                                                   { (_gTy,_) | _gTy `seq` (True) ->
-                                                                                                                                                   (case (defaultFIEnv
-                                                                                                                                                              { feEHCOpts = _lhsIopts
-                                                                                                                                                              , fePredScope = _lhsIpredScope
-                                                                                                                                                              , feTyGam = _lhsItyGam
-                                                                                                                                                              , fePolGam = _lhsIpolGam
-                                                                                                                                                              , feRange = _range
-                                                                                                                                                              }) of
-                                                                                                                                                    { _fe | _fe `seq` (True) ->
-                                                                                                                                                    (case (fitsIn _lhsIfiOpts _fe _lUniq2 _lhsIpatTyVarMp _gTy _knTyShape) of
-                                                                                                                                                     { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                     (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                      { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                      (case (_lhsIvalGam) of
-                                                                                                                                                       { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                       (case ((let sem_DataFieldPatExpr_Con_6 :: T_DataFieldPatExpr_6
-                                                                                                                                                                   sem_DataFieldPatExpr_Con_6 =
-                                                                                                                                                                       (\ _lhsIchrStore
-                                                                                                                                                                          _lhsIclDfGam
-                                                                                                                                                                          _lhsItvKiVarMp
-                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                          _lhsItyVarMp
-                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                            _lhsIchrStore `seq`
-                                                                                                                                                                            (_lhsIclDfGam `seq`
-                                                                                                                                                                             (_lhsItvKiVarMp `seq`
-                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                               (_lhsItyVarMp `seq`
-                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                 ((case (Map.empty) of
-                                                                                                                                                                                   { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                   (case (Map.empty) of
-                                                                                                                                                                                    { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                    (case (emptyGam) of
-                                                                                                                                                                                     { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIknTy) of
-                                                                                                                                                                                      { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                      (case (_ty) of
-                                                                                                                                                                                       { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsItyVarMp) of
-                                                                                                                                                                                        { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                        (case ((let sem_DataFieldPatExpr_Con_7 :: T_DataFieldPatExpr_7
-                                                                                                                                                                                                    sem_DataFieldPatExpr_Con_7 =
-                                                                                                                                                                                                        (\ _lhsIcSubst
-                                                                                                                                                                                                           _lhsIceParentNm
-                                                                                                                                                                                                           _lhsIchrEvidBindMp
-                                                                                                                                                                                                           _lhsIchrScopeBindMp
-                                                                                                                                                                                                           _lhsIfinTyVarMp
-                                                                                                                                                                                                           _lhsIfinValGam
-                                                                                                                                                                                                           _lhsImoduleNm
-                                                                                                                                                                                                           _lhsIrangeMp
-                                                                                                                                                                                                           _lhsIsysfEnv
-                                                                                                                                                                                                           _lhsItySigVarMp ->
-                                                                                                                                                                                                             _lhsIcSubst `seq`
-                                                                                                                                                                                                             (_lhsIceParentNm `seq`
-                                                                                                                                                                                                              (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                               (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                 (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                   (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                     (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                      ((case (Seq.empty) of
-                                                                                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                        (case (_lhsIcSubst) of
-                                                                                                                                                                                                                         { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                         (case (let (_,t,_) = valGamTyOfDataCon nm_ _lhsIvalGam
-                                                                                                                                                                                                                                in  panicJust "DataFieldPatExpr.dgi" $ dataGamDgiOfTy t _lhsIdataGam) of
-                                                                                                                                                                                                                          { _dgi | _dgi `seq` (True) ->
-                                                                                                                                                                                                                          (case (dgiDtiOfCon nm_ _dgi) of
-                                                                                                                                                                                                                           { _dti | _dti `seq` (True) ->
-                                                                                                                                                                                                                           (case (_dti) of
-                                                                                                                                                                                                                            { _lhsOdti | _lhsOdti `seq` (True) ->
-                                                                                                                                                                                                                            (case (__tup18) of
-                                                                                                                                                                                                                             { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                             (case (pp nm_) of
-                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                              (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs, foErrSq _fo_]) of
-                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                                { _lhsOfldL | _lhsOfldL `seq` (True) ->
-                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                 { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                 (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val (hsnUn nm_)
-                                                                                                                                                                                                                                        `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                        tyUsedNames _lhsImoduleNm _gTy) of
-                                                                                                                                                                                                                                  { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                  (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                   (case (emptyVarMp) of
-                                                                                                                                                                                                                                    { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                    (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                     { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                     (case (_pp) of
-                                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                       { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                                        { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsOcSubst,_lhsOdti,_lhsOerrSq,_lhsOfldL,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                in  sem_DataFieldPatExpr_Con_7)) of
-                                                                                                                                                                                         { ( sem_DataFieldPatExpr_7) | True ->
-                                                                                                                                                                                         ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_DataFieldPatExpr_7) }) }) }) }) }) }) }))))))))
-                                                                                                                                                               in  sem_DataFieldPatExpr_Con_6)) of
-                                                                                                                                                        { ( sem_DataFieldPatExpr_6) | True ->
-                                                                                                                                                        ( _lhsOpatTyVarMp,_lhsOvalGam,sem_DataFieldPatExpr_6) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                           in  sem_DataFieldPatExpr_Con_5)) of
-                                                                                                                    { ( sem_DataFieldPatExpr_5) | True ->
-                                                                                                                    ( _lhsOchrInstDeclSq,sem_DataFieldPatExpr_5) }) })))))))
-                                                                                                in  sem_DataFieldPatExpr_Con_4)) of
-                                                                                         { ( sem_DataFieldPatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_DataFieldPatExpr_4) }) }) }) }) }))))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- DataFieldPatExpr --------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attribute:
+         gUniq                : UID
+   visit 2:
+      inherited attributes:
+         kiGam                : KiGam
+         lexLev               : Int
+      chained attribute:
+         predSameScopeCounter : Int
+   visit 3:
+      inherited attributes:
+         opts                 : EHCOpts
+         polGam               : PolGam
+         predScope            : PredScope
+         tyKiGlobFreeTvarS    : TyVarIdS
+      chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
+         kiVarMp              : VarMp
+         polVarMp             : VarMp
+         tyGam                : TyGam
+         tyKiGam              : TyKiGam
+   visit 4:
+      inherited attributes:
+         clGam                : ClGam
+         dataGam              : DataGam
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         tyTyTySigFreeTvarS   : TyVarIdS
+      synthesized attribute:
+         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
+   visit 5:
+      inherited attributes:
+         fiOpts               : FIOpts
+         knTy                 : Ty
+         tySigGam             : ValGam
+      chained attributes:
+         patTyVarMp           : VarMp
+         valGam               : ValGam
+   visit 6:
+      inherited attributes:
+         chrStore             : ScopedPredStore
+         clDfGam              : ClassDefaultGam
+         tvKiVarMp            : VarMp
+         tyTyGlobFreeTvarS    : TyVarIdS
+         valTyGlobFreeTvarS   : TyVarIdS
+      chained attribute:
+         tyVarMp              : VarMp
+      synthesized attributes:
+         gathCnstrMp          : CHRPredOccCnstrMp
+         gathRangeMp          : RangeMp
+         scopeGam             : ScopeGam
+         ty                   : Ty
+   visit 7:
+      inherited attributes:
+         ceParentNm           : HsName
+         chrEvidBindMp        : EvidKeyToCBindMap
+         chrScopeBindMp       : PredScopeToCBindMap
+         finTyVarMp           : VarMp
+         finValGam            : ValGam
+         moduleNm             : HsName
+         rangeMp              : RangeMp
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+         tySigVarMp           : VarMp
+      chained attribute:
+         cSubst               : CSubst
+      synthesized attributes:
+         allErrSq             : ErrSq
+         dti                  : DataTagInfo
+         errSq                : ErrSq
+         fldL                 : [HsName]
+         fsRPatL              : FieldSplitL
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         gathTvKiVarMp        : VarMp
+         patCRest             : CPatRest
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         trpp                 : TrPP
+         valCBindL            : CBindL
+   alternatives:
+      alternative Ext:
+         child hsrange        : {Range}
+         child dataFieldPatExpr : DataFieldPatExpr 
+         child nm             : {HsName}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup19      : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup19      : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup19      : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup19      : _
+            intra range       : {Range}
+         visit 5:
+            local lUniq2      : {UID}
+            local lUniq       : {UID}
+            local knFldTy     : _
+            local _tup18      : _
+            local gTy         : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup19      : _
+            intra range       : {Range}
+         visit 6:
+            local ty          : {Ty}
+            intra _tup18      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+            intra gTy         : {Ty}
+         visit 7:
+            local nmErrs      : {ErrL}
+            local pp          : _
+            local ioffset     : _
+            local gathMentrelFilterMp : _
+            intra _tup18      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+            intra gTy         : {Ty}
+      alternative Con:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup21      : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup21      : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup21      : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup21      : _
+            intra range       : {Range}
+         visit 5:
+            local lUniq2      : {UID}
+            local lUniq       : {UID}
+            local tyvar       : _
+            local knTyShape   : _
+            local _tup20      : _
+            local gTy         : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup21      : _
+            intra range       : {Range}
+         visit 6:
+            local ty          : {Ty}
+            intra _tup20      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+            intra gTy         : {Ty}
+         visit 7:
+            local dgi         : {DataGamInfo}
+            local dti         : _
+            local nmErrs      : {ErrL}
+            local pp          : _
+            local gathMentrelFilterMp : _
+            intra _tup20      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+            intra gTy         : {Ty}
+-}
+sem_DataFieldPatExpr_Ext :: Range ->
+                            T_DataFieldPatExpr ->
+                            HsName ->
+                            T_PatExpr ->
+                            T_DataFieldPatExpr
+
+sem_DataFieldPatExpr_Ext hsrange_ dataFieldPatExpr_ nm_ patExpr_ | hsrange_ `seq` (dataFieldPatExpr_ `seq` (nm_ `seq` (patExpr_ `seq` (True)))) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (dataFieldPatExpr_) of
+          { ( _dataFieldPatExprIrange,dataFieldPatExpr_1) | True ->
+              (case (rangeUnions [hsrange_, _dataFieldPatExprIrange
+                                                          , _patExprIrange
+                                                                         ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_DataFieldPatExpr_Ext_1 :: T_DataFieldPatExpr_1
+                            sem_DataFieldPatExpr_Ext_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
+                                       { __tup19 | __tup19 `seq` (True) ->
+                                       (case (__tup19) of
+                                        { (_dataFieldPatExprOgUniq,_,_) | _dataFieldPatExprOgUniq `seq` (True) ->
+                                        (case (dataFieldPatExpr_1 _dataFieldPatExprOgUniq) of
+                                         { ( _dataFieldPatExprIgUniq,dataFieldPatExpr_2) | True ->
+                                             (case (_dataFieldPatExprIgUniq) of
+                                              { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
+                                              (case (patExpr_1 _patExprOgUniq) of
+                                               { ( _patExprIgUniq,patExpr_2) | True ->
+                                                   (case (_patExprIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_DataFieldPatExpr_Ext_2 :: T_DataFieldPatExpr_2
+                                                                sem_DataFieldPatExpr_Ext_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _dataFieldPatExprOpredSameScopeCounter | _dataFieldPatExprOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _dataFieldPatExprOlexLev | _dataFieldPatExprOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _dataFieldPatExprOkiGam | _dataFieldPatExprOkiGam `seq` (True) ->
+                                                                               (case (dataFieldPatExpr_2 _dataFieldPatExprOkiGam _dataFieldPatExprOlexLev _dataFieldPatExprOpredSameScopeCounter) of
+                                                                                { ( _dataFieldPatExprIpredSameScopeCounter,dataFieldPatExpr_3) | True ->
+                                                                                    (case (_dataFieldPatExprIpredSameScopeCounter) of
+                                                                                     { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case (_lhsIlexLev) of
+                                                                                      { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                                      (case (_lhsIkiGam) of
+                                                                                       { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                                       (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                                        { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                                            (case (_patExprIpredSameScopeCounter) of
+                                                                                             { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                             (case ((let sem_DataFieldPatExpr_Ext_3 :: T_DataFieldPatExpr_3
+                                                                                                         sem_DataFieldPatExpr_Ext_3 =
+                                                                                                             (\ _lhsIgenerDataInfoMp
+                                                                                                                _lhsIkiVarMp
+                                                                                                                _lhsIopts
+                                                                                                                _lhsIpolGam
+                                                                                                                _lhsIpolVarMp
+                                                                                                                _lhsIpredScope
+                                                                                                                _lhsItyGam
+                                                                                                                _lhsItyKiGam
+                                                                                                                _lhsItyKiGlobFreeTvarS ->
+                                                                                                                  _lhsIgenerDataInfoMp `seq`
+                                                                                                                  (_lhsIkiVarMp `seq`
+                                                                                                                   (_lhsIopts `seq`
+                                                                                                                    (_lhsIpolGam `seq`
+                                                                                                                     (_lhsIpolVarMp `seq`
+                                                                                                                      (_lhsIpredScope `seq`
+                                                                                                                       (_lhsItyGam `seq`
+                                                                                                                        (_lhsItyKiGam `seq`
+                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                            { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _dataFieldPatExprOtyKiGlobFreeTvarS | _dataFieldPatExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _dataFieldPatExprOtyKiGam | _dataFieldPatExprOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyGam) of
+                                                                                                                               { _dataFieldPatExprOtyGam | _dataFieldPatExprOtyGam `seq` (True) ->
+                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                { _dataFieldPatExprOpredScope | _dataFieldPatExprOpredScope `seq` (True) ->
+                                                                                                                                (case (_lhsIpolVarMp) of
+                                                                                                                                 { _dataFieldPatExprOpolVarMp | _dataFieldPatExprOpolVarMp `seq` (True) ->
+                                                                                                                                 (case (_lhsIpolGam) of
+                                                                                                                                  { _dataFieldPatExprOpolGam | _dataFieldPatExprOpolGam `seq` (True) ->
+                                                                                                                                  (case (_lhsIopts) of
+                                                                                                                                   { _dataFieldPatExprOopts | _dataFieldPatExprOopts `seq` (True) ->
+                                                                                                                                   (case (_lhsIkiVarMp) of
+                                                                                                                                    { _dataFieldPatExprOkiVarMp | _dataFieldPatExprOkiVarMp `seq` (True) ->
+                                                                                                                                    (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                     { _dataFieldPatExprOgenerDataInfoMp | _dataFieldPatExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                     (case (dataFieldPatExpr_3 _dataFieldPatExprOgenerDataInfoMp _dataFieldPatExprOkiVarMp _dataFieldPatExprOopts _dataFieldPatExprOpolGam _dataFieldPatExprOpolVarMp _dataFieldPatExprOpredScope _dataFieldPatExprOtyGam _dataFieldPatExprOtyKiGam _dataFieldPatExprOtyKiGlobFreeTvarS) of
+                                                                                                                                      { ( _dataFieldPatExprIgenerDataInfoMp,_dataFieldPatExprIkiVarMp,_dataFieldPatExprIpolVarMp,_dataFieldPatExprItyGam,_dataFieldPatExprItyKiGam,dataFieldPatExpr_4) | True ->
+                                                                                                                                          (case (_dataFieldPatExprItyKiGam) of
+                                                                                                                                           { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                                                           (case (_dataFieldPatExprItyGam) of
+                                                                                                                                            { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                                                            (case (_lhsIpredScope) of
+                                                                                                                                             { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                                                             (case (_dataFieldPatExprIpolVarMp) of
+                                                                                                                                              { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                                                              (case (_lhsIpolGam) of
+                                                                                                                                               { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                                                               (case (_lhsIopts) of
+                                                                                                                                                { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                                                                (case (_dataFieldPatExprIkiVarMp) of
+                                                                                                                                                 { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                                                 (case (_dataFieldPatExprIgenerDataInfoMp) of
+                                                                                                                                                  { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                  (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                                                   { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                                                       (case (_patExprIgenerDataInfoMp) of
+                                                                                                                                                        { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                        (case (_patExprIkiVarMp) of
+                                                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                         (case (_patExprIpolVarMp) of
+                                                                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                          (case (_patExprItyGam) of
+                                                                                                                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                                                           (case (_patExprItyKiGam) of
+                                                                                                                                                            { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                            (case ((let sem_DataFieldPatExpr_Ext_4 :: T_DataFieldPatExpr_4
+                                                                                                                                                                        sem_DataFieldPatExpr_Ext_4 =
+                                                                                                                                                                            (\ _lhsIclGam
+                                                                                                                                                                               _lhsIdataGam
+                                                                                                                                                                               _lhsIfinKiVarMp
+                                                                                                                                                                               _lhsIfinTyKiGam
+                                                                                                                                                                               _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                 _lhsIclGam `seq`
+                                                                                                                                                                                 (_lhsIdataGam `seq`
+                                                                                                                                                                                  (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                   (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                     ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                       { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                        { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                         { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIdataGam) of
+                                                                                                                                                                                          { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIclGam) of
+                                                                                                                                                                                           { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                                                           (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                            { _dataFieldPatExprOtyTyTySigFreeTvarS | _dataFieldPatExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                             { _dataFieldPatExprOfinTyKiGam | _dataFieldPatExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                              { _dataFieldPatExprOfinKiVarMp | _dataFieldPatExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                              (case (_lhsIdataGam) of
+                                                                                                                                                                                               { _dataFieldPatExprOdataGam | _dataFieldPatExprOdataGam `seq` (True) ->
+                                                                                                                                                                                               (case (_lhsIclGam) of
+                                                                                                                                                                                                { _dataFieldPatExprOclGam | _dataFieldPatExprOclGam `seq` (True) ->
+                                                                                                                                                                                                (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                 { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                                                                     (case (dataFieldPatExpr_4 _dataFieldPatExprOclGam _dataFieldPatExprOdataGam _dataFieldPatExprOfinKiVarMp _dataFieldPatExprOfinTyKiGam _dataFieldPatExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                      { ( _dataFieldPatExprIchrInstDeclSq,dataFieldPatExpr_5) | True ->
+                                                                                                                                                                                                          (case (_dataFieldPatExprIchrInstDeclSq `Seq.union` _patExprIchrInstDeclSq) of
+                                                                                                                                                                                                           { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                           (case ((let sem_DataFieldPatExpr_Ext_5 :: T_DataFieldPatExpr_5
+                                                                                                                                                                                                                       sem_DataFieldPatExpr_Ext_5 =
+                                                                                                                                                                                                                           (\ _lhsIfiOpts
+                                                                                                                                                                                                                              _lhsIknTy
+                                                                                                                                                                                                                              _lhsIpatTyVarMp
+                                                                                                                                                                                                                              _lhsItySigGam
+                                                                                                                                                                                                                              _lhsIvalGam ->
+                                                                                                                                                                                                                                _lhsIfiOpts `seq`
+                                                                                                                                                                                                                                (_lhsIknTy `seq`
+                                                                                                                                                                                                                                 (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                  (_lhsItySigGam `seq`
+                                                                                                                                                                                                                                   (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                    ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                                      { _dataFieldPatExprOvalGam | _dataFieldPatExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                      (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                       { _dataFieldPatExprOtySigGam | _dataFieldPatExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                       (case (_lhsIknTy) of
+                                                                                                                                                                                                                                        { _dataFieldPatExprOknTy | _dataFieldPatExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                         { _dataFieldPatExprOfiOpts | _dataFieldPatExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                         (case (__tup19) of
+                                                                                                                                                                                                                                          { (_,_,_lUniq2) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                                                          (case (__tup19) of
+                                                                                                                                                                                                                                           { (_,_lUniq,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                           (case (mkNewTyVar _lUniq) of
+                                                                                                                                                                                                                                            { _knFldTy | _knFldTy `seq` (True) ->
+                                                                                                                                                                                                                                            (case (valGamLookupTy nm_ _lhsIvalGam) of
+                                                                                                                                                                                                                                             { __tup18 | __tup18 `seq` (True) ->
+                                                                                                                                                                                                                                             (case (__tup18) of
+                                                                                                                                                                                                                                              { (_gTy,_) | _gTy `seq` (True) ->
+                                                                                                                                                                                                                                              (case (defaultFIEnv
+                                                                                                                                                                                                                                                         { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                         , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                         , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                         , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                         , feRange = _range
+                                                                                                                                                                                                                                                         }) of
+                                                                                                                                                                                                                                               { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                               (case (fitsIn _lhsIfiOpts _fe _lUniq2 _lhsIpatTyVarMp _gTy ([_lhsIknTy] `appArr` _knFldTy)) of
+                                                                                                                                                                                                                                                { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                                (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                 { _dataFieldPatExprOpatTyVarMp | _dataFieldPatExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                 (case (dataFieldPatExpr_5 _dataFieldPatExprOfiOpts _dataFieldPatExprOknTy _dataFieldPatExprOpatTyVarMp _dataFieldPatExprOtySigGam _dataFieldPatExprOvalGam) of
+                                                                                                                                                                                                                                                  { ( _dataFieldPatExprIpatTyVarMp,_dataFieldPatExprIvalGam,dataFieldPatExpr_6) | True ->
+                                                                                                                                                                                                                                                      (case (_dataFieldPatExprIvalGam) of
+                                                                                                                                                                                                                                                       { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                        { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (_dataFieldPatExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                         { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                          { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (True) of
+                                                                                                                                                                                                                                                           { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_knFldTy) of
+                                                                                                                                                                                                                                                            { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                             { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                                                                                              { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                                                                                                  (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                                                   { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                                                       (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                                        { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                                                         { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case ((let sem_DataFieldPatExpr_Ext_6 :: T_DataFieldPatExpr_6
+                                                                                                                                                                                                                                                                                     sem_DataFieldPatExpr_Ext_6 =
+                                                                                                                                                                                                                                                                                         (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                                            _lhsIclDfGam
+                                                                                                                                                                                                                                                                                            _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                            _lhsItyVarMp
+                                                                                                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                              _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                              (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                               (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                 (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                  (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                   ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                     { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                      { _dataFieldPatExprOvalTyGlobFreeTvarS | _dataFieldPatExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                       { _dataFieldPatExprOtyVarMp | _dataFieldPatExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                        { _dataFieldPatExprOtyTyGlobFreeTvarS | _dataFieldPatExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                         { _dataFieldPatExprOtvKiVarMp | _dataFieldPatExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                          { _dataFieldPatExprOclDfGam | _dataFieldPatExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                           { _dataFieldPatExprOchrStore | _dataFieldPatExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case (dataFieldPatExpr_6 _dataFieldPatExprOchrStore _dataFieldPatExprOclDfGam _dataFieldPatExprOtvKiVarMp _dataFieldPatExprOtyTyGlobFreeTvarS _dataFieldPatExprOtyVarMp _dataFieldPatExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                            { ( _dataFieldPatExprIgathCnstrMp,_dataFieldPatExprIgathRangeMp,_dataFieldPatExprIscopeGam,_dataFieldPatExprIty,_dataFieldPatExprItyVarMp,dataFieldPatExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                                (case (_dataFieldPatExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                 { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                  { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                   { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                    { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                     { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                      { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                          (case (_dataFieldPatExprIgathCnstrMp `cnstrMpUnion` _patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_dataFieldPatExprIgathRangeMp `Map.union` _patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_dataFieldPatExprIscopeGam `gamUnion` _patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                                                             { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_dataFieldPatExprIty) of
+                                                                                                                                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_ty) of
+                                                                                                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case ((let sem_DataFieldPatExpr_Ext_7 :: T_DataFieldPatExpr_7
+                                                                                                                                                                                                                                                                                                                                            sem_DataFieldPatExpr_Ext_7 =
+                                                                                                                                                                                                                                                                                                                                                (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                   _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                   _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                   _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                   _lhsItr
+                                                                                                                                                                                                                                                                                                                                                   _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                     (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                             (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                              (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                               ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                 { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                  { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                   { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                    { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                     { _dataFieldPatExprOsysfEnv | _dataFieldPatExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                      { _dataFieldPatExprOrangeMp | _dataFieldPatExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                       { _dataFieldPatExprOfinValGam | _dataFieldPatExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                        { _dataFieldPatExprOfinTyVarMp | _dataFieldPatExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                         { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                          { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                           { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                            { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                             { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                                                              { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                               { _dataFieldPatExprOchrScopeBindMp | _dataFieldPatExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                { _dataFieldPatExprOchrEvidBindMp | _dataFieldPatExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                 { _dataFieldPatExprOcSubst | _dataFieldPatExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                  { _dataFieldPatExprOtySigVarMp | _dataFieldPatExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                   { _dataFieldPatExprOtr | _dataFieldPatExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _dataFieldPatExprOmoduleNm | _dataFieldPatExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                                                                     { _dataFieldPatExprOceParentNm | _dataFieldPatExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                     (case (dataFieldPatExpr_7 _dataFieldPatExprOcSubst _dataFieldPatExprOceParentNm _dataFieldPatExprOchrEvidBindMp _dataFieldPatExprOchrScopeBindMp _dataFieldPatExprOfinTyVarMp _dataFieldPatExprOfinValGam _dataFieldPatExprOmoduleNm _dataFieldPatExprOrangeMp _dataFieldPatExprOsysfEnv _dataFieldPatExprOtr _dataFieldPatExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                      { ( _dataFieldPatExprIallErrSq,_dataFieldPatExprIcSubst,_dataFieldPatExprIdti,_dataFieldPatExprIerrSq,_dataFieldPatExprIfldL,_dataFieldPatExprIfsRPatL,_dataFieldPatExprIgathMentrelFilterMp,_dataFieldPatExprIgathTvKiVarMp,_dataFieldPatExprIpatCRest,_dataFieldPatExprIpp,_dataFieldPatExprIppL,_dataFieldPatExprItrpp,_dataFieldPatExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                          (case (_dataFieldPatExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                           { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                            { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (_dataFieldPatExprIallErrSq `Seq.union` _patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldPatExprIdti) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOdti | _lhsOdti `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (__tup18) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (ppFld "=" Nothing nm_ (pp nm_) _patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (Seq.unions [ _dataFieldPatExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                                       , rngLift _range mkNestErr' _pp [_patExprIerrSq, Seq.fromList _nmErrs, foErrSq _fo_]
+                                                                                                                                                                                                                                                                                                                                                                                                                       ]) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                      (case (nm_ : _dataFieldPatExprIfldL) of
+                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOfldL | _lhsOfldL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                       (case (fldInt $ dfiOffset $ panicJust "DataFieldPatExpr.Ext.ioffset" $ Map.lookup nm_ $ dtiFldMp _dataFieldPatExprIdti) of
+                                                                                                                                                                                                                                                                                                                                                                                                        { _ioffset | _ioffset `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                        (case ((FldKnownOffset nm_ _ioffset,_patExprIrpat) : _dataFieldPatExprIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                         (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val nm_
+                                                                                                                                                                                                                                                                                                                                                                                                                `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                                                                                                                                                                                                tyUsedNames _lhsImoduleNm _gTy) of
+                                                                                                                                                                                                                                                                                                                                                                                                          { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case (_dataFieldPatExprIgathTvKiVarMp `varmpUnion` _patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            (case (_dataFieldPatExprIpatCRest) of
+                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                             (case (_dataFieldPatExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                              (case (_pp : _dataFieldPatExprIppL) of
+                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                               (case (_dataFieldPatExprItrpp >< _patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                (case (_dataFieldPatExprIvalCBindL ++ _patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsOcSubst,_lhsOdti,_lhsOerrSq,_lhsOfldL,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                                                        in  sem_DataFieldPatExpr_Ext_7)) of
+                                                                                                                                                                                                                                                                                                                                 { ( sem_DataFieldPatExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                                                 ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_DataFieldPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                                 in  sem_DataFieldPatExpr_Ext_6)) of
+                                                                                                                                                                                                                                                                          { ( sem_DataFieldPatExpr_6) | True ->
+                                                                                                                                                                                                                                                                          ( _lhsOpatTyVarMp,_lhsOvalGam,sem_DataFieldPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                                                                   in  sem_DataFieldPatExpr_Ext_5)) of
+                                                                                                                                                                                                            { ( sem_DataFieldPatExpr_5) | True ->
+                                                                                                                                                                                                            ( _lhsOchrInstDeclSq,sem_DataFieldPatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                    in  sem_DataFieldPatExpr_Ext_4)) of
+                                                                                                                                                             { ( sem_DataFieldPatExpr_4) | True ->
+                                                                                                                                                             ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_DataFieldPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                     in  sem_DataFieldPatExpr_Ext_3)) of
+                                                                                              { ( sem_DataFieldPatExpr_3) | True ->
+                                                                                              ( _lhsOpredSameScopeCounter,sem_DataFieldPatExpr_3) }) }) }) }) }) }) }) }) }) })))))
+                                                            in  sem_DataFieldPatExpr_Ext_2)) of
+                                                     { ( sem_DataFieldPatExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_DataFieldPatExpr_2) }) }) }) }) }) }) })))
+                        in  sem_DataFieldPatExpr_Ext_1)) of
+                 { ( sem_DataFieldPatExpr_1) | True ->
+                 ( _lhsOrange,sem_DataFieldPatExpr_1) }) }) }) }) })
+
+sem_DataFieldPatExpr_Con :: Range ->
+                            HsName ->
+                            T_DataFieldPatExpr
+
+sem_DataFieldPatExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_DataFieldPatExpr_Con_1 :: T_DataFieldPatExpr_1
+                  sem_DataFieldPatExpr_Con_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
+                             { __tup21 | __tup21 `seq` (True) ->
+                             (case (__tup21) of
+                              { (_lhsOgUniq,_,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_DataFieldPatExpr_Con_2 :: T_DataFieldPatExpr_2
+                                          sem_DataFieldPatExpr_Con_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_DataFieldPatExpr_Con_3 :: T_DataFieldPatExpr_3
+                                                                   sem_DataFieldPatExpr_Con_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_DataFieldPatExpr_Con_4 :: T_DataFieldPatExpr_4
+                                                                                                      sem_DataFieldPatExpr_Con_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                   ((case (Seq.empty) of
+                                                                                                                     { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                     (case ((let sem_DataFieldPatExpr_Con_5 :: T_DataFieldPatExpr_5
+                                                                                                                                 sem_DataFieldPatExpr_Con_5 =
+                                                                                                                                     (\ _lhsIfiOpts
+                                                                                                                                        _lhsIknTy
+                                                                                                                                        _lhsIpatTyVarMp
+                                                                                                                                        _lhsItySigGam
+                                                                                                                                        _lhsIvalGam ->
+                                                                                                                                          _lhsIfiOpts `seq`
+                                                                                                                                          (_lhsIknTy `seq`
+                                                                                                                                           (_lhsIpatTyVarMp `seq`
+                                                                                                                                            (_lhsItySigGam `seq`
+                                                                                                                                             (_lhsIvalGam `seq`
+                                                                                                                                              ((case (__tup21) of
+                                                                                                                                                { (_,_,_lUniq2) | _lUniq2 `seq` (True) ->
+                                                                                                                                                (case (__tup21) of
+                                                                                                                                                 { (_,_lUniq,_) | _lUniq `seq` (True) ->
+                                                                                                                                                 (case (mkTyVar _lUniq) of
+                                                                                                                                                  { _tyvar | _tyvar `seq` (True) ->
+                                                                                                                                                  (case ([_lhsIknTy] `appArr` _tyvar) of
+                                                                                                                                                   { _knTyShape | _knTyShape `seq` (True) ->
+                                                                                                                                                   (case (valGamLookupTy (hsnUn nm_) _lhsIvalGam) of
+                                                                                                                                                    { __tup20 | __tup20 `seq` (True) ->
+                                                                                                                                                    (case (__tup20) of
+                                                                                                                                                     { (_gTy,_) | _gTy `seq` (True) ->
+                                                                                                                                                     (case (defaultFIEnv
+                                                                                                                                                                { feEHCOpts = _lhsIopts
+                                                                                                                                                                , fePredScope = _lhsIpredScope
+                                                                                                                                                                , feTyGam = _lhsItyGam
+                                                                                                                                                                , fePolGam = _lhsIpolGam
+                                                                                                                                                                , feRange = _range
+                                                                                                                                                                }) of
+                                                                                                                                                      { _fe | _fe `seq` (True) ->
+                                                                                                                                                      (case (fitsIn _lhsIfiOpts _fe _lUniq2 _lhsIpatTyVarMp _gTy _knTyShape) of
+                                                                                                                                                       { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                       (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                        { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIvalGam) of
+                                                                                                                                                         { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                         (case ((let sem_DataFieldPatExpr_Con_6 :: T_DataFieldPatExpr_6
+                                                                                                                                                                     sem_DataFieldPatExpr_Con_6 =
+                                                                                                                                                                         (\ _lhsIchrStore
+                                                                                                                                                                            _lhsIclDfGam
+                                                                                                                                                                            _lhsItvKiVarMp
+                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                            _lhsItyVarMp
+                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                              _lhsIchrStore `seq`
+                                                                                                                                                                              (_lhsIclDfGam `seq`
+                                                                                                                                                                               (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                 (_lhsItyVarMp `seq`
+                                                                                                                                                                                  (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                   ((case (Map.empty) of
+                                                                                                                                                                                     { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                     (case (Map.empty) of
+                                                                                                                                                                                      { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                      (case (emptyGam) of
+                                                                                                                                                                                       { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIknTy) of
+                                                                                                                                                                                        { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                        (case (_ty) of
+                                                                                                                                                                                         { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsItyVarMp) of
+                                                                                                                                                                                          { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                          (case ((let sem_DataFieldPatExpr_Con_7 :: T_DataFieldPatExpr_7
+                                                                                                                                                                                                      sem_DataFieldPatExpr_Con_7 =
+                                                                                                                                                                                                          (\ _lhsIcSubst
+                                                                                                                                                                                                             _lhsIceParentNm
+                                                                                                                                                                                                             _lhsIchrEvidBindMp
+                                                                                                                                                                                                             _lhsIchrScopeBindMp
+                                                                                                                                                                                                             _lhsIfinTyVarMp
+                                                                                                                                                                                                             _lhsIfinValGam
+                                                                                                                                                                                                             _lhsImoduleNm
+                                                                                                                                                                                                             _lhsIrangeMp
+                                                                                                                                                                                                             _lhsIsysfEnv
+                                                                                                                                                                                                             _lhsItr
+                                                                                                                                                                                                             _lhsItySigVarMp ->
+                                                                                                                                                                                                               _lhsIcSubst `seq`
+                                                                                                                                                                                                               (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                 (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                   (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                    (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                     (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                       (_lhsItr `seq`
+                                                                                                                                                                                                                        (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                         ((case (Seq.empty) of
+                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                           (case (_lhsIcSubst) of
+                                                                                                                                                                                                                            { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                            (case (let (_,t,_) = valGamTyOfDataCon nm_ _lhsIvalGam
+                                                                                                                                                                                                                                   in  panicJust "DataFieldPatExpr.dgi" $ dataGamDgiOfTy t _lhsIdataGam) of
+                                                                                                                                                                                                                             { _dgi | _dgi `seq` (True) ->
+                                                                                                                                                                                                                             (case (dgiDtiOfCon nm_ _dgi) of
+                                                                                                                                                                                                                              { _dti | _dti `seq` (True) ->
+                                                                                                                                                                                                                              (case (_dti) of
+                                                                                                                                                                                                                               { _lhsOdti | _lhsOdti `seq` (True) ->
+                                                                                                                                                                                                                               (case (__tup20) of
+                                                                                                                                                                                                                                { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                (case (pp nm_) of
+                                                                                                                                                                                                                                 { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                 (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs, foErrSq _fo_]) of
+                                                                                                                                                                                                                                  { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                   { _lhsOfldL | _lhsOfldL `seq` (True) ->
+                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                    { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                    (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val (hsnUn nm_)
+                                                                                                                                                                                                                                           `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                           tyUsedNames _lhsImoduleNm _gTy) of
+                                                                                                                                                                                                                                     { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                     (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                      (case (emptyVarMp) of
+                                                                                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                       (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                        { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_pp) of
+                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                          { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                          (case (trppEmpty) of
+                                                                                                                                                                                                                                           { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                                                                                            { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsOcSubst,_lhsOdti,_lhsOerrSq,_lhsOfldL,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                  in  sem_DataFieldPatExpr_Con_7)) of
+                                                                                                                                                                                           { ( sem_DataFieldPatExpr_7) | True ->
+                                                                                                                                                                                           ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_DataFieldPatExpr_7) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                 in  sem_DataFieldPatExpr_Con_6)) of
+                                                                                                                                                          { ( sem_DataFieldPatExpr_6) | True ->
+                                                                                                                                                          ( _lhsOpatTyVarMp,_lhsOvalGam,sem_DataFieldPatExpr_6) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                             in  sem_DataFieldPatExpr_Con_5)) of
+                                                                                                                      { ( sem_DataFieldPatExpr_5) | True ->
+                                                                                                                      ( _lhsOchrInstDeclSq,sem_DataFieldPatExpr_5) }) })))))))
+                                                                                                  in  sem_DataFieldPatExpr_Con_4)) of
+                                                                                           { ( sem_DataFieldPatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_DataFieldPatExpr_4) }) }) }) }) }) })))))))))))
                                                                in  sem_DataFieldPatExpr_Con_3)) of
                                                         { ( sem_DataFieldPatExpr_3) | True ->
                                                         ( _lhsOpredSameScopeCounter,sem_DataFieldPatExpr_3) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_DataFields.hs b/src/UHC/Light/Compiler/EH/MainAG_DataFields.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_DataFields.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_DataFields.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -134,6 +134,7 @@
          predScope            : PredScope
          rangeMp              : RangeMp
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tvKiVarMp            : VarMp
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
@@ -148,6 +149,7 @@
          gathTvKiVarMp        : VarMp
          pp                   : PP_Doc
          ppL                  : [PP_Doc]
+         trpp                 : TrPP
    alternatives:
       alternative Cons:
          child hd             : DataField 
@@ -281,6 +283,7 @@
                                                                                                                                                                                                    _lhsIpredScope
                                                                                                                                                                                                    _lhsIrangeMp
                                                                                                                                                                                                    _lhsIsysfEnv
+                                                                                                                                                                                                   _lhsItr
                                                                                                                                                                                                    _lhsItvKiVarMp
                                                                                                                                                                                                    _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                    _lhsItyTyGlobFreeTvarS
@@ -302,114 +305,121 @@
                                                                                                                                                                                                                  (_lhsIpredScope `seq`
                                                                                                                                                                                                                   (_lhsIrangeMp `seq`
                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                         ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                           { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                            { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                             { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                              { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                               { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                 { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                 (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                  { _tlOpredScope | _tlOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                  (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                   { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                   (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                    { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                    (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                     { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                     (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                      { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                       { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                        { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                         { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                         (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                          { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                          (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                           { _hdOpredScope | _hdOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                           (case (_lhsIopts) of
-                                                                                                                                                                                                                                            { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                             { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                             (case (_lhsIlexLev) of
-                                                                                                                                                                                                                                              { _hdOlexLev | _hdOlexLev `seq` (True) ->
-                                                                                                                                                                                                                                              (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                               { _hdOkiGam | _hdOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                 { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                  { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                   { _hdOclGam | _hdOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                    { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                     { _hdOchrStore | _hdOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                      { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                       { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (hd_5 _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOchrStore _hdOclDfGam _hdOclGam _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOlexLev _hdOmoduleNm _hdOopts _hdOpatTyVarMp _hdOpredScope _hdOrangeMp _hdOsysfEnv _hdOtvKiVarMp _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                        { ( _hdIallErrSq,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpatTyVarMp,_hdIpp) | True ->
-                                                                                                                                                                                                                                                            (case (_hdIpatTyVarMp) of
-                                                                                                                                                                                                                                                             { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_lhsIopts) of
-                                                                                                                                                                                                                                                              { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                               { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsIlexLev) of
-                                                                                                                                                                                                                                                                { _tlOlexLev | _tlOlexLev `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                 { _tlOkiGam | _tlOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                  { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                   { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                    { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                     { _tlOclGam | _tlOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                      { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                       { _tlOchrStore | _tlOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                        { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                         { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (tl_5 _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOchrStore _tlOclDfGam _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOkiGam _tlOlexLev _tlOmoduleNm _tlOopts _tlOpatTyVarMp _tlOpredScope _tlOrangeMp _tlOsysfEnv _tlOtvKiVarMp _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                          { ( _tlIallErrSq,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpatTyVarMp,_tlIpp,_tlIppL) | True ->
-                                                                                                                                                                                                                                                                              (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                  { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_tlIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                   { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_hdIpp >-< _tlIpp) of
-                                                                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_hdIpp : _tlIppL) of
-                                                                                                                                                                                                                                                                                     { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTyVarMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))))
+                                                                                                                                                                                                                    (_lhsItr `seq`
+                                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                        (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                            { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                            (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                             { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                              { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                               { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsItr) of
+                                                                                                                                                                                                                                 { _tlOtr | _tlOtr `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                  { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                   { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                   (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                    { _tlOpredScope | _tlOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                    (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                     { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                     (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                      { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                       { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                        { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                         { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                         (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                          { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                           { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                            { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                            (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                             { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                             (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                              { _hdOpredScope | _hdOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                              (case (_lhsIopts) of
+                                                                                                                                                                                                                                               { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                                                                                                                               (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                (case (_lhsIlexLev) of
+                                                                                                                                                                                                                                                 { _hdOlexLev | _hdOlexLev `seq` (True) ->
+                                                                                                                                                                                                                                                 (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                  { _hdOkiGam | _hdOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                   { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                    { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                     { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                      { _hdOclGam | _hdOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                       { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                        { _hdOchrStore | _hdOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                         { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                          { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (hd_5 _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOchrStore _hdOclDfGam _hdOclGam _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOlexLev _hdOmoduleNm _hdOopts _hdOpatTyVarMp _hdOpredScope _hdOrangeMp _hdOsysfEnv _hdOtr _hdOtvKiVarMp _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                           { ( _hdIallErrSq,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIpatTyVarMp,_hdIpp,_hdItrpp) | True ->
+                                                                                                                                                                                                                                                               (case (_hdIpatTyVarMp) of
+                                                                                                                                                                                                                                                                { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                 { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                  { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIlexLev) of
+                                                                                                                                                                                                                                                                   { _tlOlexLev | _tlOlexLev `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                    { _tlOkiGam | _tlOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                     { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                      { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                       { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                        { _tlOclGam | _tlOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                         { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                          { _tlOchrStore | _tlOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                           { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                            { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (tl_5 _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOchrStore _tlOclDfGam _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOkiGam _tlOlexLev _tlOmoduleNm _tlOopts _tlOpatTyVarMp _tlOpredScope _tlOrangeMp _tlOsysfEnv _tlOtr _tlOtvKiVarMp _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { ( _tlIallErrSq,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIpatTyVarMp,_tlIpp,_tlIppL,_tlItrpp) | True ->
+                                                                                                                                                                                                                                                                                 (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                                                                                                                                                                                   { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                    { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                     { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_tlIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                      { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_hdIpp : _tlIppL) of
+                                                                                                                                                                                                                                                                                        { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                                                                                                                                         { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTyVarMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))))
                                                                                                                                                                                         in  sem_DataFields_Cons_5)) of
                                                                                                                                                                                  { ( sem_DataFields_5) | True ->
                                                                                                                                                                                  ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOkiL,_lhsOkiVarMp,sem_DataFields_5) }) }) }) }) }) }) }) }) }) }) }) }) }))))
@@ -499,6 +509,7 @@
                                                                                                                                  _lhsIpredScope
                                                                                                                                  _lhsIrangeMp
                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                 _lhsItr
                                                                                                                                  _lhsItvKiVarMp
                                                                                                                                  _lhsItyKiGlobFreeTvarS
                                                                                                                                  _lhsItyTyGlobFreeTvarS
@@ -520,26 +531,29 @@
                                                                                                                                                (_lhsIpredScope `seq`
                                                                                                                                                 (_lhsIrangeMp `seq`
                                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                                  (_lhsItvKiVarMp `seq`
-                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                       ((case (Seq.empty) of
-                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                         (case (Seq.empty) of
-                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                          (case (Map.empty) of
-                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                           (case (emptyVarMp) of
-                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                            (case (_lhsIpatTyVarMp) of
-                                                                                                                                                             { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                             (case (empty) of
-                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                              (case ([]) of
-                                                                                                                                                               { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                               ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTyVarMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) })))))))))))))))))))))))
+                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                   (_lhsItvKiVarMp `seq`
+                                                                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                      (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                        ((case (Seq.empty) of
+                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                          (case (Seq.empty) of
+                                                                                                                                                           { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                           (case (Map.empty) of
+                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                            (case (emptyVarMp) of
+                                                                                                                                                             { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                             (case (_lhsIpatTyVarMp) of
+                                                                                                                                                              { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                              (case (empty) of
+                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                               (case ([]) of
+                                                                                                                                                                { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                (case (trppEmpty) of
+                                                                                                                                                                 { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                 ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatTyVarMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }))))))))))))))))))))))))
                                                                                                                       in  sem_DataFields_Nil_5)) of
                                                                                                                { ( sem_DataFields_5) | True ->
                                                                                                                ( _lhsOfldSelGam,_lhsOfldUpdGam,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOkiL,_lhsOkiVarMp,sem_DataFields_5) }) }) }) }) }) }) }))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_Decl.hs b/src/UHC/Light/Compiler/EH/MainAG_Decl.hs
# file too large to diff: src/UHC/Light/Compiler/EH/MainAG_Decl.hs
diff --git a/src/UHC/Light/Compiler/EH/MainAG_Decls.hs b/src/UHC/Light/Compiler/EH/MainAG_Decls.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_Decls.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_Decls.hs
@@ -19,970 +19,997 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- Decls -------------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attributes:
-         gUniq                : UID
-         gathKiSigGam         : TyGam
-      synthesized attribute:
-         hasInstDecl          : Bool
-   visit 2:
-      inherited attribute:
-         kiGam                : KiGam
-      synthesized attribute:
-         gathTyKiSigGam       : TyKiGam
-   visit 3:
-      inherited attribute:
-         lexLev               : Int
-      chained attribute:
-         predSameScopeCounter : Int
-   visit 4:
-      inherited attribute:
-         tyKiSigGam           : TyKiGam
-      chained attribute:
-         patTyGam             : TyGam
-   visit 5:
-      inherited attribute:
-         tyGam                : TyGam
-      chained attributes:
-         patTyKiGam           : TyKiGam
-         tyTyVarMp            : VarMp
-   visit 6:
-      inherited attribute:
-         tyKiGam              : TyKiGam
-      chained attributes:
-         patKiVarMp           : VarMp
-         patPolGam            : PolGam
-   visit 7:
-      inherited attributes:
-         mbKnPolCtx           : Maybe Polarity
-         opts                 : EHCOpts
-         polGam               : PolGam
-         predScope            : PredScope
-         tyKiGlobFreeTvarS    : TyVarIdS
-      chained attributes:
-         kiVarMp              : VarMp
-         polVarMp             : VarMp
-      synthesized attribute:
-         generDataInfoL       : [GenerDataInfo]
-   visit 8:
-      chained attribute:
-         patClGam1            : ClGam
-   visit 9:
-      inherited attributes:
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         tyTyTySigFreeTvarS   : TyVarIdS
-      chained attribute:
-         patClGam2            : ClGam
-   visit 10:
-      inherited attribute:
-         clGam                : ClGam
-      chained attribute:
-         gathDataGam          : DataGam
-      synthesized attributes:
-         gathDeclDataGam      : DataGam
-         gathTySigGam         : ValGam
-         gathTySigVarMp       : VarMp
-   visit 11:
-      inherited attribute:
-         dataGam              : DataGam
-      synthesized attributes:
-         chrClassDeclSq       : Seq.FastSeq (CHRClassDecl Pred RedHowAnnotation)
-         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
-         gathClDfGam          : ClassDefaultGam
-   visit 12:
-      inherited attributes:
-         tvKiVarMp            : VarMp
-         tySigGam             : ValGam
-         tySigVarMp           : VarMp
-      chained attributes:
-         patTyVarMp           : VarMp
-         patValGam            : ValGam
-   visit 13:
-      inherited attributes:
-         chrStore             : ScopedPredStore
-         clDfGam              : ClassDefaultGam
-         tyTyGlobFreeTvarS    : TyVarIdS
-         valGam               : ValGam
-         valTyGlobFreeTvarS   : TyVarIdS
-      chained attribute:
-         tyVarMp              : VarMp
-      synthesized attributes:
-         gathCnstrMp          : CHRPredOccCnstrMp
-         gathRangeMp          : RangeMp
-         intlTyKiGam          : TyKiGam
-         noLetQuantTyVarIdS   : TyVarIdS
-         scopeGam             : ScopeGam
-   visit 14:
-      inherited attributes:
-         chrEvidBindMp        : EvidKeyToCBindMap
-         chrScopeBindMp       : PredScopeToCBindMap
-         finTyVarMp           : VarMp
-         finValGam            : ValGam
-         isStrict             : Bool
-         kiSigGam             : TyGam
-         moduleNm             : HsName
-         rangeMp              : RangeMp
-         sysfEnv              : ToSysfEnv
-      chained attribute:
-         cSubst               : CSubst
-      synthesized attributes:
-         allErrSq             : ErrSq
-         bangEvalL            : [CExpr -> CExpr]
-         errSq                : ErrSq
-         ffeCBindL            : CBindL
-         ffiCBindL            : CBindL
-         gathHiddenExports    : Seq.Seq (HsName,IdOccKind)
-         gathLamMp            : LamMp
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         gathTvKiVarMp        : VarMp
-         orphanS              : Set.Set HsName
-         pp                   : PP_Doc
-         tyCBindL             : CBindL
-         valCBindL            : CBindL
-   alternatives:
-      alternative Cons:
-         child hd             : Decl 
-         child tl             : Decls 
-         visit 14:
-            local errPP       : _
-      alternative Nil:
--}
-sem_Decls_Cons :: T_Decl ->
-                  T_Decls ->
-                  T_Decls
-
-sem_Decls_Cons hd_ tl_ | hd_ `seq` (tl_ `seq` (True)) =
-    (case (tl_) of
-     { ( _tlIrange,tl_1) | True ->
-         (case (hd_) of
-          { ( _hdIrange,hd_1) | True ->
-              (case (_hdIrange `rangeUnion` _tlIrange) of
-               { _lhsOrange | _lhsOrange `seq` (True) ->
-               (case ((let sem_Decls_Cons_1 :: T_Decls_1
-                           sem_Decls_Cons_1 =
-                               (\ _lhsIgUniq
-                                  _lhsIgathKiSigGam ->
-                                    _lhsIgUniq `seq`
-                                    (_lhsIgathKiSigGam `seq`
-                                     ((case (_lhsIgUniq) of
-                                       { _hdOgUniq | _hdOgUniq `seq` (True) ->
-                                       (case (_lhsIgathKiSigGam) of
-                                        { _hdOgathKiSigGam | _hdOgathKiSigGam `seq` (True) ->
-                                        (case (hd_1 _hdOgUniq _hdOgathKiSigGam) of
-                                         { ( _hdIgUniq,_hdIgathKiSigGam,_hdIhasInstDecl,hd_2) | True ->
-                                             (case (_hdIgUniq) of
-                                              { _tlOgUniq | _tlOgUniq `seq` (True) ->
-                                              (case (_hdIgathKiSigGam) of
-                                               { _tlOgathKiSigGam | _tlOgathKiSigGam `seq` (True) ->
-                                               (case (tl_1 _tlOgUniq _tlOgathKiSigGam) of
-                                                { ( _tlIgUniq,_tlIgathKiSigGam,_tlIhasInstDecl,tl_2) | True ->
-                                                    (case (_tlIgUniq) of
-                                                     { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                     (case (_tlIgathKiSigGam) of
-                                                      { _lhsOgathKiSigGam | _lhsOgathKiSigGam `seq` (True) ->
-                                                      (case (_hdIhasInstDecl || _tlIhasInstDecl) of
-                                                       { _lhsOhasInstDecl | _lhsOhasInstDecl `seq` (True) ->
-                                                       (case ((let sem_Decls_Cons_2 :: T_Decls_2
-                                                                   sem_Decls_Cons_2 =
-                                                                       (\ _lhsIkiGam ->
-                                                                            _lhsIkiGam `seq`
-                                                                            ((case (_lhsIkiGam) of
-                                                                              { _tlOkiGam | _tlOkiGam `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _hdOkiGam | _hdOkiGam `seq` (True) ->
-                                                                               (case (tl_2 _tlOkiGam) of
-                                                                                { ( _tlIgathTyKiSigGam,tl_3) | True ->
-                                                                                    (case (hd_2 _hdOkiGam) of
-                                                                                     { ( _hdIgathTyKiSigGam,hd_3) | True ->
-                                                                                         (case (_hdIgathTyKiSigGam `gamUnion` _tlIgathTyKiSigGam) of
-                                                                                          { _lhsOgathTyKiSigGam | _lhsOgathTyKiSigGam `seq` (True) ->
-                                                                                          (case ((let sem_Decls_Cons_3 :: T_Decls_3
-                                                                                                      sem_Decls_Cons_3 =
-                                                                                                          (\ _lhsIlexLev
-                                                                                                             _lhsIpredSameScopeCounter ->
-                                                                                                               _lhsIlexLev `seq`
-                                                                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                                                                  { _hdOpredSameScopeCounter | _hdOpredSameScopeCounter `seq` (True) ->
-                                                                                                                  (case (_lhsIlexLev) of
-                                                                                                                   { _hdOlexLev | _hdOlexLev `seq` (True) ->
-                                                                                                                   (case (hd_3 _hdOlexLev _hdOpredSameScopeCounter) of
-                                                                                                                    { ( _hdIpredSameScopeCounter,hd_4) | True ->
-                                                                                                                        (case (_hdIpredSameScopeCounter) of
-                                                                                                                         { _tlOpredSameScopeCounter | _tlOpredSameScopeCounter `seq` (True) ->
-                                                                                                                         (case (_lhsIlexLev) of
-                                                                                                                          { _tlOlexLev | _tlOlexLev `seq` (True) ->
-                                                                                                                          (case (tl_3 _tlOlexLev _tlOpredSameScopeCounter) of
-                                                                                                                           { ( _tlIpredSameScopeCounter,tl_4) | True ->
-                                                                                                                               (case (_tlIpredSameScopeCounter) of
-                                                                                                                                { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                                                                (case ((let sem_Decls_Cons_4 :: T_Decls_4
-                                                                                                                                            sem_Decls_Cons_4 =
-                                                                                                                                                (\ _lhsIpatTyGam
-                                                                                                                                                   _lhsItyKiSigGam ->
-                                                                                                                                                     _lhsIpatTyGam `seq`
-                                                                                                                                                     (_lhsItyKiSigGam `seq`
-                                                                                                                                                      ((case (_lhsItyKiSigGam) of
-                                                                                                                                                        { _tlOtyKiSigGam | _tlOtyKiSigGam `seq` (True) ->
-                                                                                                                                                        (case (_lhsItyKiSigGam) of
-                                                                                                                                                         { _hdOtyKiSigGam | _hdOtyKiSigGam `seq` (True) ->
-                                                                                                                                                         (case (_lhsIpatTyGam) of
-                                                                                                                                                          { _hdOpatTyGam | _hdOpatTyGam `seq` (True) ->
-                                                                                                                                                          (case (hd_4 _hdOpatTyGam _hdOtyKiSigGam) of
-                                                                                                                                                           { ( _hdIpatTyGam,hd_5) | True ->
-                                                                                                                                                               (case (_hdIpatTyGam) of
-                                                                                                                                                                { _tlOpatTyGam | _tlOpatTyGam `seq` (True) ->
-                                                                                                                                                                (case (tl_4 _tlOpatTyGam _tlOtyKiSigGam) of
-                                                                                                                                                                 { ( _tlIpatTyGam,tl_5) | True ->
-                                                                                                                                                                     (case (_tlIpatTyGam) of
-                                                                                                                                                                      { _lhsOpatTyGam | _lhsOpatTyGam `seq` (True) ->
-                                                                                                                                                                      (case ((let sem_Decls_Cons_5 :: T_Decls_5
-                                                                                                                                                                                  sem_Decls_Cons_5 =
-                                                                                                                                                                                      (\ _lhsIpatTyKiGam
-                                                                                                                                                                                         _lhsItyGam
-                                                                                                                                                                                         _lhsItyTyVarMp ->
-                                                                                                                                                                                           _lhsIpatTyKiGam `seq`
-                                                                                                                                                                                           (_lhsItyGam `seq`
-                                                                                                                                                                                            (_lhsItyTyVarMp `seq`
-                                                                                                                                                                                             ((case (_lhsItyGam) of
-                                                                                                                                                                                               { _tlOtyGam | _tlOtyGam `seq` (True) ->
-                                                                                                                                                                                               (case (_lhsItyGam) of
-                                                                                                                                                                                                { _hdOtyGam | _hdOtyGam `seq` (True) ->
-                                                                                                                                                                                                (case (_lhsIpatTyKiGam) of
-                                                                                                                                                                                                 { _hdOpatTyKiGam | _hdOpatTyKiGam `seq` (True) ->
-                                                                                                                                                                                                 (case (_lhsItyTyVarMp) of
-                                                                                                                                                                                                  { _hdOtyTyVarMp | _hdOtyTyVarMp `seq` (True) ->
-                                                                                                                                                                                                  (case (hd_5 _hdOpatTyKiGam _hdOtyGam _hdOtyTyVarMp) of
-                                                                                                                                                                                                   { ( _hdIpatTyKiGam,_hdItyTyVarMp,hd_6) | True ->
-                                                                                                                                                                                                       (case (_hdIpatTyKiGam) of
-                                                                                                                                                                                                        { _tlOpatTyKiGam | _tlOpatTyKiGam `seq` (True) ->
-                                                                                                                                                                                                        (case (_hdItyTyVarMp) of
-                                                                                                                                                                                                         { _tlOtyTyVarMp | _tlOtyTyVarMp `seq` (True) ->
-                                                                                                                                                                                                         (case (tl_5 _tlOpatTyKiGam _tlOtyGam _tlOtyTyVarMp) of
-                                                                                                                                                                                                          { ( _tlIpatTyKiGam,_tlItyTyVarMp,tl_6) | True ->
-                                                                                                                                                                                                              (case (_tlIpatTyKiGam) of
-                                                                                                                                                                                                               { _lhsOpatTyKiGam | _lhsOpatTyKiGam `seq` (True) ->
-                                                                                                                                                                                                               (case (_tlItyTyVarMp) of
-                                                                                                                                                                                                                { _lhsOtyTyVarMp | _lhsOtyTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                (case ((let sem_Decls_Cons_6 :: T_Decls_6
-                                                                                                                                                                                                                            sem_Decls_Cons_6 =
-                                                                                                                                                                                                                                (\ _lhsIpatKiVarMp
-                                                                                                                                                                                                                                   _lhsIpatPolGam
-                                                                                                                                                                                                                                   _lhsItyKiGam ->
-                                                                                                                                                                                                                                     _lhsIpatKiVarMp `seq`
-                                                                                                                                                                                                                                     (_lhsIpatPolGam `seq`
-                                                                                                                                                                                                                                      (_lhsItyKiGam `seq`
-                                                                                                                                                                                                                                       ((case (_lhsItyKiGam) of
-                                                                                                                                                                                                                                         { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                         (case (_lhsItyKiGam) of
-                                                                                                                                                                                                                                          { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                          (case (_lhsIpatKiVarMp) of
-                                                                                                                                                                                                                                           { _hdOpatKiVarMp | _hdOpatKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                           (case (_lhsIpatPolGam) of
-                                                                                                                                                                                                                                            { _hdOpatPolGam | _hdOpatPolGam `seq` (True) ->
-                                                                                                                                                                                                                                            (case (hd_6 _hdOpatKiVarMp _hdOpatPolGam _hdOtyKiGam) of
-                                                                                                                                                                                                                                             { ( _hdIpatKiVarMp,_hdIpatPolGam,hd_7) | True ->
-                                                                                                                                                                                                                                                 (case (_hdIpatKiVarMp) of
-                                                                                                                                                                                                                                                  { _tlOpatKiVarMp | _tlOpatKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (_hdIpatPolGam) of
-                                                                                                                                                                                                                                                   { _tlOpatPolGam | _tlOpatPolGam `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (tl_6 _tlOpatKiVarMp _tlOpatPolGam _tlOtyKiGam) of
-                                                                                                                                                                                                                                                    { ( _tlIpatKiVarMp,_tlIpatPolGam,tl_7) | True ->
-                                                                                                                                                                                                                                                        (case (_tlIpatKiVarMp) of
-                                                                                                                                                                                                                                                         { _lhsOpatKiVarMp | _lhsOpatKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (_tlIpatPolGam) of
-                                                                                                                                                                                                                                                          { _lhsOpatPolGam | _lhsOpatPolGam `seq` (True) ->
-                                                                                                                                                                                                                                                          (case ((let sem_Decls_Cons_7 :: T_Decls_7
-                                                                                                                                                                                                                                                                      sem_Decls_Cons_7 =
-                                                                                                                                                                                                                                                                          (\ _lhsIkiVarMp
-                                                                                                                                                                                                                                                                             _lhsImbKnPolCtx
-                                                                                                                                                                                                                                                                             _lhsIopts
-                                                                                                                                                                                                                                                                             _lhsIpolGam
-                                                                                                                                                                                                                                                                             _lhsIpolVarMp
-                                                                                                                                                                                                                                                                             _lhsIpredScope
-                                                                                                                                                                                                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                               _lhsIkiVarMp `seq`
-                                                                                                                                                                                                                                                                               (_lhsImbKnPolCtx `seq`
-                                                                                                                                                                                                                                                                                (_lhsIopts `seq`
-                                                                                                                                                                                                                                                                                 (_lhsIpolGam `seq`
-                                                                                                                                                                                                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                                                                                                                                                                                                   (_lhsIpredScope `seq`
-                                                                                                                                                                                                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                     ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                       { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                                                                        { _tlOpredScope | _tlOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                         { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIpredScope) of
-                                                                                                                                                                                                                                                                                          { _hdOpredScope | _hdOpredScope `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_lhsIpolVarMp) of
-                                                                                                                                                                                                                                                                                           { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_lhsIpolGam) of
-                                                                                                                                                                                                                                                                                            { _hdOpolGam | _hdOpolGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                             { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_lhsImbKnPolCtx) of
-                                                                                                                                                                                                                                                                                              { _hdOmbKnPolCtx | _hdOmbKnPolCtx `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                                                                                                                                                                                                               { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (hd_7 _hdOkiVarMp _hdOmbKnPolCtx _hdOopts _hdOpolGam _hdOpolVarMp _hdOpredScope _hdOtyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                { ( _hdIgenerDataInfoL,_hdIkiVarMp,_hdIpolVarMp,hd_8) | True ->
-                                                                                                                                                                                                                                                                                                    (case (_hdIpolVarMp) of
-                                                                                                                                                                                                                                                                                                     { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (_lhsIpolGam) of
-                                                                                                                                                                                                                                                                                                      { _tlOpolGam | _tlOpolGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                       { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (_lhsImbKnPolCtx) of
-                                                                                                                                                                                                                                                                                                        { _tlOmbKnPolCtx | _tlOmbKnPolCtx `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (_hdIkiVarMp) of
-                                                                                                                                                                                                                                                                                                         { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                         (case (tl_7 _tlOkiVarMp _tlOmbKnPolCtx _tlOopts _tlOpolGam _tlOpolVarMp _tlOpredScope _tlOtyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                          { ( _tlIgenerDataInfoL,_tlIkiVarMp,_tlIpolVarMp,tl_8) | True ->
-                                                                                                                                                                                                                                                                                                              (case (_hdIgenerDataInfoL ++ _tlIgenerDataInfoL) of
-                                                                                                                                                                                                                                                                                                               { _lhsOgenerDataInfoL | _lhsOgenerDataInfoL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_tlIkiVarMp) of
-                                                                                                                                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_tlIpolVarMp) of
-                                                                                                                                                                                                                                                                                                                 { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case ((let sem_Decls_Cons_8 :: T_Decls_8
-                                                                                                                                                                                                                                                                                                                             sem_Decls_Cons_8 =
-                                                                                                                                                                                                                                                                                                                                 (\ _lhsIpatClGam1 ->
-                                                                                                                                                                                                                                                                                                                                      _lhsIpatClGam1 `seq`
-                                                                                                                                                                                                                                                                                                                                      ((case (_lhsIpatClGam1) of
-                                                                                                                                                                                                                                                                                                                                        { _hdOpatClGam1 | _hdOpatClGam1 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (hd_8 _hdOpatClGam1) of
-                                                                                                                                                                                                                                                                                                                                         { ( _hdIpatClGam1,hd_9) | True ->
-                                                                                                                                                                                                                                                                                                                                             (case (_hdIpatClGam1) of
-                                                                                                                                                                                                                                                                                                                                              { _tlOpatClGam1 | _tlOpatClGam1 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (tl_8 _tlOpatClGam1) of
-                                                                                                                                                                                                                                                                                                                                               { ( _tlIpatClGam1,tl_9) | True ->
-                                                                                                                                                                                                                                                                                                                                                   (case (_tlIpatClGam1) of
-                                                                                                                                                                                                                                                                                                                                                    { _lhsOpatClGam1 | _lhsOpatClGam1 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case ((let sem_Decls_Cons_9 :: T_Decls_9
-                                                                                                                                                                                                                                                                                                                                                                sem_Decls_Cons_9 =
-                                                                                                                                                                                                                                                                                                                                                                    (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                                                                                                                                       _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                                                                                                                                       _lhsIpatClGam2
-                                                                                                                                                                                                                                                                                                                                                                       _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                                                                                                                                                                                                                         _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                         (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                          (_lhsIpatClGam2 `seq`
-                                                                                                                                                                                                                                                                                                                                                                           (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                                                                            ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                              { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                               { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIpatClGam2) of
-                                                                                                                                                                                                                                                                                                                                                                                { _hdOpatClGam2 | _hdOpatClGam2 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                                                                 { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                  { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                  (case (hd_9 _hdOfinKiVarMp _hdOfinTyKiGam _hdOpatClGam2 _hdOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                   { ( _hdIpatClGam2,hd_10) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIpatClGam2) of
-                                                                                                                                                                                                                                                                                                                                                                                        { _tlOpatClGam2 | _tlOpatClGam2 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                                                                         { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                          { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (tl_9 _tlOfinKiVarMp _tlOfinTyKiGam _tlOpatClGam2 _tlOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                           { ( _tlIpatClGam2,tl_10) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case (_tlIpatClGam2) of
-                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOpatClGam2 | _lhsOpatClGam2 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                (case ((let sem_Decls_Cons_10 :: T_Decls_10
-                                                                                                                                                                                                                                                                                                                                                                                                            sem_Decls_Cons_10 =
-                                                                                                                                                                                                                                                                                                                                                                                                                (\ _lhsIclGam
-                                                                                                                                                                                                                                                                                                                                                                                                                   _lhsIgathDataGam ->
-                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsIclGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                     (_lhsIgathDataGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                      ((case (_lhsIgathDataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                        { _hdOgathDataGam | _hdOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                         { _hdOclGam | _hdOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                         (case (hd_10 _hdOclGam _hdOgathDataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                          { ( _hdIgathDataGam,_hdIgathDeclDataGam,_hdIgathTySigGam,_hdIgathTySigVarMp,hd_11) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_hdIgathDataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                               { _tlOgathDataGam | _tlOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                { _tlOclGam | _tlOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                (case (tl_10 _tlOclGam _tlOgathDataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                 { ( _tlIgathDataGam,_tlIgathDeclDataGam,_tlIgathTySigGam,_tlIgathTySigVarMp,tl_11) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_tlIgathDataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_hdIgathDeclDataGam `gamUnion` _tlIgathDeclDataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathDeclDataGam | _lhsOgathDeclDataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIgathTySigGam `gamAddGam` _tlIgathTySigGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathTySigGam | _lhsOgathTySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_hdIgathTySigVarMp `varUpd` _tlIgathTySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathTySigVarMp | _lhsOgathTySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                         (case ((let sem_Decls_Cons_11 :: T_Decls_11
-                                                                                                                                                                                                                                                                                                                                                                                                                                                     sem_Decls_Cons_11 =
-                                                                                                                                                                                                                                                                                                                                                                                                                                                         (\ _lhsIdataGam ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              _lhsIdataGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              ((case (_lhsIdataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _tlOdataGam | _tlOdataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (tl_11 _tlOdataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { ( _tlIchrClassDeclSq,_tlIchrInstDeclSq,_tlIgathClDfGam,tl_12) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _hdOdataGam | _hdOdataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (hd_11 _hdOdataGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { ( _hdIchrClassDeclSq,_hdIchrInstDeclSq,_hdIgathClDfGam,hd_12) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_hdIchrClassDeclSq `Seq.union` _tlIchrClassDeclSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOchrClassDeclSq | _lhsOchrClassDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_hdIchrInstDeclSq `Seq.union` _tlIchrInstDeclSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_hdIgathClDfGam `gamUnion` _tlIgathClDfGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOgathClDfGam | _lhsOgathClDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case ((let sem_Decls_Cons_12 :: T_Decls_12
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          sem_Decls_Cons_12 =
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (\ _lhsIpatTyVarMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsIpatValGam
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsItySigGam
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (_lhsIpatValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (_lhsItySigGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ((case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _tlOtySigVarMp | _tlOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _tlOtySigGam | _tlOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _hdOtySigVarMp | _hdOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _hdOtySigGam | _hdOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIpatValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _hdOpatValGam | _hdOpatValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (hd_12 _hdOpatTyVarMp _hdOpatValGam _hdOtvKiVarMp _hdOtySigGam _hdOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { ( _hdIpatTyVarMp,_hdIpatValGam,hd_13) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_hdIpatValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _tlOpatValGam | _tlOpatValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_hdIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (tl_12 _tlOpatTyVarMp _tlOpatValGam _tlOtvKiVarMp _tlOtySigGam _tlOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { ( _tlIpatTyVarMp,_tlIpatValGam,tl_13) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_tlIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_tlIpatValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOpatValGam | _lhsOpatValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case ((let sem_Decls_Cons_13 :: T_Decls_13
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          sem_Decls_Cons_13 =
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsIclDfGam
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsItyVarMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsIvalGam
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _tlOvalGam | _tlOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _hdOvalGam | _hdOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _hdOtyVarMp | _hdOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _hdOchrStore | _hdOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (hd_13 _hdOchrStore _hdOclDfGam _hdOtyTyGlobFreeTvarS _hdOtyVarMp _hdOvalGam _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { ( _hdIgathCnstrMp,_hdIgathRangeMp,_hdIintlTyKiGam,_hdInoLetQuantTyVarIdS,_hdIscopeGam,_hdItyVarMp,hd_14) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_hdItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _tlOtyVarMp | _tlOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _tlOchrStore | _tlOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (tl_13 _tlOchrStore _tlOclDfGam _tlOtyTyGlobFreeTvarS _tlOtyVarMp _tlOvalGam _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { ( _tlIgathCnstrMp,_tlIgathRangeMp,_tlIintlTyKiGam,_tlInoLetQuantTyVarIdS,_tlIscopeGam,_tlItyVarMp,tl_14) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_hdIgathCnstrMp `cnstrMpUnion` _tlIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_hdIgathRangeMp `Map.union` _tlIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_hdIintlTyKiGam `gamUnion` _tlIintlTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_hdInoLetQuantTyVarIdS `Set.union` _tlInoLetQuantTyVarIdS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_hdIscopeGam `gamUnion` _tlIscopeGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_tlItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case ((let sem_Decls_Cons_14 :: T_Decls_14
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 sem_Decls_Cons_14 =
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIisStrict
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIkiSigGam
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (_lhsIisStrict `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (_lhsIkiSigGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _tlOfinValGam | _tlOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _hdOfinValGam | _hdOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIkiSigGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _tlOkiSigGam | _tlOkiSigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIisStrict) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _tlOisStrict | _tlOisStrict `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _hdOcSubst | _hdOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIkiSigGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _hdOkiSigGam | _hdOkiSigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIisStrict) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _hdOisStrict | _hdOisStrict `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (hd_14 _hdOcSubst _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOfinTyVarMp _hdOfinValGam _hdOisStrict _hdOkiSigGam _hdOmoduleNm _hdOrangeMp _hdOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { ( _hdIallErrSq,_hdIbangEvalL,_hdIcSubst,_hdIerrSq,_hdIffeCBindL,_hdIffiCBindL,_hdIgathHiddenExports,_hdIgathLamMp,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIorphanS,_hdIpp,_hdItyCBindL,_hdIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_hdIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _tlOcSubst | _tlOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (tl_14 _tlOcSubst _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOfinTyVarMp _tlOfinValGam _tlOisStrict _tlOkiSigGam _tlOmoduleNm _tlOrangeMp _tlOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { ( _tlIallErrSq,_tlIbangEvalL,_tlIcSubst,_tlIerrSq,_tlIffeCBindL,_tlIffiCBindL,_tlIgathHiddenExports,_tlIgathLamMp,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIorphanS,_tlIpp,_tlItyCBindL,_tlIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (Seq.unions [_hdIerrSq, _hdIallErrSq, _tlIallErrSq]) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_hdIbangEvalL ++ _tlIbangEvalL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsObangEvalL | _lhsObangEvalL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_tlIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (Seq.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_hdIffeCBindL ++ _tlIffeCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIffiCBindL ++ _tlIffiCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_hdIgathHiddenExports `Seq.union` _tlIgathHiddenExports) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathHiddenExports | _lhsOgathHiddenExports `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_hdIgathLamMp `lamMpUnionBindAspMp` _tlIgathLamMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathLamMp | _lhsOgathLamMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_hdIorphanS `Set.union` _tlIorphanS) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOorphanS | _lhsOorphanS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (ppErrsSq _hdIerrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _errPP | _errPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_hdIpp
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     >-< _errPP
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     >-< _tlIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_hdItyCBindL ++ _tlItyCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_hdIvalCBindL ++ _tlIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsObangEvalL,_lhsOcSubst,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathHiddenExports,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOorphanS,_lhsOpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in  sem_Decls_Cons_14)) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { ( sem_Decls_14) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOintlTyKiGam,_lhsOnoLetQuantTyVarIdS,_lhsOscopeGam,_lhsOtyVarMp,sem_Decls_14) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in  sem_Decls_Cons_13)) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { ( sem_Decls_13) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ( _lhsOpatTyVarMp,_lhsOpatValGam,sem_Decls_13) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in  sem_Decls_Cons_12)) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { ( sem_Decls_12) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ( _lhsOchrClassDeclSq,_lhsOchrInstDeclSq,_lhsOgathClDfGam,sem_Decls_12) }) }) }) }) }) }) }) })))
-                                                                                                                                                                                                                                                                                                                                                                                                                                                 in  sem_Decls_Cons_11)) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                          { ( sem_Decls_11) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                          ( _lhsOgathDataGam,_lhsOgathDeclDataGam,_lhsOgathTySigGam,_lhsOgathTySigVarMp,sem_Decls_11) }) }) }) }) }) }) }) }) }) }) }))))
-                                                                                                                                                                                                                                                                                                                                                                                                        in  sem_Decls_Cons_10)) of
-                                                                                                                                                                                                                                                                                                                                                                                                 { ( sem_Decls_10) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                 ( _lhsOpatClGam2,sem_Decls_10) }) }) }) }) }) }) }) }) }) }) }) }))))))
-                                                                                                                                                                                                                                                                                                                                                            in  sem_Decls_Cons_9)) of
-                                                                                                                                                                                                                                                                                                                                                     { ( sem_Decls_9) | True ->
-                                                                                                                                                                                                                                                                                                                                                     ( _lhsOpatClGam1,sem_Decls_9) }) }) }) }) }) })))
-                                                                                                                                                                                                                                                                                                                         in  sem_Decls_Cons_8)) of
-                                                                                                                                                                                                                                                                                                                  { ( sem_Decls_8) | True ->
-                                                                                                                                                                                                                                                                                                                  ( _lhsOgenerDataInfoL,_lhsOkiVarMp,_lhsOpolVarMp,sem_Decls_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))
-                                                                                                                                                                                                                                                                  in  sem_Decls_Cons_7)) of
-                                                                                                                                                                                                                                                           { ( sem_Decls_7) | True ->
-                                                                                                                                                                                                                                                           ( _lhsOpatKiVarMp,_lhsOpatPolGam,sem_Decls_7) }) }) }) }) }) }) }) }) }) }) })))))
-                                                                                                                                                                                                                        in  sem_Decls_Cons_6)) of
-                                                                                                                                                                                                                 { ( sem_Decls_6) | True ->
-                                                                                                                                                                                                                 ( _lhsOpatTyKiGam,_lhsOtyTyVarMp,sem_Decls_6) }) }) }) }) }) }) }) }) }) }) })))))
-                                                                                                                                                                              in  sem_Decls_Cons_5)) of
-                                                                                                                                                                       { ( sem_Decls_5) | True ->
-                                                                                                                                                                       ( _lhsOpatTyGam,sem_Decls_5) }) }) }) }) }) }) }) }))))
-                                                                                                                                        in  sem_Decls_Cons_4)) of
-                                                                                                                                 { ( sem_Decls_4) | True ->
-                                                                                                                                 ( _lhsOpredSameScopeCounter,sem_Decls_4) }) }) }) }) }) }) }) }))))
-                                                                                                  in  sem_Decls_Cons_3)) of
-                                                                                           { ( sem_Decls_3) | True ->
-                                                                                           ( _lhsOgathTyKiSigGam,sem_Decls_3) }) }) }) }) }) })))
-                                                               in  sem_Decls_Cons_2)) of
-                                                        { ( sem_Decls_2) | True ->
-                                                        ( _lhsOgUniq,_lhsOgathKiSigGam,_lhsOhasInstDecl,sem_Decls_2) }) }) }) }) }) }) }) }) }) }))))
-                       in  sem_Decls_Cons_1)) of
-                { ( sem_Decls_1) | True ->
-                ( _lhsOrange,sem_Decls_1) }) }) }) })
-
-sem_Decls_Nil :: T_Decls
-
-sem_Decls_Nil =
-    (case (emptyRange) of
-     { _lhsOrange | _lhsOrange `seq` (True) ->
-     (case ((let sem_Decls_Nil_1 :: T_Decls_1
-                 sem_Decls_Nil_1 =
-                     (\ _lhsIgUniq
-                        _lhsIgathKiSigGam ->
-                          _lhsIgUniq `seq`
-                          (_lhsIgathKiSigGam `seq`
-                           ((case (_lhsIgUniq) of
-                             { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                             (case (_lhsIgathKiSigGam) of
-                              { _lhsOgathKiSigGam | _lhsOgathKiSigGam `seq` (True) ->
-                              (case (False) of
-                               { _lhsOhasInstDecl | _lhsOhasInstDecl `seq` (True) ->
-                               (case ((let sem_Decls_Nil_2 :: T_Decls_2
-                                           sem_Decls_Nil_2 =
-                                               (\ _lhsIkiGam ->
-                                                    _lhsIkiGam `seq`
-                                                    ((case (emptyGam) of
-                                                      { _lhsOgathTyKiSigGam | _lhsOgathTyKiSigGam `seq` (True) ->
-                                                      (case ((let sem_Decls_Nil_3 :: T_Decls_3
-                                                                  sem_Decls_Nil_3 =
-                                                                      (\ _lhsIlexLev
-                                                                         _lhsIpredSameScopeCounter ->
-                                                                           _lhsIlexLev `seq`
-                                                                           (_lhsIpredSameScopeCounter `seq`
-                                                                            ((case (_lhsIpredSameScopeCounter) of
-                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                              (case ((let sem_Decls_Nil_4 :: T_Decls_4
-                                                                                          sem_Decls_Nil_4 =
-                                                                                              (\ _lhsIpatTyGam
-                                                                                                 _lhsItyKiSigGam ->
-                                                                                                   _lhsIpatTyGam `seq`
-                                                                                                   (_lhsItyKiSigGam `seq`
-                                                                                                    ((case (_lhsIpatTyGam) of
-                                                                                                      { _lhsOpatTyGam | _lhsOpatTyGam `seq` (True) ->
-                                                                                                      (case ((let sem_Decls_Nil_5 :: T_Decls_5
-                                                                                                                  sem_Decls_Nil_5 =
-                                                                                                                      (\ _lhsIpatTyKiGam
-                                                                                                                         _lhsItyGam
-                                                                                                                         _lhsItyTyVarMp ->
-                                                                                                                           _lhsIpatTyKiGam `seq`
-                                                                                                                           (_lhsItyGam `seq`
-                                                                                                                            (_lhsItyTyVarMp `seq`
-                                                                                                                             ((case (_lhsIpatTyKiGam) of
-                                                                                                                               { _lhsOpatTyKiGam | _lhsOpatTyKiGam `seq` (True) ->
-                                                                                                                               (case (_lhsItyTyVarMp) of
-                                                                                                                                { _lhsOtyTyVarMp | _lhsOtyTyVarMp `seq` (True) ->
-                                                                                                                                (case ((let sem_Decls_Nil_6 :: T_Decls_6
-                                                                                                                                            sem_Decls_Nil_6 =
-                                                                                                                                                (\ _lhsIpatKiVarMp
-                                                                                                                                                   _lhsIpatPolGam
-                                                                                                                                                   _lhsItyKiGam ->
-                                                                                                                                                     _lhsIpatKiVarMp `seq`
-                                                                                                                                                     (_lhsIpatPolGam `seq`
-                                                                                                                                                      (_lhsItyKiGam `seq`
-                                                                                                                                                       ((case (_lhsIpatKiVarMp) of
-                                                                                                                                                         { _lhsOpatKiVarMp | _lhsOpatKiVarMp `seq` (True) ->
-                                                                                                                                                         (case (_lhsIpatPolGam) of
-                                                                                                                                                          { _lhsOpatPolGam | _lhsOpatPolGam `seq` (True) ->
-                                                                                                                                                          (case ((let sem_Decls_Nil_7 :: T_Decls_7
-                                                                                                                                                                      sem_Decls_Nil_7 =
-                                                                                                                                                                          (\ _lhsIkiVarMp
-                                                                                                                                                                             _lhsImbKnPolCtx
-                                                                                                                                                                             _lhsIopts
-                                                                                                                                                                             _lhsIpolGam
-                                                                                                                                                                             _lhsIpolVarMp
-                                                                                                                                                                             _lhsIpredScope
-                                                                                                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                                                                                                               _lhsIkiVarMp `seq`
-                                                                                                                                                                               (_lhsImbKnPolCtx `seq`
-                                                                                                                                                                                (_lhsIopts `seq`
-                                                                                                                                                                                 (_lhsIpolGam `seq`
-                                                                                                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                                                                                                   (_lhsIpredScope `seq`
-                                                                                                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                     ((case ([]) of
-                                                                                                                                                                                       { _lhsOgenerDataInfoL | _lhsOgenerDataInfoL `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsIkiVarMp) of
-                                                                                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                        (case (_lhsIpolVarMp) of
-                                                                                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                                                         (case ((let sem_Decls_Nil_8 :: T_Decls_8
-                                                                                                                                                                                                     sem_Decls_Nil_8 =
-                                                                                                                                                                                                         (\ _lhsIpatClGam1 ->
-                                                                                                                                                                                                              _lhsIpatClGam1 `seq`
-                                                                                                                                                                                                              ((case (_lhsIpatClGam1) of
-                                                                                                                                                                                                                { _lhsOpatClGam1 | _lhsOpatClGam1 `seq` (True) ->
-                                                                                                                                                                                                                (case ((let sem_Decls_Nil_9 :: T_Decls_9
-                                                                                                                                                                                                                            sem_Decls_Nil_9 =
-                                                                                                                                                                                                                                (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                   _lhsIfinTyKiGam
-                                                                                                                                                                                                                                   _lhsIpatClGam2
-                                                                                                                                                                                                                                   _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                                                                                     _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                     (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                      (_lhsIpatClGam2 `seq`
-                                                                                                                                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                        ((case (_lhsIpatClGam2) of
-                                                                                                                                                                                                                                          { _lhsOpatClGam2 | _lhsOpatClGam2 `seq` (True) ->
-                                                                                                                                                                                                                                          (case ((let sem_Decls_Nil_10 :: T_Decls_10
-                                                                                                                                                                                                                                                      sem_Decls_Nil_10 =
-                                                                                                                                                                                                                                                          (\ _lhsIclGam
-                                                                                                                                                                                                                                                             _lhsIgathDataGam ->
-                                                                                                                                                                                                                                                               _lhsIclGam `seq`
-                                                                                                                                                                                                                                                               (_lhsIgathDataGam `seq`
-                                                                                                                                                                                                                                                                ((case (_lhsIgathDataGam) of
-                                                                                                                                                                                                                                                                  { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (emptyGam) of
-                                                                                                                                                                                                                                                                   { _lhsOgathDeclDataGam | _lhsOgathDeclDataGam `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (emptyGam) of
-                                                                                                                                                                                                                                                                    { _lhsOgathTySigGam | _lhsOgathTySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (emptyVarMp) of
-                                                                                                                                                                                                                                                                     { _lhsOgathTySigVarMp | _lhsOgathTySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case ((let sem_Decls_Nil_11 :: T_Decls_11
-                                                                                                                                                                                                                                                                                 sem_Decls_Nil_11 =
-                                                                                                                                                                                                                                                                                     (\ _lhsIdataGam ->
-                                                                                                                                                                                                                                                                                          _lhsIdataGam `seq`
-                                                                                                                                                                                                                                                                                          ((case (Seq.empty) of
-                                                                                                                                                                                                                                                                                            { _lhsOchrClassDeclSq | _lhsOchrClassDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (Seq.empty) of
-                                                                                                                                                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (emptyGam) of
-                                                                                                                                                                                                                                                                                              { _lhsOgathClDfGam | _lhsOgathClDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case ((let sem_Decls_Nil_12 :: T_Decls_12
-                                                                                                                                                                                                                                                                                                          sem_Decls_Nil_12 =
-                                                                                                                                                                                                                                                                                                              (\ _lhsIpatTyVarMp
-                                                                                                                                                                                                                                                                                                                 _lhsIpatValGam
-                                                                                                                                                                                                                                                                                                                 _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                                                                 _lhsItySigGam
-                                                                                                                                                                                                                                                                                                                 _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                   _lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                   (_lhsIpatValGam `seq`
-                                                                                                                                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                                     (_lhsItySigGam `seq`
-                                                                                                                                                                                                                                                                                                                      (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                       ((case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                                                         { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsIpatValGam) of
-                                                                                                                                                                                                                                                                                                                          { _lhsOpatValGam | _lhsOpatValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case ((let sem_Decls_Nil_13 :: T_Decls_13
-                                                                                                                                                                                                                                                                                                                                      sem_Decls_Nil_13 =
-                                                                                                                                                                                                                                                                                                                                          (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                                                                                             _lhsIclDfGam
-                                                                                                                                                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                                                             _lhsItyVarMp
-                                                                                                                                                                                                                                                                                                                                             _lhsIvalGam
-                                                                                                                                                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                                                                               _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                                                                                               (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                                                 (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                  (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                                                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                                                    ((case (Map.empty) of
-                                                                                                                                                                                                                                                                                                                                                      { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (Map.empty) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (emptyGam) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (Set.empty) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (emptyGam) of
-                                                                                                                                                                                                                                                                                                                                                          { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case ((let sem_Decls_Nil_14 :: T_Decls_14
-                                                                                                                                                                                                                                                                                                                                                                       sem_Decls_Nil_14 =
-                                                                                                                                                                                                                                                                                                                                                                           (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIisStrict
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIkiSigGam
-                                                                                                                                                                                                                                                                                                                                                                              _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                                              _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                                                                                _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                                                (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                 (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                  (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                   (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                    (_lhsIisStrict `seq`
-                                                                                                                                                                                                                                                                                                                                                                                     (_lhsIkiSigGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                        (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                                                         ((case (Seq.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _lhsObangEvalL | _lhsObangEvalL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (Seq.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                (case (Seq.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathHiddenExports | _lhsOgathHiddenExports `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                 (case (Map.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathLamMp | _lhsOgathLamMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                  (case (Map.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (emptyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (Set.empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOorphanS | _lhsOorphanS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     (case (empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsObangEvalL,_lhsOcSubst,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathHiddenExports,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOorphanS,_lhsOpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                                                                                   in  sem_Decls_Nil_14)) of
-                                                                                                                                                                                                                                                                                                                                                            { ( sem_Decls_14) | True ->
-                                                                                                                                                                                                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOintlTyKiGam,_lhsOnoLetQuantTyVarIdS,_lhsOscopeGam,_lhsOtyVarMp,sem_Decls_14) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                                                                                                  in  sem_Decls_Nil_13)) of
-                                                                                                                                                                                                                                                                                                                           { ( sem_Decls_13) | True ->
-                                                                                                                                                                                                                                                                                                                           ( _lhsOpatTyVarMp,_lhsOpatValGam,sem_Decls_13) }) }) })))))))
-                                                                                                                                                                                                                                                                                                      in  sem_Decls_Nil_12)) of
-                                                                                                                                                                                                                                                                                               { ( sem_Decls_12) | True ->
-                                                                                                                                                                                                                                                                                               ( _lhsOchrClassDeclSq,_lhsOchrInstDeclSq,_lhsOgathClDfGam,sem_Decls_12) }) }) }) })))
-                                                                                                                                                                                                                                                                             in  sem_Decls_Nil_11)) of
-                                                                                                                                                                                                                                                                      { ( sem_Decls_11) | True ->
-                                                                                                                                                                                                                                                                      ( _lhsOgathDataGam,_lhsOgathDeclDataGam,_lhsOgathTySigGam,_lhsOgathTySigVarMp,sem_Decls_11) }) }) }) }) }))))
-                                                                                                                                                                                                                                                  in  sem_Decls_Nil_10)) of
-                                                                                                                                                                                                                                           { ( sem_Decls_10) | True ->
-                                                                                                                                                                                                                                           ( _lhsOpatClGam2,sem_Decls_10) }) }))))))
-                                                                                                                                                                                                                        in  sem_Decls_Nil_9)) of
-                                                                                                                                                                                                                 { ( sem_Decls_9) | True ->
-                                                                                                                                                                                                                 ( _lhsOpatClGam1,sem_Decls_9) }) })))
-                                                                                                                                                                                                 in  sem_Decls_Nil_8)) of
-                                                                                                                                                                                          { ( sem_Decls_8) | True ->
-                                                                                                                                                                                          ( _lhsOgenerDataInfoL,_lhsOkiVarMp,_lhsOpolVarMp,sem_Decls_8) }) }) }) })))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- Decls -------------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attributes:
+         gUniq                : UID
+         gathKiSigGam         : TyGam
+      synthesized attribute:
+         hasInstDecl          : Bool
+   visit 2:
+      inherited attribute:
+         kiGam                : KiGam
+      synthesized attribute:
+         gathTyKiSigGam       : TyKiGam
+   visit 3:
+      inherited attribute:
+         lexLev               : Int
+      chained attribute:
+         predSameScopeCounter : Int
+   visit 4:
+      inherited attribute:
+         tyKiSigGam           : TyKiGam
+      chained attribute:
+         patTyGam             : TyGam
+   visit 5:
+      inherited attribute:
+         tyGam                : TyGam
+      chained attributes:
+         patTyKiGam           : TyKiGam
+         tyTyVarMp            : VarMp
+   visit 6:
+      inherited attribute:
+         tyKiGam              : TyKiGam
+      chained attributes:
+         patKiVarMp           : VarMp
+         patPolGam            : PolGam
+   visit 7:
+      inherited attributes:
+         mbKnPolCtx           : Maybe Polarity
+         opts                 : EHCOpts
+         polGam               : PolGam
+         predScope            : PredScope
+         tyKiGlobFreeTvarS    : TyVarIdS
+      chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
+         kiVarMp              : VarMp
+         polVarMp             : VarMp
+      synthesized attribute:
+         generDataInfoL       : [GenerDataInfo]
+   visit 8:
+      chained attribute:
+         patClGam1            : ClGam
+   visit 9:
+      inherited attributes:
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         tyTyTySigFreeTvarS   : TyVarIdS
+      chained attribute:
+         patClGam2            : ClGam
+   visit 10:
+      inherited attribute:
+         clGam                : ClGam
+      chained attribute:
+         gathDataGam          : DataGam
+      synthesized attributes:
+         gathDeclDataGam      : DataGam
+         gathTySigGam         : ValGam
+         gathTySigVarMp       : VarMp
+   visit 11:
+      inherited attribute:
+         dataGam              : DataGam
+      synthesized attributes:
+         chrClassDeclSq       : Seq.FastSeq (CHRClassDecl Pred RedHowAnnotation)
+         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
+         gathClDfGam          : ClassDefaultGam
+   visit 12:
+      inherited attributes:
+         tvKiVarMp            : VarMp
+         tySigGam             : ValGam
+         tySigVarMp           : VarMp
+      chained attributes:
+         patTyVarMp           : VarMp
+         patValGam            : ValGam
+   visit 13:
+      inherited attributes:
+         chrStore             : ScopedPredStore
+         clDfGam              : ClassDefaultGam
+         tyTyGlobFreeTvarS    : TyVarIdS
+         valGam               : ValGam
+         valTyGlobFreeTvarS   : TyVarIdS
+      chained attribute:
+         tyVarMp              : VarMp
+      synthesized attributes:
+         gathCnstrMp          : CHRPredOccCnstrMp
+         gathRangeMp          : RangeMp
+         intlTyKiGam          : TyKiGam
+         noLetQuantTyVarIdS   : TyVarIdS
+         scopeGam             : ScopeGam
+   visit 14:
+      inherited attributes:
+         chrEvidBindMp        : EvidKeyToCBindMap
+         chrScopeBindMp       : PredScopeToCBindMap
+         finTyVarMp           : VarMp
+         finValGam            : ValGam
+         isStrict             : Bool
+         kiSigGam             : TyGam
+         moduleNm             : HsName
+         rangeMp              : RangeMp
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attribute:
+         cSubst               : CSubst
+      synthesized attributes:
+         allErrSq             : ErrSq
+         bangEvalL            : [CExpr -> CExpr]
+         errSq                : ErrSq
+         ffeCBindL            : CBindL
+         ffiCBindL            : CBindL
+         gathHiddenExports    : Seq.Seq (HsName,IdOccKind)
+         gathLamMp            : LamMp
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         gathTvKiVarMp        : VarMp
+         orphanS              : Set.Set HsName
+         pp                   : PP_Doc
+         trpp                 : TrPP
+         tyCBindL             : CBindL
+         valCBindL            : CBindL
+   alternatives:
+      alternative Cons:
+         child hd             : Decl 
+         child tl             : Decls 
+         visit 14:
+            local errPP       : _
+      alternative Nil:
+-}
+sem_Decls_Cons :: T_Decl ->
+                  T_Decls ->
+                  T_Decls
+
+sem_Decls_Cons hd_ tl_ | hd_ `seq` (tl_ `seq` (True)) =
+    (case (tl_) of
+     { ( _tlIrange,tl_1) | True ->
+         (case (hd_) of
+          { ( _hdIrange,hd_1) | True ->
+              (case (_hdIrange `rangeUnion` _tlIrange) of
+               { _lhsOrange | _lhsOrange `seq` (True) ->
+               (case ((let sem_Decls_Cons_1 :: T_Decls_1
+                           sem_Decls_Cons_1 =
+                               (\ _lhsIgUniq
+                                  _lhsIgathKiSigGam ->
+                                    _lhsIgUniq `seq`
+                                    (_lhsIgathKiSigGam `seq`
+                                     ((case (_lhsIgUniq) of
+                                       { _hdOgUniq | _hdOgUniq `seq` (True) ->
+                                       (case (_lhsIgathKiSigGam) of
+                                        { _hdOgathKiSigGam | _hdOgathKiSigGam `seq` (True) ->
+                                        (case (hd_1 _hdOgUniq _hdOgathKiSigGam) of
+                                         { ( _hdIgUniq,_hdIgathKiSigGam,_hdIhasInstDecl,hd_2) | True ->
+                                             (case (_hdIgUniq) of
+                                              { _tlOgUniq | _tlOgUniq `seq` (True) ->
+                                              (case (_hdIgathKiSigGam) of
+                                               { _tlOgathKiSigGam | _tlOgathKiSigGam `seq` (True) ->
+                                               (case (tl_1 _tlOgUniq _tlOgathKiSigGam) of
+                                                { ( _tlIgUniq,_tlIgathKiSigGam,_tlIhasInstDecl,tl_2) | True ->
+                                                    (case (_tlIgUniq) of
+                                                     { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                     (case (_tlIgathKiSigGam) of
+                                                      { _lhsOgathKiSigGam | _lhsOgathKiSigGam `seq` (True) ->
+                                                      (case (_hdIhasInstDecl || _tlIhasInstDecl) of
+                                                       { _lhsOhasInstDecl | _lhsOhasInstDecl `seq` (True) ->
+                                                       (case ((let sem_Decls_Cons_2 :: T_Decls_2
+                                                                   sem_Decls_Cons_2 =
+                                                                       (\ _lhsIkiGam ->
+                                                                            _lhsIkiGam `seq`
+                                                                            ((case (_lhsIkiGam) of
+                                                                              { _tlOkiGam | _tlOkiGam `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _hdOkiGam | _hdOkiGam `seq` (True) ->
+                                                                               (case (tl_2 _tlOkiGam) of
+                                                                                { ( _tlIgathTyKiSigGam,tl_3) | True ->
+                                                                                    (case (hd_2 _hdOkiGam) of
+                                                                                     { ( _hdIgathTyKiSigGam,hd_3) | True ->
+                                                                                         (case (_hdIgathTyKiSigGam `gamUnion` _tlIgathTyKiSigGam) of
+                                                                                          { _lhsOgathTyKiSigGam | _lhsOgathTyKiSigGam `seq` (True) ->
+                                                                                          (case ((let sem_Decls_Cons_3 :: T_Decls_3
+                                                                                                      sem_Decls_Cons_3 =
+                                                                                                          (\ _lhsIlexLev
+                                                                                                             _lhsIpredSameScopeCounter ->
+                                                                                                               _lhsIlexLev `seq`
+                                                                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                                                                  { _hdOpredSameScopeCounter | _hdOpredSameScopeCounter `seq` (True) ->
+                                                                                                                  (case (_lhsIlexLev) of
+                                                                                                                   { _hdOlexLev | _hdOlexLev `seq` (True) ->
+                                                                                                                   (case (hd_3 _hdOlexLev _hdOpredSameScopeCounter) of
+                                                                                                                    { ( _hdIpredSameScopeCounter,hd_4) | True ->
+                                                                                                                        (case (_hdIpredSameScopeCounter) of
+                                                                                                                         { _tlOpredSameScopeCounter | _tlOpredSameScopeCounter `seq` (True) ->
+                                                                                                                         (case (_lhsIlexLev) of
+                                                                                                                          { _tlOlexLev | _tlOlexLev `seq` (True) ->
+                                                                                                                          (case (tl_3 _tlOlexLev _tlOpredSameScopeCounter) of
+                                                                                                                           { ( _tlIpredSameScopeCounter,tl_4) | True ->
+                                                                                                                               (case (_tlIpredSameScopeCounter) of
+                                                                                                                                { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                                                                (case ((let sem_Decls_Cons_4 :: T_Decls_4
+                                                                                                                                            sem_Decls_Cons_4 =
+                                                                                                                                                (\ _lhsIpatTyGam
+                                                                                                                                                   _lhsItyKiSigGam ->
+                                                                                                                                                     _lhsIpatTyGam `seq`
+                                                                                                                                                     (_lhsItyKiSigGam `seq`
+                                                                                                                                                      ((case (_lhsItyKiSigGam) of
+                                                                                                                                                        { _tlOtyKiSigGam | _tlOtyKiSigGam `seq` (True) ->
+                                                                                                                                                        (case (_lhsItyKiSigGam) of
+                                                                                                                                                         { _hdOtyKiSigGam | _hdOtyKiSigGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIpatTyGam) of
+                                                                                                                                                          { _hdOpatTyGam | _hdOpatTyGam `seq` (True) ->
+                                                                                                                                                          (case (hd_4 _hdOpatTyGam _hdOtyKiSigGam) of
+                                                                                                                                                           { ( _hdIpatTyGam,hd_5) | True ->
+                                                                                                                                                               (case (_hdIpatTyGam) of
+                                                                                                                                                                { _tlOpatTyGam | _tlOpatTyGam `seq` (True) ->
+                                                                                                                                                                (case (tl_4 _tlOpatTyGam _tlOtyKiSigGam) of
+                                                                                                                                                                 { ( _tlIpatTyGam,tl_5) | True ->
+                                                                                                                                                                     (case (_tlIpatTyGam) of
+                                                                                                                                                                      { _lhsOpatTyGam | _lhsOpatTyGam `seq` (True) ->
+                                                                                                                                                                      (case ((let sem_Decls_Cons_5 :: T_Decls_5
+                                                                                                                                                                                  sem_Decls_Cons_5 =
+                                                                                                                                                                                      (\ _lhsIpatTyKiGam
+                                                                                                                                                                                         _lhsItyGam
+                                                                                                                                                                                         _lhsItyTyVarMp ->
+                                                                                                                                                                                           _lhsIpatTyKiGam `seq`
+                                                                                                                                                                                           (_lhsItyGam `seq`
+                                                                                                                                                                                            (_lhsItyTyVarMp `seq`
+                                                                                                                                                                                             ((case (_lhsIpatTyKiGam) of
+                                                                                                                                                                                               { _hdOpatTyKiGam | _hdOpatTyKiGam `seq` (True) ->
+                                                                                                                                                                                               (case (_lhsItyTyVarMp) of
+                                                                                                                                                                                                { _hdOtyTyVarMp | _hdOtyTyVarMp `seq` (True) ->
+                                                                                                                                                                                                (case (_lhsItyGam) of
+                                                                                                                                                                                                 { _hdOtyGam | _hdOtyGam `seq` (True) ->
+                                                                                                                                                                                                 (case (hd_5 _hdOpatTyKiGam _hdOtyGam _hdOtyTyVarMp) of
+                                                                                                                                                                                                  { ( _hdIpatTyKiGam,_hdItyTyVarMp,hd_6) | True ->
+                                                                                                                                                                                                      (case (_hdIpatTyKiGam) of
+                                                                                                                                                                                                       { _tlOpatTyKiGam | _tlOpatTyKiGam `seq` (True) ->
+                                                                                                                                                                                                       (case (_hdItyTyVarMp) of
+                                                                                                                                                                                                        { _tlOtyTyVarMp | _tlOtyTyVarMp `seq` (True) ->
+                                                                                                                                                                                                        (case (_lhsItyGam) of
+                                                                                                                                                                                                         { _tlOtyGam | _tlOtyGam `seq` (True) ->
+                                                                                                                                                                                                         (case (tl_5 _tlOpatTyKiGam _tlOtyGam _tlOtyTyVarMp) of
+                                                                                                                                                                                                          { ( _tlIpatTyKiGam,_tlItyTyVarMp,tl_6) | True ->
+                                                                                                                                                                                                              (case (_tlIpatTyKiGam) of
+                                                                                                                                                                                                               { _lhsOpatTyKiGam | _lhsOpatTyKiGam `seq` (True) ->
+                                                                                                                                                                                                               (case (_tlItyTyVarMp) of
+                                                                                                                                                                                                                { _lhsOtyTyVarMp | _lhsOtyTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                (case ((let sem_Decls_Cons_6 :: T_Decls_6
+                                                                                                                                                                                                                            sem_Decls_Cons_6 =
+                                                                                                                                                                                                                                (\ _lhsIpatKiVarMp
+                                                                                                                                                                                                                                   _lhsIpatPolGam
+                                                                                                                                                                                                                                   _lhsItyKiGam ->
+                                                                                                                                                                                                                                     _lhsIpatKiVarMp `seq`
+                                                                                                                                                                                                                                     (_lhsIpatPolGam `seq`
+                                                                                                                                                                                                                                      (_lhsItyKiGam `seq`
+                                                                                                                                                                                                                                       ((case (_lhsItyKiGam) of
+                                                                                                                                                                                                                                         { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                                                                                                                                                          { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                          (case (_lhsIpatKiVarMp) of
+                                                                                                                                                                                                                                           { _hdOpatKiVarMp | _hdOpatKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                           (case (_lhsIpatPolGam) of
+                                                                                                                                                                                                                                            { _hdOpatPolGam | _hdOpatPolGam `seq` (True) ->
+                                                                                                                                                                                                                                            (case (hd_6 _hdOpatKiVarMp _hdOpatPolGam _hdOtyKiGam) of
+                                                                                                                                                                                                                                             { ( _hdIpatKiVarMp,_hdIpatPolGam,hd_7) | True ->
+                                                                                                                                                                                                                                                 (case (_hdIpatKiVarMp) of
+                                                                                                                                                                                                                                                  { _tlOpatKiVarMp | _tlOpatKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                  (case (_hdIpatPolGam) of
+                                                                                                                                                                                                                                                   { _tlOpatPolGam | _tlOpatPolGam `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (tl_6 _tlOpatKiVarMp _tlOpatPolGam _tlOtyKiGam) of
+                                                                                                                                                                                                                                                    { ( _tlIpatKiVarMp,_tlIpatPolGam,tl_7) | True ->
+                                                                                                                                                                                                                                                        (case (_tlIpatKiVarMp) of
+                                                                                                                                                                                                                                                         { _lhsOpatKiVarMp | _lhsOpatKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_tlIpatPolGam) of
+                                                                                                                                                                                                                                                          { _lhsOpatPolGam | _lhsOpatPolGam `seq` (True) ->
+                                                                                                                                                                                                                                                          (case ((let sem_Decls_Cons_7 :: T_Decls_7
+                                                                                                                                                                                                                                                                      sem_Decls_Cons_7 =
+                                                                                                                                                                                                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                                                                                                                                                                                                             _lhsIkiVarMp
+                                                                                                                                                                                                                                                                             _lhsImbKnPolCtx
+                                                                                                                                                                                                                                                                             _lhsIopts
+                                                                                                                                                                                                                                                                             _lhsIpolGam
+                                                                                                                                                                                                                                                                             _lhsIpolVarMp
+                                                                                                                                                                                                                                                                             _lhsIpredScope
+                                                                                                                                                                                                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                                                                                                                                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                                                                                                                                                                                                (_lhsImbKnPolCtx `seq`
+                                                                                                                                                                                                                                                                                 (_lhsIopts `seq`
+                                                                                                                                                                                                                                                                                  (_lhsIpolGam `seq`
+                                                                                                                                                                                                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                                                                                                                                                                                                    (_lhsIpredScope `seq`
+                                                                                                                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                        { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                                                                         { _tlOpredScope | _tlOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                          { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsIpredScope) of
+                                                                                                                                                                                                                                                                                           { _hdOpredScope | _hdOpredScope `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_lhsIpolVarMp) of
+                                                                                                                                                                                                                                                                                            { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_lhsIpolGam) of
+                                                                                                                                                                                                                                                                                             { _hdOpolGam | _hdOpolGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                              { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_lhsImbKnPolCtx) of
+                                                                                                                                                                                                                                                                                               { _hdOmbKnPolCtx | _hdOmbKnPolCtx `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                                                                                                                                                                                                { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                                                                                                                                                                                 { _hdOgenerDataInfoMp | _hdOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (hd_7 _hdOgenerDataInfoMp _hdOkiVarMp _hdOmbKnPolCtx _hdOopts _hdOpolGam _hdOpolVarMp _hdOpredScope _hdOtyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                  { ( _hdIgenerDataInfoL,_hdIgenerDataInfoMp,_hdIkiVarMp,_hdIpolVarMp,hd_8) | True ->
+                                                                                                                                                                                                                                                                                                      (case (_hdIpolVarMp) of
+                                                                                                                                                                                                                                                                                                       { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_lhsIpolGam) of
+                                                                                                                                                                                                                                                                                                        { _tlOpolGam | _tlOpolGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                         { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         (case (_lhsImbKnPolCtx) of
+                                                                                                                                                                                                                                                                                                          { _tlOmbKnPolCtx | _tlOmbKnPolCtx `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          (case (_hdIkiVarMp) of
+                                                                                                                                                                                                                                                                                                           { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case (_hdIgenerDataInfoMp) of
+                                                                                                                                                                                                                                                                                                            { _tlOgenerDataInfoMp | _tlOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (tl_7 _tlOgenerDataInfoMp _tlOkiVarMp _tlOmbKnPolCtx _tlOopts _tlOpolGam _tlOpolVarMp _tlOpredScope _tlOtyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                             { ( _tlIgenerDataInfoL,_tlIgenerDataInfoMp,_tlIkiVarMp,_tlIpolVarMp,tl_8) | True ->
+                                                                                                                                                                                                                                                                                                                 (case (_hdIgenerDataInfoL ++ _tlIgenerDataInfoL) of
+                                                                                                                                                                                                                                                                                                                  { _lhsOgenerDataInfoL | _lhsOgenerDataInfoL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_tlIgenerDataInfoMp) of
+                                                                                                                                                                                                                                                                                                                   { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_tlIkiVarMp) of
+                                                                                                                                                                                                                                                                                                                    { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_tlIpolVarMp) of
+                                                                                                                                                                                                                                                                                                                     { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case ((let sem_Decls_Cons_8 :: T_Decls_8
+                                                                                                                                                                                                                                                                                                                                 sem_Decls_Cons_8 =
+                                                                                                                                                                                                                                                                                                                                     (\ _lhsIpatClGam1 ->
+                                                                                                                                                                                                                                                                                                                                          _lhsIpatClGam1 `seq`
+                                                                                                                                                                                                                                                                                                                                          ((case (_lhsIpatClGam1) of
+                                                                                                                                                                                                                                                                                                                                            { _hdOpatClGam1 | _hdOpatClGam1 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (hd_8 _hdOpatClGam1) of
+                                                                                                                                                                                                                                                                                                                                             { ( _hdIpatClGam1,hd_9) | True ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_hdIpatClGam1) of
+                                                                                                                                                                                                                                                                                                                                                  { _tlOpatClGam1 | _tlOpatClGam1 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (tl_8 _tlOpatClGam1) of
+                                                                                                                                                                                                                                                                                                                                                   { ( _tlIpatClGam1,tl_9) | True ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_tlIpatClGam1) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOpatClGam1 | _lhsOpatClGam1 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case ((let sem_Decls_Cons_9 :: T_Decls_9
+                                                                                                                                                                                                                                                                                                                                                                    sem_Decls_Cons_9 =
+                                                                                                                                                                                                                                                                                                                                                                        (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                                                                                                                                           _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                                                                                                                                           _lhsIpatClGam2
+                                                                                                                                                                                                                                                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                                                                                                                                                                                                             _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                             (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                              (_lhsIpatClGam2 `seq`
+                                                                                                                                                                                                                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                                                                ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                  { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                   { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIpatClGam2) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _hdOpatClGam2 | _hdOpatClGam2 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                                                                     { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                      { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                      (case (hd_9 _hdOfinKiVarMp _hdOfinTyKiGam _hdOpatClGam2 _hdOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                       { ( _hdIpatClGam2,hd_10) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (_hdIpatClGam2) of
+                                                                                                                                                                                                                                                                                                                                                                                            { _tlOpatClGam2 | _tlOpatClGam2 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                                                                             { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (tl_9 _tlOfinKiVarMp _tlOfinTyKiGam _tlOpatClGam2 _tlOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                               { ( _tlIpatClGam2,tl_10) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (_tlIpatClGam2) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOpatClGam2 | _lhsOpatClGam2 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case ((let sem_Decls_Cons_10 :: T_Decls_10
+                                                                                                                                                                                                                                                                                                                                                                                                                sem_Decls_Cons_10 =
+                                                                                                                                                                                                                                                                                                                                                                                                                    (\ _lhsIclGam
+                                                                                                                                                                                                                                                                                                                                                                                                                       _lhsIgathDataGam ->
+                                                                                                                                                                                                                                                                                                                                                                                                                         _lhsIclGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                         (_lhsIgathDataGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                          ((case (_lhsIgathDataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                            { _hdOgathDataGam | _hdOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                             { _hdOclGam | _hdOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                             (case (hd_10 _hdOclGam _hdOgathDataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                              { ( _hdIgathDataGam,_hdIgathDeclDataGam,_hdIgathTySigGam,_hdIgathTySigVarMp,hd_11) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_hdIgathDataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                   { _tlOgathDataGam | _tlOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                    { _tlOclGam | _tlOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (tl_10 _tlOclGam _tlOgathDataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                     { ( _tlIgathDataGam,_tlIgathDeclDataGam,_tlIgathTySigGam,_tlIgathTySigVarMp,tl_11) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_tlIgathDataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_hdIgathDeclDataGam `gamUnion` _tlIgathDeclDataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOgathDeclDataGam | _lhsOgathDeclDataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_hdIgathTySigGam `gamAddGam` _tlIgathTySigGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOgathTySigGam | _lhsOgathTySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_hdIgathTySigVarMp `varUpd` _tlIgathTySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOgathTySigVarMp | _lhsOgathTySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                             (case ((let sem_Decls_Cons_11 :: T_Decls_11
+                                                                                                                                                                                                                                                                                                                                                                                                                                                         sem_Decls_Cons_11 =
+                                                                                                                                                                                                                                                                                                                                                                                                                                                             (\ _lhsIdataGam ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _lhsIdataGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ((case (_lhsIdataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _tlOdataGam | _tlOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (tl_11 _tlOdataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { ( _tlIchrClassDeclSq,_tlIchrInstDeclSq,_tlIgathClDfGam,tl_12) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIdataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _hdOdataGam | _hdOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (hd_11 _hdOdataGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { ( _hdIchrClassDeclSq,_hdIchrInstDeclSq,_hdIgathClDfGam,hd_12) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_hdIchrClassDeclSq `Seq.union` _tlIchrClassDeclSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOchrClassDeclSq | _lhsOchrClassDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_hdIchrInstDeclSq `Seq.union` _tlIchrInstDeclSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_hdIgathClDfGam `gamUnion` _tlIgathClDfGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathClDfGam | _lhsOgathClDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case ((let sem_Decls_Cons_12 :: T_Decls_12
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              sem_Decls_Cons_12 =
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (\ _lhsIpatTyVarMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsIpatValGam
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsItySigGam
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIpatValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (_lhsItySigGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ((case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _tlOtySigVarMp | _tlOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _tlOtySigGam | _tlOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _tlOtvKiVarMp | _tlOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _hdOtySigVarMp | _hdOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _hdOtySigGam | _hdOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _hdOtvKiVarMp | _hdOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIpatValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _hdOpatValGam | _hdOpatValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _hdOpatTyVarMp | _hdOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (hd_12 _hdOpatTyVarMp _hdOpatValGam _hdOtvKiVarMp _hdOtySigGam _hdOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { ( _hdIpatTyVarMp,_hdIpatValGam,hd_13) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_hdIpatValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _tlOpatValGam | _tlOpatValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_hdIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _tlOpatTyVarMp | _tlOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (tl_12 _tlOpatTyVarMp _tlOpatValGam _tlOtvKiVarMp _tlOtySigGam _tlOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { ( _tlIpatTyVarMp,_tlIpatValGam,tl_13) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_tlIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_tlIpatValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOpatValGam | _lhsOpatValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case ((let sem_Decls_Cons_13 :: T_Decls_13
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              sem_Decls_Cons_13 =
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsIclDfGam
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsItyVarMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsIvalGam
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _tlOvalGam | _tlOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _hdOvalGam | _hdOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _hdOtyVarMp | _hdOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _hdOclDfGam | _hdOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _hdOchrStore | _hdOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (hd_13 _hdOchrStore _hdOclDfGam _hdOtyTyGlobFreeTvarS _hdOtyVarMp _hdOvalGam _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { ( _hdIgathCnstrMp,_hdIgathRangeMp,_hdIintlTyKiGam,_hdInoLetQuantTyVarIdS,_hdIscopeGam,_hdItyVarMp,hd_14) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_hdItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _tlOtyVarMp | _tlOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _tlOclDfGam | _tlOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _tlOchrStore | _tlOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (tl_13 _tlOchrStore _tlOclDfGam _tlOtyTyGlobFreeTvarS _tlOtyVarMp _tlOvalGam _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { ( _tlIgathCnstrMp,_tlIgathRangeMp,_tlIintlTyKiGam,_tlInoLetQuantTyVarIdS,_tlIscopeGam,_tlItyVarMp,tl_14) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_hdIgathCnstrMp `cnstrMpUnion` _tlIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_hdIgathRangeMp `Map.union` _tlIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_hdIintlTyKiGam `gamUnion` _tlIintlTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_hdInoLetQuantTyVarIdS `Set.union` _tlInoLetQuantTyVarIdS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_hdIscopeGam `gamUnion` _tlIscopeGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_tlItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case ((let sem_Decls_Cons_14 :: T_Decls_14
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     sem_Decls_Cons_14 =
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIisStrict
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIkiSigGam
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (_lhsIisStrict `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (_lhsIkiSigGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _tlOrangeMp | _tlOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _tlOfinValGam | _tlOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _hdOrangeMp | _hdOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _hdOfinValGam | _hdOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _tlOtr | _tlOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIkiSigGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _tlOkiSigGam | _tlOkiSigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIisStrict) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _tlOisStrict | _tlOisStrict `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _tlOchrScopeBindMp | _tlOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _tlOchrEvidBindMp | _tlOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { _hdOchrScopeBindMp | _hdOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _hdOchrEvidBindMp | _hdOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _hdOcSubst | _hdOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIkiSigGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _hdOkiSigGam | _hdOkiSigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIisStrict) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _hdOisStrict | _hdOisStrict `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (hd_14 _hdOcSubst _hdOchrEvidBindMp _hdOchrScopeBindMp _hdOfinTyVarMp _hdOfinValGam _hdOisStrict _hdOkiSigGam _hdOmoduleNm _hdOrangeMp _hdOsysfEnv _hdOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { ( _hdIallErrSq,_hdIbangEvalL,_hdIcSubst,_hdIerrSq,_hdIffeCBindL,_hdIffiCBindL,_hdIgathHiddenExports,_hdIgathLamMp,_hdIgathMentrelFilterMp,_hdIgathTvKiVarMp,_hdIorphanS,_hdIpp,_hdItrpp,_hdItyCBindL,_hdIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_hdIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _tlOcSubst | _tlOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (tl_14 _tlOcSubst _tlOchrEvidBindMp _tlOchrScopeBindMp _tlOfinTyVarMp _tlOfinValGam _tlOisStrict _tlOkiSigGam _tlOmoduleNm _tlOrangeMp _tlOsysfEnv _tlOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { ( _tlIallErrSq,_tlIbangEvalL,_tlIcSubst,_tlIerrSq,_tlIffeCBindL,_tlIffiCBindL,_tlIgathHiddenExports,_tlIgathLamMp,_tlIgathMentrelFilterMp,_tlIgathTvKiVarMp,_tlIorphanS,_tlIpp,_tlItrpp,_tlItyCBindL,_tlIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (Seq.unions [_hdIerrSq, _hdIallErrSq, _tlIallErrSq]) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (_hdIbangEvalL ++ _tlIbangEvalL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsObangEvalL | _lhsObangEvalL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_tlIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (Seq.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_hdIffeCBindL ++ _tlIffeCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_hdIffiCBindL ++ _tlIffiCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_hdIgathHiddenExports `Seq.union` _tlIgathHiddenExports) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOgathHiddenExports | _lhsOgathHiddenExports `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_hdIgathLamMp `lamMpUnionBindAspMp` _tlIgathLamMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathLamMp | _lhsOgathLamMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_hdIgathTvKiVarMp `varmpUnion` _tlIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_hdIorphanS `Set.union` _tlIorphanS) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOorphanS | _lhsOorphanS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (ppErrsSq _hdIerrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     { _errPP | _errPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_hdIpp
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            >-< _errPP
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            >-< _tlIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_hdItyCBindL ++ _tlItyCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_hdIvalCBindL ++ _tlIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsObangEvalL,_lhsOcSubst,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathHiddenExports,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOorphanS,_lhsOpp,_lhsOtrpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 in  sem_Decls_Cons_14)) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          { ( sem_Decls_14) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOintlTyKiGam,_lhsOnoLetQuantTyVarIdS,_lhsOscopeGam,_lhsOtyVarMp,sem_Decls_14) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in  sem_Decls_Cons_13)) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { ( sem_Decls_13) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ( _lhsOpatTyVarMp,_lhsOpatValGam,sem_Decls_13) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in  sem_Decls_Cons_12)) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   { ( sem_Decls_12) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ( _lhsOchrClassDeclSq,_lhsOchrInstDeclSq,_lhsOgathClDfGam,sem_Decls_12) }) }) }) }) }) }) }) })))
+                                                                                                                                                                                                                                                                                                                                                                                                                                                     in  sem_Decls_Cons_11)) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                              { ( sem_Decls_11) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                              ( _lhsOgathDataGam,_lhsOgathDeclDataGam,_lhsOgathTySigGam,_lhsOgathTySigVarMp,sem_Decls_11) }) }) }) }) }) }) }) }) }) }) }))))
+                                                                                                                                                                                                                                                                                                                                                                                                            in  sem_Decls_Cons_10)) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { ( sem_Decls_10) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                     ( _lhsOpatClGam2,sem_Decls_10) }) }) }) }) }) }) }) }) }) }) }) }))))))
+                                                                                                                                                                                                                                                                                                                                                                in  sem_Decls_Cons_9)) of
+                                                                                                                                                                                                                                                                                                                                                         { ( sem_Decls_9) | True ->
+                                                                                                                                                                                                                                                                                                                                                         ( _lhsOpatClGam1,sem_Decls_9) }) }) }) }) }) })))
+                                                                                                                                                                                                                                                                                                                             in  sem_Decls_Cons_8)) of
+                                                                                                                                                                                                                                                                                                                      { ( sem_Decls_8) | True ->
+                                                                                                                                                                                                                                                                                                                      ( _lhsOgenerDataInfoL,_lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_Decls_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+                                                                                                                                                                                                                                                                  in  sem_Decls_Cons_7)) of
+                                                                                                                                                                                                                                                           { ( sem_Decls_7) | True ->
+                                                                                                                                                                                                                                                           ( _lhsOpatKiVarMp,_lhsOpatPolGam,sem_Decls_7) }) }) }) }) }) }) }) }) }) }) })))))
+                                                                                                                                                                                                                        in  sem_Decls_Cons_6)) of
+                                                                                                                                                                                                                 { ( sem_Decls_6) | True ->
+                                                                                                                                                                                                                 ( _lhsOpatTyKiGam,_lhsOtyTyVarMp,sem_Decls_6) }) }) }) }) }) }) }) }) }) }) })))))
+                                                                                                                                                                              in  sem_Decls_Cons_5)) of
+                                                                                                                                                                       { ( sem_Decls_5) | True ->
+                                                                                                                                                                       ( _lhsOpatTyGam,sem_Decls_5) }) }) }) }) }) }) }) }))))
+                                                                                                                                        in  sem_Decls_Cons_4)) of
+                                                                                                                                 { ( sem_Decls_4) | True ->
+                                                                                                                                 ( _lhsOpredSameScopeCounter,sem_Decls_4) }) }) }) }) }) }) }) }))))
+                                                                                                  in  sem_Decls_Cons_3)) of
+                                                                                           { ( sem_Decls_3) | True ->
+                                                                                           ( _lhsOgathTyKiSigGam,sem_Decls_3) }) }) }) }) }) })))
+                                                               in  sem_Decls_Cons_2)) of
+                                                        { ( sem_Decls_2) | True ->
+                                                        ( _lhsOgUniq,_lhsOgathKiSigGam,_lhsOhasInstDecl,sem_Decls_2) }) }) }) }) }) }) }) }) }) }))))
+                       in  sem_Decls_Cons_1)) of
+                { ( sem_Decls_1) | True ->
+                ( _lhsOrange,sem_Decls_1) }) }) }) })
+
+sem_Decls_Nil :: T_Decls
+
+sem_Decls_Nil =
+    (case (emptyRange) of
+     { _lhsOrange | _lhsOrange `seq` (True) ->
+     (case ((let sem_Decls_Nil_1 :: T_Decls_1
+                 sem_Decls_Nil_1 =
+                     (\ _lhsIgUniq
+                        _lhsIgathKiSigGam ->
+                          _lhsIgUniq `seq`
+                          (_lhsIgathKiSigGam `seq`
+                           ((case (_lhsIgUniq) of
+                             { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                             (case (_lhsIgathKiSigGam) of
+                              { _lhsOgathKiSigGam | _lhsOgathKiSigGam `seq` (True) ->
+                              (case (False) of
+                               { _lhsOhasInstDecl | _lhsOhasInstDecl `seq` (True) ->
+                               (case ((let sem_Decls_Nil_2 :: T_Decls_2
+                                           sem_Decls_Nil_2 =
+                                               (\ _lhsIkiGam ->
+                                                    _lhsIkiGam `seq`
+                                                    ((case (emptyGam) of
+                                                      { _lhsOgathTyKiSigGam | _lhsOgathTyKiSigGam `seq` (True) ->
+                                                      (case ((let sem_Decls_Nil_3 :: T_Decls_3
+                                                                  sem_Decls_Nil_3 =
+                                                                      (\ _lhsIlexLev
+                                                                         _lhsIpredSameScopeCounter ->
+                                                                           _lhsIlexLev `seq`
+                                                                           (_lhsIpredSameScopeCounter `seq`
+                                                                            ((case (_lhsIpredSameScopeCounter) of
+                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                              (case ((let sem_Decls_Nil_4 :: T_Decls_4
+                                                                                          sem_Decls_Nil_4 =
+                                                                                              (\ _lhsIpatTyGam
+                                                                                                 _lhsItyKiSigGam ->
+                                                                                                   _lhsIpatTyGam `seq`
+                                                                                                   (_lhsItyKiSigGam `seq`
+                                                                                                    ((case (_lhsIpatTyGam) of
+                                                                                                      { _lhsOpatTyGam | _lhsOpatTyGam `seq` (True) ->
+                                                                                                      (case ((let sem_Decls_Nil_5 :: T_Decls_5
+                                                                                                                  sem_Decls_Nil_5 =
+                                                                                                                      (\ _lhsIpatTyKiGam
+                                                                                                                         _lhsItyGam
+                                                                                                                         _lhsItyTyVarMp ->
+                                                                                                                           _lhsIpatTyKiGam `seq`
+                                                                                                                           (_lhsItyGam `seq`
+                                                                                                                            (_lhsItyTyVarMp `seq`
+                                                                                                                             ((case (_lhsIpatTyKiGam) of
+                                                                                                                               { _lhsOpatTyKiGam | _lhsOpatTyKiGam `seq` (True) ->
+                                                                                                                               (case (_lhsItyTyVarMp) of
+                                                                                                                                { _lhsOtyTyVarMp | _lhsOtyTyVarMp `seq` (True) ->
+                                                                                                                                (case ((let sem_Decls_Nil_6 :: T_Decls_6
+                                                                                                                                            sem_Decls_Nil_6 =
+                                                                                                                                                (\ _lhsIpatKiVarMp
+                                                                                                                                                   _lhsIpatPolGam
+                                                                                                                                                   _lhsItyKiGam ->
+                                                                                                                                                     _lhsIpatKiVarMp `seq`
+                                                                                                                                                     (_lhsIpatPolGam `seq`
+                                                                                                                                                      (_lhsItyKiGam `seq`
+                                                                                                                                                       ((case (_lhsIpatKiVarMp) of
+                                                                                                                                                         { _lhsOpatKiVarMp | _lhsOpatKiVarMp `seq` (True) ->
+                                                                                                                                                         (case (_lhsIpatPolGam) of
+                                                                                                                                                          { _lhsOpatPolGam | _lhsOpatPolGam `seq` (True) ->
+                                                                                                                                                          (case ((let sem_Decls_Nil_7 :: T_Decls_7
+                                                                                                                                                                      sem_Decls_Nil_7 =
+                                                                                                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                                                                                                             _lhsIkiVarMp
+                                                                                                                                                                             _lhsImbKnPolCtx
+                                                                                                                                                                             _lhsIopts
+                                                                                                                                                                             _lhsIpolGam
+                                                                                                                                                                             _lhsIpolVarMp
+                                                                                                                                                                             _lhsIpredScope
+                                                                                                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                                                                                                (_lhsImbKnPolCtx `seq`
+                                                                                                                                                                                 (_lhsIopts `seq`
+                                                                                                                                                                                  (_lhsIpolGam `seq`
+                                                                                                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                                                                                                    (_lhsIpredScope `seq`
+                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                      ((case ([]) of
+                                                                                                                                                                                        { _lhsOgenerDataInfoL | _lhsOgenerDataInfoL `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                                                                         { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIkiVarMp) of
+                                                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIpolVarMp) of
+                                                                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                                                           (case ((let sem_Decls_Nil_8 :: T_Decls_8
+                                                                                                                                                                                                       sem_Decls_Nil_8 =
+                                                                                                                                                                                                           (\ _lhsIpatClGam1 ->
+                                                                                                                                                                                                                _lhsIpatClGam1 `seq`
+                                                                                                                                                                                                                ((case (_lhsIpatClGam1) of
+                                                                                                                                                                                                                  { _lhsOpatClGam1 | _lhsOpatClGam1 `seq` (True) ->
+                                                                                                                                                                                                                  (case ((let sem_Decls_Nil_9 :: T_Decls_9
+                                                                                                                                                                                                                              sem_Decls_Nil_9 =
+                                                                                                                                                                                                                                  (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                     _lhsIfinTyKiGam
+                                                                                                                                                                                                                                     _lhsIpatClGam2
+                                                                                                                                                                                                                                     _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                                                                       _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                       (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                        (_lhsIpatClGam2 `seq`
+                                                                                                                                                                                                                                         (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                          ((case (_lhsIpatClGam2) of
+                                                                                                                                                                                                                                            { _lhsOpatClGam2 | _lhsOpatClGam2 `seq` (True) ->
+                                                                                                                                                                                                                                            (case ((let sem_Decls_Nil_10 :: T_Decls_10
+                                                                                                                                                                                                                                                        sem_Decls_Nil_10 =
+                                                                                                                                                                                                                                                            (\ _lhsIclGam
+                                                                                                                                                                                                                                                               _lhsIgathDataGam ->
+                                                                                                                                                                                                                                                                 _lhsIclGam `seq`
+                                                                                                                                                                                                                                                                 (_lhsIgathDataGam `seq`
+                                                                                                                                                                                                                                                                  ((case (_lhsIgathDataGam) of
+                                                                                                                                                                                                                                                                    { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (emptyGam) of
+                                                                                                                                                                                                                                                                     { _lhsOgathDeclDataGam | _lhsOgathDeclDataGam `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (emptyGam) of
+                                                                                                                                                                                                                                                                      { _lhsOgathTySigGam | _lhsOgathTySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (emptyVarMp) of
+                                                                                                                                                                                                                                                                       { _lhsOgathTySigVarMp | _lhsOgathTySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case ((let sem_Decls_Nil_11 :: T_Decls_11
+                                                                                                                                                                                                                                                                                   sem_Decls_Nil_11 =
+                                                                                                                                                                                                                                                                                       (\ _lhsIdataGam ->
+                                                                                                                                                                                                                                                                                            _lhsIdataGam `seq`
+                                                                                                                                                                                                                                                                                            ((case (Seq.empty) of
+                                                                                                                                                                                                                                                                                              { _lhsOchrClassDeclSq | _lhsOchrClassDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (Seq.empty) of
+                                                                                                                                                                                                                                                                                               { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (emptyGam) of
+                                                                                                                                                                                                                                                                                                { _lhsOgathClDfGam | _lhsOgathClDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case ((let sem_Decls_Nil_12 :: T_Decls_12
+                                                                                                                                                                                                                                                                                                            sem_Decls_Nil_12 =
+                                                                                                                                                                                                                                                                                                                (\ _lhsIpatTyVarMp
+                                                                                                                                                                                                                                                                                                                   _lhsIpatValGam
+                                                                                                                                                                                                                                                                                                                   _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                                                                   _lhsItySigGam
+                                                                                                                                                                                                                                                                                                                   _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                     _lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                     (_lhsIpatValGam `seq`
+                                                                                                                                                                                                                                                                                                                      (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                                       (_lhsItySigGam `seq`
+                                                                                                                                                                                                                                                                                                                        (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                         ((case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                                                           { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIpatValGam) of
+                                                                                                                                                                                                                                                                                                                            { _lhsOpatValGam | _lhsOpatValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case ((let sem_Decls_Nil_13 :: T_Decls_13
+                                                                                                                                                                                                                                                                                                                                        sem_Decls_Nil_13 =
+                                                                                                                                                                                                                                                                                                                                            (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                                                                                               _lhsIclDfGam
+                                                                                                                                                                                                                                                                                                                                               _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                                                               _lhsItyVarMp
+                                                                                                                                                                                                                                                                                                                                               _lhsIvalGam
+                                                                                                                                                                                                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                                                                                 _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                                                                                 (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                                   (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                    (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                                      ((case (Map.empty) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (Map.empty) of
+                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (emptyGam) of
+                                                                                                                                                                                                                                                                                                                                                          { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (Set.empty) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (emptyGam) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case ((let sem_Decls_Nil_14 :: T_Decls_14
+                                                                                                                                                                                                                                                                                                                                                                         sem_Decls_Nil_14 =
+                                                                                                                                                                                                                                                                                                                                                                             (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIisStrict
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIkiSigGam
+                                                                                                                                                                                                                                                                                                                                                                                _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                                                _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                                                _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                                                                  _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                                                  (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                   (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                    (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                     (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                      (_lhsIisStrict `seq`
+                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIkiSigGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                        (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                                         (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                          (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                                                           (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                                                            ((case (Seq.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _lhsObangEvalL | _lhsObangEvalL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (Seq.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOffeCBindL | _lhsOffeCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOffiCBindL | _lhsOffiCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (Seq.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOgathHiddenExports | _lhsOgathHiddenExports `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (Map.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOgathLamMp | _lhsOgathLamMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (Map.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                      (case (emptyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                       (case (Set.empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOorphanS | _lhsOorphanS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                        (case (empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                         (case (trppEmpty) of
+                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOtyCBindL | _lhsOtyCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsObangEvalL,_lhsOcSubst,_lhsOerrSq,_lhsOffeCBindL,_lhsOffiCBindL,_lhsOgathHiddenExports,_lhsOgathLamMp,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOorphanS,_lhsOpp,_lhsOtrpp,_lhsOtyCBindL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                                                                                     in  sem_Decls_Nil_14)) of
+                                                                                                                                                                                                                                                                                                                                                              { ( sem_Decls_14) | True ->
+                                                                                                                                                                                                                                                                                                                                                              ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOintlTyKiGam,_lhsOnoLetQuantTyVarIdS,_lhsOscopeGam,_lhsOtyVarMp,sem_Decls_14) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                                                                                    in  sem_Decls_Nil_13)) of
+                                                                                                                                                                                                                                                                                                                             { ( sem_Decls_13) | True ->
+                                                                                                                                                                                                                                                                                                                             ( _lhsOpatTyVarMp,_lhsOpatValGam,sem_Decls_13) }) }) })))))))
+                                                                                                                                                                                                                                                                                                        in  sem_Decls_Nil_12)) of
+                                                                                                                                                                                                                                                                                                 { ( sem_Decls_12) | True ->
+                                                                                                                                                                                                                                                                                                 ( _lhsOchrClassDeclSq,_lhsOchrInstDeclSq,_lhsOgathClDfGam,sem_Decls_12) }) }) }) })))
+                                                                                                                                                                                                                                                                               in  sem_Decls_Nil_11)) of
+                                                                                                                                                                                                                                                                        { ( sem_Decls_11) | True ->
+                                                                                                                                                                                                                                                                        ( _lhsOgathDataGam,_lhsOgathDeclDataGam,_lhsOgathTySigGam,_lhsOgathTySigVarMp,sem_Decls_11) }) }) }) }) }))))
+                                                                                                                                                                                                                                                    in  sem_Decls_Nil_10)) of
+                                                                                                                                                                                                                                             { ( sem_Decls_10) | True ->
+                                                                                                                                                                                                                                             ( _lhsOpatClGam2,sem_Decls_10) }) }))))))
+                                                                                                                                                                                                                          in  sem_Decls_Nil_9)) of
+                                                                                                                                                                                                                   { ( sem_Decls_9) | True ->
+                                                                                                                                                                                                                   ( _lhsOpatClGam1,sem_Decls_9) }) })))
+                                                                                                                                                                                                   in  sem_Decls_Nil_8)) of
+                                                                                                                                                                                            { ( sem_Decls_8) | True ->
+                                                                                                                                                                                            ( _lhsOgenerDataInfoL,_lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_Decls_8) }) }) }) }) }))))))))))
                                                                                                                                                                   in  sem_Decls_Nil_7)) of
                                                                                                                                                            { ( sem_Decls_7) | True ->
                                                                                                                                                            ( _lhsOpatKiVarMp,_lhsOpatPolGam,sem_Decls_7) }) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_Expr.hs b/src/UHC/Light/Compiler/EH/MainAG_Expr.hs
# file too large to diff: src/UHC/Light/Compiler/EH/MainAG_Expr.hs
diff --git a/src/UHC/Light/Compiler/EH/MainAG_ExprAnn.hs b/src/UHC/Light/Compiler/EH/MainAG_ExprAnn.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_ExprAnn.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_ExprAnn.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/EH/MainAG_FuncDep.hs b/src/UHC/Light/Compiler/EH/MainAG_FuncDep.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_FuncDep.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_FuncDep.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -103,6 +103,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -114,6 +115,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          pp                   : PP_Doc
          range                : Range
+         trpp                 : TrPP
    alternatives:
       alternative Dep:
          child hsrange        : {Range}
@@ -181,6 +183,7 @@
                                                                                                                           _lhsImoduleNm
                                                                                                                           _lhsIopts
                                                                                                                           _lhsIsysfEnv
+                                                                                                                          _lhsItr
                                                                                                                           _lhsItyKiGlobFreeTvarS
                                                                                                                           _lhsItyTyGlobFreeTvarS
                                                                                                                           _lhsItyTyTySigFreeTvarS
@@ -192,70 +195,77 @@
                                                                                                                                (_lhsImoduleNm `seq`
                                                                                                                                 (_lhsIopts `seq`
                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                      ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                        { _toTvsOvalTyGlobFreeTvarS | _toTvsOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                        (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                         { _toTvsOtyTyTySigFreeTvarS | _toTvsOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                          { _toTvsOtyTyGlobFreeTvarS | _toTvsOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                          (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                           { _toTvsOtyKiGlobFreeTvarS | _toTvsOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                           (case (_lhsIsysfEnv) of
-                                                                                                                                            { _toTvsOsysfEnv | _toTvsOsysfEnv `seq` (True) ->
-                                                                                                                                            (case (_lhsIopts) of
-                                                                                                                                             { _toTvsOopts | _toTvsOopts `seq` (True) ->
-                                                                                                                                             (case (_lhsImoduleNm) of
-                                                                                                                                              { _toTvsOmoduleNm | _toTvsOmoduleNm `seq` (True) ->
-                                                                                                                                              (case (_lhsIfinTyVarMp) of
-                                                                                                                                               { _toTvsOfinTyVarMp | _toTvsOfinTyVarMp `seq` (True) ->
-                                                                                                                                               (case (_lhsIfinTyKiGam) of
-                                                                                                                                                { _toTvsOfinTyKiGam | _toTvsOfinTyKiGam `seq` (True) ->
-                                                                                                                                                (case (_lhsIfinKiVarMp) of
-                                                                                                                                                 { _toTvsOfinKiVarMp | _toTvsOfinKiVarMp `seq` (True) ->
-                                                                                                                                                 (case (toTvs_4 _toTvsOfinKiVarMp _toTvsOfinTyKiGam _toTvsOfinTyVarMp _toTvsOmoduleNm _toTvsOopts _toTvsOsysfEnv _toTvsOtyKiGlobFreeTvarS _toTvsOtyTyGlobFreeTvarS _toTvsOtyTyTySigFreeTvarS _toTvsOvalTyGlobFreeTvarS) of
-                                                                                                                                                  { ( _toTvsIallErrSq,_toTvsIerrSq,_toTvsIgathMentrelFilterMp,_toTvsInmL,_toTvsIpp,_toTvsIppL) | True ->
-                                                                                                                                                      (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                       { _fromTvsOvalTyGlobFreeTvarS | _fromTvsOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                        { _fromTvsOtyTyTySigFreeTvarS | _fromTvsOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                         { _fromTvsOtyTyGlobFreeTvarS | _fromTvsOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                          { _fromTvsOtyKiGlobFreeTvarS | _fromTvsOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                          (case (_lhsIsysfEnv) of
-                                                                                                                                                           { _fromTvsOsysfEnv | _fromTvsOsysfEnv `seq` (True) ->
-                                                                                                                                                           (case (_lhsIopts) of
-                                                                                                                                                            { _fromTvsOopts | _fromTvsOopts `seq` (True) ->
-                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                             { _fromTvsOmoduleNm | _fromTvsOmoduleNm `seq` (True) ->
-                                                                                                                                                             (case (_lhsIfinTyVarMp) of
-                                                                                                                                                              { _fromTvsOfinTyVarMp | _fromTvsOfinTyVarMp `seq` (True) ->
-                                                                                                                                                              (case (_lhsIfinTyKiGam) of
-                                                                                                                                                               { _fromTvsOfinTyKiGam | _fromTvsOfinTyKiGam `seq` (True) ->
-                                                                                                                                                               (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                { _fromTvsOfinKiVarMp | _fromTvsOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                (case (fromTvs_4 _fromTvsOfinKiVarMp _fromTvsOfinTyKiGam _fromTvsOfinTyVarMp _fromTvsOmoduleNm _fromTvsOopts _fromTvsOsysfEnv _fromTvsOtyKiGlobFreeTvarS _fromTvsOtyTyGlobFreeTvarS _fromTvsOtyTyTySigFreeTvarS _fromTvsOvalTyGlobFreeTvarS) of
-                                                                                                                                                                 { ( _fromTvsIallErrSq,_fromTvsIerrSq,_fromTvsIgathMentrelFilterMp,_fromTvsInmL,_fromTvsIpp,_fromTvsIppL) | True ->
-                                                                                                                                                                     (case (_fromTvsIallErrSq `Seq.union` _toTvsIallErrSq) of
-                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                      (case (_fromTvsIerrSq `Seq.union` _toTvsIerrSq) of
-                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                       (case (let  l v = maybe (-1) id . elemIndex v $ _lhsIclsTyArgs
-                                                                                                                                                                              in   [ClsFuncDep (map l _fromTvsItyL) (map l _toTvsItyL)]) of
-                                                                                                                                                                        { _lhsOfuncDeps | _lhsOfuncDeps `seq` (True) ->
-                                                                                                                                                                        (case (_fromTvsIgathMentrelFilterMp `mentrelFilterMpUnion` _toTvsIgathMentrelFilterMp) of
-                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                         (case (_fromTvsIpp >#< "->" >#< _toTvsIpp) of
-                                                                                                                                                                          { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                          (case (rangeUnions [hsrange_, _fromTvsIrange, _toTvsIrange ]) of
-                                                                                                                                                                           { _range | _range `seq` (True) ->
-                                                                                                                                                                           (case (_range) of
-                                                                                                                                                                            { _lhsOrange | _lhsOrange `seq` (True) ->
-                                                                                                                                                                            ( _lhsOallErrSq,_lhsOerrSq,_lhsOfuncDeps,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOrange) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                       ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                         { _toTvsOvalTyGlobFreeTvarS | _toTvsOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                         (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                          { _toTvsOtyTyTySigFreeTvarS | _toTvsOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                           { _toTvsOtyTyGlobFreeTvarS | _toTvsOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                            { _toTvsOtyKiGlobFreeTvarS | _toTvsOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                            (case (_lhsItr) of
+                                                                                                                                             { _toTvsOtr | _toTvsOtr `seq` (True) ->
+                                                                                                                                             (case (_lhsIsysfEnv) of
+                                                                                                                                              { _toTvsOsysfEnv | _toTvsOsysfEnv `seq` (True) ->
+                                                                                                                                              (case (_lhsIopts) of
+                                                                                                                                               { _toTvsOopts | _toTvsOopts `seq` (True) ->
+                                                                                                                                               (case (_lhsImoduleNm) of
+                                                                                                                                                { _toTvsOmoduleNm | _toTvsOmoduleNm `seq` (True) ->
+                                                                                                                                                (case (_lhsIfinTyVarMp) of
+                                                                                                                                                 { _toTvsOfinTyVarMp | _toTvsOfinTyVarMp `seq` (True) ->
+                                                                                                                                                 (case (_lhsIfinTyKiGam) of
+                                                                                                                                                  { _toTvsOfinTyKiGam | _toTvsOfinTyKiGam `seq` (True) ->
+                                                                                                                                                  (case (_lhsIfinKiVarMp) of
+                                                                                                                                                   { _toTvsOfinKiVarMp | _toTvsOfinKiVarMp `seq` (True) ->
+                                                                                                                                                   (case (toTvs_4 _toTvsOfinKiVarMp _toTvsOfinTyKiGam _toTvsOfinTyVarMp _toTvsOmoduleNm _toTvsOopts _toTvsOsysfEnv _toTvsOtr _toTvsOtyKiGlobFreeTvarS _toTvsOtyTyGlobFreeTvarS _toTvsOtyTyTySigFreeTvarS _toTvsOvalTyGlobFreeTvarS) of
+                                                                                                                                                    { ( _toTvsIallErrSq,_toTvsIerrSq,_toTvsIgathMentrelFilterMp,_toTvsInmL,_toTvsIpp,_toTvsIppL,_toTvsItrpp) | True ->
+                                                                                                                                                        (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                         { _fromTvsOvalTyGlobFreeTvarS | _fromTvsOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                         (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                          { _fromTvsOtyTyTySigFreeTvarS | _fromTvsOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                           { _fromTvsOtyTyGlobFreeTvarS | _fromTvsOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                            { _fromTvsOtyKiGlobFreeTvarS | _fromTvsOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                            (case (_lhsItr) of
+                                                                                                                                                             { _fromTvsOtr | _fromTvsOtr `seq` (True) ->
+                                                                                                                                                             (case (_lhsIsysfEnv) of
+                                                                                                                                                              { _fromTvsOsysfEnv | _fromTvsOsysfEnv `seq` (True) ->
+                                                                                                                                                              (case (_lhsIopts) of
+                                                                                                                                                               { _fromTvsOopts | _fromTvsOopts `seq` (True) ->
+                                                                                                                                                               (case (_lhsImoduleNm) of
+                                                                                                                                                                { _fromTvsOmoduleNm | _fromTvsOmoduleNm `seq` (True) ->
+                                                                                                                                                                (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                 { _fromTvsOfinTyVarMp | _fromTvsOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                 (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                  { _fromTvsOfinTyKiGam | _fromTvsOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                  (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                   { _fromTvsOfinKiVarMp | _fromTvsOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                   (case (fromTvs_4 _fromTvsOfinKiVarMp _fromTvsOfinTyKiGam _fromTvsOfinTyVarMp _fromTvsOmoduleNm _fromTvsOopts _fromTvsOsysfEnv _fromTvsOtr _fromTvsOtyKiGlobFreeTvarS _fromTvsOtyTyGlobFreeTvarS _fromTvsOtyTyTySigFreeTvarS _fromTvsOvalTyGlobFreeTvarS) of
+                                                                                                                                                                    { ( _fromTvsIallErrSq,_fromTvsIerrSq,_fromTvsIgathMentrelFilterMp,_fromTvsInmL,_fromTvsIpp,_fromTvsIppL,_fromTvsItrpp) | True ->
+                                                                                                                                                                        (case (_fromTvsIallErrSq `Seq.union` _toTvsIallErrSq) of
+                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                         (case (_fromTvsIerrSq `Seq.union` _toTvsIerrSq) of
+                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                          (case (let  l v = maybe (-1) id . elemIndex v $ _lhsIclsTyArgs
+                                                                                                                                                                                 in   [ClsFuncDep (map l _fromTvsItyL) (map l _toTvsItyL)]) of
+                                                                                                                                                                           { _lhsOfuncDeps | _lhsOfuncDeps `seq` (True) ->
+                                                                                                                                                                           (case (_fromTvsIgathMentrelFilterMp `mentrelFilterMpUnion` _toTvsIgathMentrelFilterMp) of
+                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                            (case (_fromTvsIpp >#< "->" >#< _toTvsIpp) of
+                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                             (case (rangeUnions [hsrange_, _fromTvsIrange, _toTvsIrange ]) of
+                                                                                                                                                                              { _range | _range `seq` (True) ->
+                                                                                                                                                                              (case (_range) of
+                                                                                                                                                                               { _lhsOrange | _lhsOrange `seq` (True) ->
+                                                                                                                                                                               (case (_fromTvsItrpp >< _toTvsItrpp) of
+                                                                                                                                                                                { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                ( _lhsOallErrSq,_lhsOerrSq,_lhsOfuncDeps,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOrange,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                in  sem_FuncDep_Dep_3)) of
                                                                                                         { ( sem_FuncDep_3) | True ->
                                                                                                         ( _lhsOtyKiGam,sem_FuncDep_3) }) }) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_FuncDeps.hs b/src/UHC/Light/Compiler/EH/MainAG_FuncDeps.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_FuncDeps.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_FuncDeps.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -103,6 +103,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -115,6 +116,7 @@
          pp                   : PP_Doc
          ppL                  : [PP_Doc]
          range                : Range
+         trpp                 : TrPP
    alternatives:
       alternative Cons:
          child hd             : FuncDep 
@@ -175,6 +177,7 @@
                                                                                                                 _lhsImoduleNm
                                                                                                                 _lhsIopts
                                                                                                                 _lhsIsysfEnv
+                                                                                                                _lhsItr
                                                                                                                 _lhsItyKiGlobFreeTvarS
                                                                                                                 _lhsItyTyGlobFreeTvarS
                                                                                                                 _lhsItyTyTySigFreeTvarS
@@ -186,73 +189,80 @@
                                                                                                                      (_lhsImoduleNm `seq`
                                                                                                                       (_lhsIopts `seq`
                                                                                                                        (_lhsIsysfEnv `seq`
-                                                                                                                        (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                         (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                          (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                           (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                            ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                              { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                               { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                 { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                 (case (_lhsIsysfEnv) of
-                                                                                                                                  { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                  (case (_lhsIopts) of
-                                                                                                                                   { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                    { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                    (case (_lhsIfinTyVarMp) of
-                                                                                                                                     { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                     (case (_lhsIfinTyKiGam) of
-                                                                                                                                      { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                                                                      (case (_lhsIfinKiVarMp) of
-                                                                                                                                       { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                       (case (_lhsIclsTyArgs) of
-                                                                                                                                        { _tlOclsTyArgs | _tlOclsTyArgs `seq` (True) ->
-                                                                                                                                        (case (tl_3 _tlOclsTyArgs _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                         { ( _tlIallErrSq,_tlIerrSq,_tlIfuncDeps,_tlIgathMentrelFilterMp,_tlIpp,_tlIppL,_tlIrange) | True ->
-                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                              { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                               { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                 { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                 (case (_lhsIsysfEnv) of
-                                                                                                                                                  { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                  (case (_lhsIopts) of
-                                                                                                                                                   { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                    { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinTyVarMp) of
-                                                                                                                                                     { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIfinTyKiGam) of
-                                                                                                                                                      { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIfinKiVarMp) of
-                                                                                                                                                       { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                       (case (_lhsIclsTyArgs) of
-                                                                                                                                                        { _hdOclsTyArgs | _hdOclsTyArgs `seq` (True) ->
-                                                                                                                                                        (case (hd_3 _hdOclsTyArgs _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                         { ( _hdIallErrSq,_hdIerrSq,_hdIfuncDeps,_hdIgathMentrelFilterMp,_hdIpp,_hdIrange) | True ->
-                                                                                                                                                             (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                              (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                               (case (_hdIfuncDeps ++ _tlIfuncDeps) of
-                                                                                                                                                                { _lhsOfuncDeps | _lhsOfuncDeps `seq` (True) ->
-                                                                                                                                                                (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                 (case (_hdIpp >-< _tlIpp) of
-                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                  (case (_hdIpp : _tlIppL) of
-                                                                                                                                                                   { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                   (case (_hdIrange `rangeUnion` _tlIrange) of
-                                                                                                                                                                    { _lhsOrange | _lhsOrange `seq` (True) ->
-                                                                                                                                                                    ( _lhsOallErrSq,_lhsOerrSq,_lhsOfuncDeps,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOrange) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                        (_lhsItr `seq`
+                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                          (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                           (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                            (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                             ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                               { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                               (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                 { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                 (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                  { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                  (case (_lhsItr) of
+                                                                                                                                   { _tlOtr | _tlOtr `seq` (True) ->
+                                                                                                                                   (case (_lhsIsysfEnv) of
+                                                                                                                                    { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                    (case (_lhsIopts) of
+                                                                                                                                     { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                     (case (_lhsImoduleNm) of
+                                                                                                                                      { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                      (case (_lhsIfinTyVarMp) of
+                                                                                                                                       { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                       (case (_lhsIfinTyKiGam) of
+                                                                                                                                        { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                                                                        (case (_lhsIfinKiVarMp) of
+                                                                                                                                         { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                         (case (_lhsIclsTyArgs) of
+                                                                                                                                          { _tlOclsTyArgs | _tlOclsTyArgs `seq` (True) ->
+                                                                                                                                          (case (tl_3 _tlOclsTyArgs _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtr _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                           { ( _tlIallErrSq,_tlIerrSq,_tlIfuncDeps,_tlIgathMentrelFilterMp,_tlIpp,_tlIppL,_tlIrange,_tlItrpp) | True ->
+                                                                                                                                               (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                 { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                  { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                   { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                   (case (_lhsItr) of
+                                                                                                                                                    { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                    (case (_lhsIsysfEnv) of
+                                                                                                                                                     { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                     (case (_lhsIopts) of
+                                                                                                                                                      { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                                      (case (_lhsImoduleNm) of
+                                                                                                                                                       { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                        { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                         { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                          { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_lhsIclsTyArgs) of
+                                                                                                                                                           { _hdOclsTyArgs | _hdOclsTyArgs `seq` (True) ->
+                                                                                                                                                           (case (hd_3 _hdOclsTyArgs _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtr _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                            { ( _hdIallErrSq,_hdIerrSq,_hdIfuncDeps,_hdIgathMentrelFilterMp,_hdIpp,_hdIrange,_hdItrpp) | True ->
+                                                                                                                                                                (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                 (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                                                                  { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                  (case (_hdIfuncDeps ++ _tlIfuncDeps) of
+                                                                                                                                                                   { _lhsOfuncDeps | _lhsOfuncDeps `seq` (True) ->
+                                                                                                                                                                   (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                    { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                    (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                     (case (_hdIpp : _tlIppL) of
+                                                                                                                                                                      { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                      (case (_hdIrange `rangeUnion` _tlIrange) of
+                                                                                                                                                                       { _lhsOrange | _lhsOrange `seq` (True) ->
+                                                                                                                                                                       (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                        { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                        ( _lhsOallErrSq,_lhsOerrSq,_lhsOfuncDeps,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOrange,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                      in  sem_FuncDeps_Cons_3)) of
                                                                                               { ( sem_FuncDeps_3) | True ->
                                                                                               ( _lhsOtyKiGam,sem_FuncDeps_3) }) }) }) }) }) })))
@@ -291,6 +301,7 @@
                                                                             _lhsImoduleNm
                                                                             _lhsIopts
                                                                             _lhsIsysfEnv
+                                                                            _lhsItr
                                                                             _lhsItyKiGlobFreeTvarS
                                                                             _lhsItyTyGlobFreeTvarS
                                                                             _lhsItyTyTySigFreeTvarS
@@ -302,25 +313,28 @@
                                                                                  (_lhsImoduleNm `seq`
                                                                                   (_lhsIopts `seq`
                                                                                    (_lhsIsysfEnv `seq`
-                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                      (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                        ((case (Seq.empty) of
-                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                          (case (Seq.empty) of
-                                                                                           { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                           (case ([]) of
-                                                                                            { _lhsOfuncDeps | _lhsOfuncDeps `seq` (True) ->
-                                                                                            (case (Map.empty) of
-                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                             (case (empty) of
-                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                              (case ([]) of
-                                                                                               { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                               (case (emptyRange) of
-                                                                                                { _lhsOrange | _lhsOrange `seq` (True) ->
-                                                                                                ( _lhsOallErrSq,_lhsOerrSq,_lhsOfuncDeps,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOrange) }) }) }) }) }) }) })))))))))))))
+                                                                                    (_lhsItr `seq`
+                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                         ((case (Seq.empty) of
+                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                           (case (Seq.empty) of
+                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                            (case ([]) of
+                                                                                             { _lhsOfuncDeps | _lhsOfuncDeps `seq` (True) ->
+                                                                                             (case (Map.empty) of
+                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                              (case (empty) of
+                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                               (case ([]) of
+                                                                                                { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                (case (emptyRange) of
+                                                                                                 { _lhsOrange | _lhsOrange `seq` (True) ->
+                                                                                                 (case (trppEmpty) of
+                                                                                                  { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                  ( _lhsOallErrSq,_lhsOerrSq,_lhsOfuncDeps,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOrange,_lhsOtrpp) }) }) }) }) }) }) }) }))))))))))))))
                                                                  in  sem_FuncDeps_Nil_3)) of
                                                           { ( sem_FuncDeps_3) | True ->
                                                           ( _lhsOtyKiGam,sem_FuncDeps_3) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_KiExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_KiExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_KiExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_KiExpr.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -104,6 +104,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -116,6 +117,7 @@
          errSq                : ErrSq
          gathMentrelFilterMp  : ModEntRelFilterMp
          pp                   : PP_Doc
+         trpp                 : TrPP
    alternatives:
       alternative Con:
          child hsrange        : {Range}
@@ -125,13 +127,13 @@
          visit 1:
             intra range       : {Range}
          visit 2:
-            local _tup166     : _
+            local _tup172     : _
             local kgi         : {KiGamInfo}
             intra range       : {Range}
          visit 3:
             local pp          : _
             local nmErrs      : {ErrL}
-            intra _tup166     : _
+            intra _tup172     : _
             intra range       : {Range}
       alternative Var:
          child hsrange        : {Range}
@@ -139,12 +141,12 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup168     : _
+            local _tup174     : _
          visit 2:
             local lUniq       : {UID}
-            local _tup167     : _
+            local _tup173     : _
             local kgi         : {KiGamInfo}
-            intra _tup168     : _
+            intra _tup174     : _
          visit 3:
             local pp          : _
       alternative App:
@@ -200,8 +202,8 @@
                                                   ((case (case gamLookup nm_ _lhsIkiGam of
                                                             Nothing    ->  (KiGamInfo Ty_Any,[rngLift _range mkErr_NamesNotIntrod "kind" [nm_]])
                                                             Just kgi   ->  (kgi,[])) of
-                                                    { __tup166 | __tup166 `seq` (True) ->
-                                                    (case (__tup166) of
+                                                    { __tup172 | __tup172 `seq` (True) ->
+                                                    (case (__tup172) of
                                                      { (_kgi,_) | _kgi `seq` (True) ->
                                                      (case (kgiKi _kgi) of
                                                       { _lhsOki | _lhsOki `seq` (True) ->
@@ -215,6 +217,7 @@
                                                                           _lhsImoduleNm
                                                                           _lhsIopts
                                                                           _lhsIsysfEnv
+                                                                          _lhsItr
                                                                           _lhsItyKiGlobFreeTvarS
                                                                           _lhsItyTyGlobFreeTvarS
                                                                           _lhsItyTyTySigFreeTvarS
@@ -225,29 +228,32 @@
                                                                               (_lhsImoduleNm `seq`
                                                                                (_lhsIopts `seq`
                                                                                 (_lhsIsysfEnv `seq`
-                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                     ((case (Seq.empty) of
-                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                       (case ([]) of
-                                                                                        { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                        (case (nm_) of
-                                                                                         { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                         (case (pp nm_) of
-                                                                                          { _pp | _pp `seq` (True) ->
-                                                                                          (case (_pp) of
-                                                                                           { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                           (case (__tup166) of
-                                                                                            { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                            (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs]) of
-                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                             (case (Map.empty) of
-                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                              (case (_pp) of
-                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                               ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                 (_lhsItr `seq`
+                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                      ((case (Seq.empty) of
+                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                        (case ([]) of
+                                                                                         { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                         (case (nm_) of
+                                                                                          { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                          (case (pp nm_) of
+                                                                                           { _pp | _pp `seq` (True) ->
+                                                                                           (case (_pp) of
+                                                                                            { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                            (case (__tup172) of
+                                                                                             { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                             (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs]) of
+                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                              (case (Map.empty) of
+                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                               (case (_pp) of
+                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                (case (trppEmpty) of
+                                                                                                 { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                 ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) }) })))))))))))))
                                                                in  sem_KiExpr_Con_3)) of
                                                         { ( sem_KiExpr_3) | True ->
                                                         ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) })))
@@ -272,26 +278,26 @@
                       (\ _lhsIgUniq ->
                            _lhsIgUniq `seq`
                            ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup168 | __tup168 `seq` (True) ->
-                             (case (__tup168) of
+                             { __tup174 | __tup174 `seq` (True) ->
+                             (case (__tup174) of
                               { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
                               (case ((let sem_KiExpr_Var_2 :: T_KiExpr_2
                                           sem_KiExpr_Var_2 =
                                               (\ _lhsIkiGam ->
                                                    _lhsIkiGam `seq`
-                                                   ((case (__tup168) of
+                                                   ((case (__tup174) of
                                                      { (_,_lUniq) | _lUniq `seq` (True) ->
                                                      (case (case gamLookup nm_ _lhsIkiGam of
                                                               Nothing    ->  let  t    =  mkNewTyVar _lUniq
                                                                                   kgi  =  KiGamInfo t
                                                                              in   (kgi,gamAdd nm_ kgi _lhsIkiGam)
                                                               Just kgi   ->  (kgi,_lhsIkiGam)) of
-                                                      { __tup167 | __tup167 `seq` (True) ->
-                                                      (case (__tup167) of
+                                                      { __tup173 | __tup173 `seq` (True) ->
+                                                      (case (__tup173) of
                                                        { (_kgi,_) | _kgi `seq` (True) ->
                                                        (case (kgiKi _kgi) of
                                                         { _lhsOki | _lhsOki `seq` (True) ->
-                                                        (case (__tup167) of
+                                                        (case (__tup173) of
                                                          { (_,_lhsOkiGam) | _lhsOkiGam `seq` (True) ->
                                                          (case ((let sem_KiExpr_Var_3 :: T_KiExpr_3
                                                                      sem_KiExpr_Var_3 =
@@ -301,6 +307,7 @@
                                                                             _lhsImoduleNm
                                                                             _lhsIopts
                                                                             _lhsIsysfEnv
+                                                                            _lhsItr
                                                                             _lhsItyKiGlobFreeTvarS
                                                                             _lhsItyTyGlobFreeTvarS
                                                                             _lhsItyTyTySigFreeTvarS
@@ -311,27 +318,30 @@
                                                                                 (_lhsImoduleNm `seq`
                                                                                  (_lhsIopts `seq`
                                                                                   (_lhsIsysfEnv `seq`
-                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                       ((case (Seq.empty) of
-                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                         (case ([]) of
-                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                          (case (hsnUnknown) of
-                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                           (case (pp nm_) of
-                                                                                            { _pp | _pp `seq` (True) ->
-                                                                                            (case (_pp) of
-                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                             (case (Seq.empty) of
-                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                              (case (Map.empty) of
-                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                               (case (_pp) of
-                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp) }) }) }) }) }) }) }) }))))))))))))
+                                                                                   (_lhsItr `seq`
+                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                      (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                        ((case (Seq.empty) of
+                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                          (case ([]) of
+                                                                                           { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                           (case (hsnUnknown) of
+                                                                                            { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                            (case (pp nm_) of
+                                                                                             { _pp | _pp `seq` (True) ->
+                                                                                             (case (_pp) of
+                                                                                              { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                              (case (Seq.empty) of
+                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                               (case (Map.empty) of
+                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                (case (_pp) of
+                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                 (case (trppEmpty) of
+                                                                                                  { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                  ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) })))))))))))))
                                                                  in  sem_KiExpr_Var_3)) of
                                                           { ( sem_KiExpr_3) | True ->
                                                           ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }) })))
@@ -394,6 +404,7 @@
                                                                                                           _lhsImoduleNm
                                                                                                           _lhsIopts
                                                                                                           _lhsIsysfEnv
+                                                                                                          _lhsItr
                                                                                                           _lhsItyKiGlobFreeTvarS
                                                                                                           _lhsItyTyGlobFreeTvarS
                                                                                                           _lhsItyTyTySigFreeTvarS
@@ -404,71 +415,78 @@
                                                                                                               (_lhsImoduleNm `seq`
                                                                                                                (_lhsIopts `seq`
                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                     ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                       { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                        { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                         { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                          { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                          (case (_lhsIsysfEnv) of
-                                                                                                                           { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
-                                                                                                                           (case (_lhsIopts) of
-                                                                                                                            { _argOopts | _argOopts `seq` (True) ->
-                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                             { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
-                                                                                                                             (case (_lhsIfinTyVarMp) of
-                                                                                                                              { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
-                                                                                                                              (case (_lhsIfinTyKiGam) of
-                                                                                                                               { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
-                                                                                                                               (case (_lhsIfinKiVarMp) of
-                                                                                                                                { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
-                                                                                                                                (case (arg_3 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOmoduleNm _argOopts _argOsysfEnv _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of
-                                                                                                                                 { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIerrSq,_argIgathMentrelFilterMp,_argIpp) | True ->
-                                                                                                                                     (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                      { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                       { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                        { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                         { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                         (case (_lhsIsysfEnv) of
-                                                                                                                                          { _funcOsysfEnv | _funcOsysfEnv `seq` (True) ->
-                                                                                                                                          (case (_lhsIopts) of
-                                                                                                                                           { _funcOopts | _funcOopts `seq` (True) ->
-                                                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                                                            { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
-                                                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                                                             { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) ->
-                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                              { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) ->
-                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                               { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) ->
-                                                                                                                                               (case (func_3 _funcOfinKiVarMp _funcOfinTyKiGam _funcOfinTyVarMp _funcOmoduleNm _funcOopts _funcOsysfEnv _funcOtyKiGlobFreeTvarS _funcOtyTyGlobFreeTvarS _funcOtyTyTySigFreeTvarS _funcOvalTyGlobFreeTvarS) of
-                                                                                                                                                { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIerrSq,_funcIgathMentrelFilterMp,_funcIpp) | True ->
-                                                                                                                                                    (case (_funcIallErrSq `Seq.union` _argIallErrSq) of
-                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                     (case (_funcIappArgPPL ++ [_argIpp]) of
-                                                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                      (case (_funcIappFunNm) of
-                                                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                       (case (_funcIappFunPP) of
-                                                                                                                                                        { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                        (case (_funcIerrSq `Seq.union` _argIerrSq) of
-                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                         (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of
-                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                          (case (_funcIpp >#< _argIpp) of
-                                                                                                                                                           { _pp | _pp `seq` (True) ->
-                                                                                                                                                           (case (_pp) of
-                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                            ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                                 (_lhsItr `seq`
+                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                      ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                        { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                        (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                         { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                          { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                          (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                           { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                           (case (_lhsItr) of
+                                                                                                                            { _argOtr | _argOtr `seq` (True) ->
+                                                                                                                            (case (_lhsIsysfEnv) of
+                                                                                                                             { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
+                                                                                                                             (case (_lhsIopts) of
+                                                                                                                              { _argOopts | _argOopts `seq` (True) ->
+                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                               { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
+                                                                                                                               (case (_lhsIfinTyVarMp) of
+                                                                                                                                { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
+                                                                                                                                (case (_lhsIfinTyKiGam) of
+                                                                                                                                 { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
+                                                                                                                                 (case (_lhsIfinKiVarMp) of
+                                                                                                                                  { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
+                                                                                                                                  (case (arg_3 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOmoduleNm _argOopts _argOsysfEnv _argOtr _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of
+                                                                                                                                   { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIerrSq,_argIgathMentrelFilterMp,_argIpp,_argItrpp) | True ->
+                                                                                                                                       (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                        { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                        (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                         { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                          { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                          (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                           { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                           (case (_lhsItr) of
+                                                                                                                                            { _funcOtr | _funcOtr `seq` (True) ->
+                                                                                                                                            (case (_lhsIsysfEnv) of
+                                                                                                                                             { _funcOsysfEnv | _funcOsysfEnv `seq` (True) ->
+                                                                                                                                             (case (_lhsIopts) of
+                                                                                                                                              { _funcOopts | _funcOopts `seq` (True) ->
+                                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                                               { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
+                                                                                                                                               (case (_lhsIfinTyVarMp) of
+                                                                                                                                                { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) ->
+                                                                                                                                                (case (_lhsIfinTyKiGam) of
+                                                                                                                                                 { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) ->
+                                                                                                                                                 (case (_lhsIfinKiVarMp) of
+                                                                                                                                                  { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) ->
+                                                                                                                                                  (case (func_3 _funcOfinKiVarMp _funcOfinTyKiGam _funcOfinTyVarMp _funcOmoduleNm _funcOopts _funcOsysfEnv _funcOtr _funcOtyKiGlobFreeTvarS _funcOtyTyGlobFreeTvarS _funcOtyTyTySigFreeTvarS _funcOvalTyGlobFreeTvarS) of
+                                                                                                                                                   { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIerrSq,_funcIgathMentrelFilterMp,_funcIpp,_funcItrpp) | True ->
+                                                                                                                                                       (case (_funcIallErrSq `Seq.union` _argIallErrSq) of
+                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                        (case (_funcIappArgPPL ++ [_argIpp]) of
+                                                                                                                                                         { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                         (case (_funcIappFunNm) of
+                                                                                                                                                          { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                          (case (_funcIappFunPP) of
+                                                                                                                                                           { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                           (case (_funcIerrSq `Seq.union` _argIerrSq) of
+                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                            (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of
+                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                             (case (_funcIpp >#< _argIpp) of
+                                                                                                                                                              { _pp | _pp `seq` (True) ->
+                                                                                                                                                              (case (_pp) of
+                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                               (case (_funcItrpp >< _argItrpp) of
+                                                                                                                                                                { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
                                                                                                in  sem_KiExpr_App_3)) of
                                                                                         { ( sem_KiExpr_3) | True ->
                                                                                         ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) }) }) })))
@@ -520,6 +538,7 @@
                                                                                          _lhsImoduleNm
                                                                                          _lhsIopts
                                                                                          _lhsIsysfEnv
+                                                                                         _lhsItr
                                                                                          _lhsItyKiGlobFreeTvarS
                                                                                          _lhsItyTyGlobFreeTvarS
                                                                                          _lhsItyTyTySigFreeTvarS
@@ -530,50 +549,55 @@
                                                                                              (_lhsImoduleNm `seq`
                                                                                               (_lhsIopts `seq`
                                                                                                (_lhsIsysfEnv `seq`
-                                                                                                (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                    ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                      { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                       { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                        { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                         { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                         (case (_lhsIsysfEnv) of
-                                                                                                          { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) ->
-                                                                                                          (case (_lhsIopts) of
-                                                                                                           { _kiExprOopts | _kiExprOopts `seq` (True) ->
-                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                            { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) ->
-                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                             { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) ->
-                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                              { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) ->
-                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                               { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) ->
-                                                                                                               (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of
-                                                                                                                { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp) | True ->
-                                                                                                                    (case (_kiExprIallErrSq) of
-                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                     (case ([]) of
-                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                      (case (hsnUnknown) of
-                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                       (case (ppAppTop  (_kiExprIappFunNm,_kiExprIappFunPP)
-                                                                                                                                        _kiExprIappArgPPL _kiExprIpp) of
-                                                                                                                        { _pp | _pp `seq` (True) ->
-                                                                                                                        (case (_pp) of
-                                                                                                                         { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                         (case (_kiExprIerrSq) of
-                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                          (case (_kiExprIgathMentrelFilterMp) of
-                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                           (case (_pp) of
-                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                            ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                (_lhsItr `seq`
+                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                     ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                       { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                        { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                         { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                          { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                          (case (_lhsItr) of
+                                                                                                           { _kiExprOtr | _kiExprOtr `seq` (True) ->
+                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                            { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) ->
+                                                                                                            (case (_lhsIopts) of
+                                                                                                             { _kiExprOopts | _kiExprOopts `seq` (True) ->
+                                                                                                             (case (_lhsImoduleNm) of
+                                                                                                              { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) ->
+                                                                                                              (case (_lhsIfinTyVarMp) of
+                                                                                                               { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) ->
+                                                                                                               (case (_lhsIfinTyKiGam) of
+                                                                                                                { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) ->
+                                                                                                                (case (_lhsIfinKiVarMp) of
+                                                                                                                 { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) ->
+                                                                                                                 (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtr _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of
+                                                                                                                  { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp,_kiExprItrpp) | True ->
+                                                                                                                      (case (_kiExprIallErrSq) of
+                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                       (case ([]) of
+                                                                                                                        { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                        (case (hsnUnknown) of
+                                                                                                                         { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                         (case (ppAppTop  (_kiExprIappFunNm,_kiExprIappFunPP)
+                                                                                                                                          _kiExprIappArgPPL _kiExprIpp) of
+                                                                                                                          { _pp | _pp `seq` (True) ->
+                                                                                                                          (case (_pp) of
+                                                                                                                           { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                           (case (_kiExprIerrSq) of
+                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                            (case (_kiExprIgathMentrelFilterMp) of
+                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                             (case (_pp) of
+                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                              (case (_kiExprItrpp) of
+                                                                                                                               { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                               ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
                                                                               in  sem_KiExpr_AppTop_3)) of
                                                                        { ( sem_KiExpr_3) | True ->
                                                                        ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) })))
@@ -625,6 +649,7 @@
                                                                                          _lhsImoduleNm
                                                                                          _lhsIopts
                                                                                          _lhsIsysfEnv
+                                                                                         _lhsItr
                                                                                          _lhsItyKiGlobFreeTvarS
                                                                                          _lhsItyTyGlobFreeTvarS
                                                                                          _lhsItyTyTySigFreeTvarS
@@ -635,49 +660,54 @@
                                                                                              (_lhsImoduleNm `seq`
                                                                                               (_lhsIopts `seq`
                                                                                                (_lhsIsysfEnv `seq`
-                                                                                                (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                    ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                      { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                       { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                        { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                         { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                         (case (_lhsIsysfEnv) of
-                                                                                                          { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) ->
-                                                                                                          (case (_lhsIopts) of
-                                                                                                           { _kiExprOopts | _kiExprOopts `seq` (True) ->
-                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                            { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) ->
-                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                             { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) ->
-                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                              { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) ->
-                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                               { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) ->
-                                                                                                               (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of
-                                                                                                                { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp) | True ->
-                                                                                                                    (case (_kiExprIallErrSq) of
-                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                     (case ([]) of
-                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                      (case (hsnUnknown) of
-                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                       (case (ppParens _kiExprIpp) of
-                                                                                                                        { _pp | _pp `seq` (True) ->
-                                                                                                                        (case (_pp) of
-                                                                                                                         { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                         (case (_kiExprIerrSq) of
-                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                          (case (_kiExprIgathMentrelFilterMp) of
-                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                           (case (_pp) of
-                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                            ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                (_lhsItr `seq`
+                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                     ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                       { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                        { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                         { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                          { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                          (case (_lhsItr) of
+                                                                                                           { _kiExprOtr | _kiExprOtr `seq` (True) ->
+                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                            { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) ->
+                                                                                                            (case (_lhsIopts) of
+                                                                                                             { _kiExprOopts | _kiExprOopts `seq` (True) ->
+                                                                                                             (case (_lhsImoduleNm) of
+                                                                                                              { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) ->
+                                                                                                              (case (_lhsIfinTyVarMp) of
+                                                                                                               { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) ->
+                                                                                                               (case (_lhsIfinTyKiGam) of
+                                                                                                                { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) ->
+                                                                                                                (case (_lhsIfinKiVarMp) of
+                                                                                                                 { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) ->
+                                                                                                                 (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtr _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of
+                                                                                                                  { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp,_kiExprItrpp) | True ->
+                                                                                                                      (case (_kiExprIallErrSq) of
+                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                       (case ([]) of
+                                                                                                                        { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                        (case (hsnUnknown) of
+                                                                                                                         { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                         (case (ppParens _kiExprIpp) of
+                                                                                                                          { _pp | _pp `seq` (True) ->
+                                                                                                                          (case (_pp) of
+                                                                                                                           { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                           (case (_kiExprIerrSq) of
+                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                            (case (_kiExprIgathMentrelFilterMp) of
+                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                             (case (_pp) of
+                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                              (case (_kiExprItrpp) of
+                                                                                                                               { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                               ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
                                                                               in  sem_KiExpr_Parens_3)) of
                                                                        { ( sem_KiExpr_3) | True ->
                                                                        ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) })))
@@ -730,6 +760,7 @@
                                                                                          _lhsImoduleNm
                                                                                          _lhsIopts
                                                                                          _lhsIsysfEnv
+                                                                                         _lhsItr
                                                                                          _lhsItyKiGlobFreeTvarS
                                                                                          _lhsItyTyGlobFreeTvarS
                                                                                          _lhsItyTyTySigFreeTvarS
@@ -740,49 +771,54 @@
                                                                                              (_lhsImoduleNm `seq`
                                                                                               (_lhsIopts `seq`
                                                                                                (_lhsIsysfEnv `seq`
-                                                                                                (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                    ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                      { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                       { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                        { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                         { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                         (case (_lhsIsysfEnv) of
-                                                                                                          { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) ->
-                                                                                                          (case (_lhsIopts) of
-                                                                                                           { _kiExprOopts | _kiExprOopts `seq` (True) ->
-                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                            { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) ->
-                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                             { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) ->
-                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                              { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) ->
-                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                               { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) ->
-                                                                                                               (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of
-                                                                                                                { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp) | True ->
-                                                                                                                    (case (_kiExprIallErrSq) of
-                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                     (case ([]) of
-                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                      (case (hsnUnknown) of
-                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                       (case (_kiExprIpp) of
-                                                                                                                        { _pp | _pp `seq` (True) ->
-                                                                                                                        (case (_pp) of
-                                                                                                                         { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                         (case (_kiExprIerrSq) of
-                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                          (case (_kiExprIgathMentrelFilterMp) of
-                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                           (case (_pp) of
-                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                            ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                (_lhsItr `seq`
+                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                     ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                       { _kiExprOvalTyGlobFreeTvarS | _kiExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                        { _kiExprOtyTyTySigFreeTvarS | _kiExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                         { _kiExprOtyTyGlobFreeTvarS | _kiExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                          { _kiExprOtyKiGlobFreeTvarS | _kiExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                          (case (_lhsItr) of
+                                                                                                           { _kiExprOtr | _kiExprOtr `seq` (True) ->
+                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                            { _kiExprOsysfEnv | _kiExprOsysfEnv `seq` (True) ->
+                                                                                                            (case (_lhsIopts) of
+                                                                                                             { _kiExprOopts | _kiExprOopts `seq` (True) ->
+                                                                                                             (case (_lhsImoduleNm) of
+                                                                                                              { _kiExprOmoduleNm | _kiExprOmoduleNm `seq` (True) ->
+                                                                                                              (case (_lhsIfinTyVarMp) of
+                                                                                                               { _kiExprOfinTyVarMp | _kiExprOfinTyVarMp `seq` (True) ->
+                                                                                                               (case (_lhsIfinTyKiGam) of
+                                                                                                                { _kiExprOfinTyKiGam | _kiExprOfinTyKiGam `seq` (True) ->
+                                                                                                                (case (_lhsIfinKiVarMp) of
+                                                                                                                 { _kiExprOfinKiVarMp | _kiExprOfinKiVarMp `seq` (True) ->
+                                                                                                                 (case (kiExpr_3 _kiExprOfinKiVarMp _kiExprOfinTyKiGam _kiExprOfinTyVarMp _kiExprOmoduleNm _kiExprOopts _kiExprOsysfEnv _kiExprOtr _kiExprOtyKiGlobFreeTvarS _kiExprOtyTyGlobFreeTvarS _kiExprOtyTyTySigFreeTvarS _kiExprOvalTyGlobFreeTvarS) of
+                                                                                                                  { ( _kiExprIallErrSq,_kiExprIappArgPPL,_kiExprIappFunNm,_kiExprIappFunPP,_kiExprIerrSq,_kiExprIgathMentrelFilterMp,_kiExprIpp,_kiExprItrpp) | True ->
+                                                                                                                      (case (_kiExprIallErrSq) of
+                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                       (case ([]) of
+                                                                                                                        { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                        (case (hsnUnknown) of
+                                                                                                                         { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                         (case (_kiExprIpp) of
+                                                                                                                          { _pp | _pp `seq` (True) ->
+                                                                                                                          (case (_pp) of
+                                                                                                                           { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                           (case (_kiExprIerrSq) of
+                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                            (case (_kiExprIgathMentrelFilterMp) of
+                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                             (case (_pp) of
+                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                              (case (_kiExprItrpp) of
+                                                                                                                               { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                               ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
                                                                               in  sem_KiExpr_Ann_3)) of
                                                                        { ( sem_KiExpr_3) | True ->
                                                                        ( _lhsOki,_lhsOkiGam,sem_KiExpr_3) }) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_KiExprAnn.hs b/src/UHC/Light/Compiler/EH/MainAG_KiExprAnn.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_KiExprAnn.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_KiExprAnn.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/EH/MainAG_MbTyExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_MbTyExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_MbTyExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_MbTyExpr.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -117,6 +117,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -129,6 +130,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          pp                   : PP_Doc
          ppMb                 : Maybe PP_Doc
+         trpp                 : TrPP
          tyGam                : TyGam
          tyKiGam              : TyKiGam
          tyVarWildMp          : TyVarWildMp
@@ -211,6 +213,7 @@
                                                                                                                                              _lhsImoduleNm
                                                                                                                                              _lhsIopts
                                                                                                                                              _lhsIsysfEnv
+                                                                                                                                             _lhsItr
                                                                                                                                              _lhsItyKiGlobFreeTvarS
                                                                                                                                              _lhsItyTyGlobFreeTvarS
                                                                                                                                              _lhsItyTyTySigFreeTvarS
@@ -223,59 +226,64 @@
                                                                                                                                                    (_lhsImoduleNm `seq`
                                                                                                                                                     (_lhsIopts `seq`
                                                                                                                                                      (_lhsIsysfEnv `seq`
-                                                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                        (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                          ((case (_lhsIclGam) of
-                                                                                                                                                            { _justOclGam | _justOclGam `seq` (True) ->
-                                                                                                                                                            (case (just_7 _justOclGam) of
-                                                                                                                                                             { ( _justIevTy,just_8) | True ->
-                                                                                                                                                                 (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                  { _justOvalTyGlobFreeTvarS | _justOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                   { _justOtyTyTySigFreeTvarS | _justOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                    { _justOtyTyGlobFreeTvarS | _justOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                    (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                     { _justOtyKiGlobFreeTvarS | _justOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                     (case (_lhsIsysfEnv) of
-                                                                                                                                                                      { _justOsysfEnv | _justOsysfEnv `seq` (True) ->
-                                                                                                                                                                      (case (_lhsIopts) of
-                                                                                                                                                                       { _justOopts | _justOopts `seq` (True) ->
-                                                                                                                                                                       (case (_lhsImoduleNm) of
-                                                                                                                                                                        { _justOmoduleNm | _justOmoduleNm `seq` (True) ->
-                                                                                                                                                                        (case (_lhsIkiGam) of
-                                                                                                                                                                         { _justOkiGam | _justOkiGam `seq` (True) ->
-                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                          { _justOfinTyVarMp | _justOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                           { _justOfinTyKiGam | _justOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                            { _justOfinKiVarMp | _justOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                            (case (just_8 _justOfinKiVarMp _justOfinTyKiGam _justOfinTyVarMp _justOkiGam _justOmoduleNm _justOopts _justOsysfEnv _justOtyKiGlobFreeTvarS _justOtyTyGlobFreeTvarS _justOtyTyTySigFreeTvarS _justOvalTyGlobFreeTvarS) of
-                                                                                                                                                                             { ( _justIallErrSq,_justIappArgPPL,_justIappFunNm,_justIappFunPP,_justIclMissNmS,_justIclNmS,_justIerrSq,_justIgathMentrelFilterMp,_justIpp,_justItyWildL) | True ->
-                                                                                                                                                                                 (case (_justIallErrSq) of
-                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                  (case (_justIclMissNmS) of
-                                                                                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                   (case (_justIclNmS) of
-                                                                                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                    (case (_justIerrSq) of
-                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                     (case (_justIgathMentrelFilterMp) of
-                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                      (case (_justIpp) of
-                                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                       (case (Just _justIpp) of
-                                                                                                                                                                                        { _lhsOppMb | _lhsOppMb `seq` (True) ->
-                                                                                                                                                                                        (case (_justItyGam) of
-                                                                                                                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                                                                                         (case (_justItyKiGam) of
-                                                                                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                                          (case (_justItyVarWildMp) of
-                                                                                                                                                                                           { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                           ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppMb,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                      (_lhsItr `seq`
+                                                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                         (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                           ((case (_lhsIclGam) of
+                                                                                                                                                             { _justOclGam | _justOclGam `seq` (True) ->
+                                                                                                                                                             (case (just_7 _justOclGam) of
+                                                                                                                                                              { ( _justIevTy,just_8) | True ->
+                                                                                                                                                                  (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                   { _justOvalTyGlobFreeTvarS | _justOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                    { _justOtyTyTySigFreeTvarS | _justOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                     { _justOtyTyGlobFreeTvarS | _justOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                     (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                      { _justOtyKiGlobFreeTvarS | _justOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                      (case (_lhsItr) of
+                                                                                                                                                                       { _justOtr | _justOtr `seq` (True) ->
+                                                                                                                                                                       (case (_lhsIsysfEnv) of
+                                                                                                                                                                        { _justOsysfEnv | _justOsysfEnv `seq` (True) ->
+                                                                                                                                                                        (case (_lhsIopts) of
+                                                                                                                                                                         { _justOopts | _justOopts `seq` (True) ->
+                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                          { _justOmoduleNm | _justOmoduleNm `seq` (True) ->
+                                                                                                                                                                          (case (_lhsIkiGam) of
+                                                                                                                                                                           { _justOkiGam | _justOkiGam `seq` (True) ->
+                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                            { _justOfinTyVarMp | _justOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                             { _justOfinTyKiGam | _justOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                              { _justOfinKiVarMp | _justOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                              (case (just_8 _justOfinKiVarMp _justOfinTyKiGam _justOfinTyVarMp _justOkiGam _justOmoduleNm _justOopts _justOsysfEnv _justOtr _justOtyKiGlobFreeTvarS _justOtyTyGlobFreeTvarS _justOtyTyTySigFreeTvarS _justOvalTyGlobFreeTvarS) of
+                                                                                                                                                                               { ( _justIallErrSq,_justIappArgPPL,_justIappFunNm,_justIappFunPP,_justIclMissNmS,_justIclNmS,_justIerrSq,_justIgathMentrelFilterMp,_justIpp,_justItrpp,_justItyWildL) | True ->
+                                                                                                                                                                                   (case (_justIallErrSq) of
+                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                    (case (_justIclMissNmS) of
+                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                     (case (_justIclNmS) of
+                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                      (case (_justIerrSq) of
+                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                       (case (_justIgathMentrelFilterMp) of
+                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                        (case (_justIpp) of
+                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                         (case (Just _justIpp) of
+                                                                                                                                                                                          { _lhsOppMb | _lhsOppMb `seq` (True) ->
+                                                                                                                                                                                          (case (_justItrpp) of
+                                                                                                                                                                                           { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                           (case (_justItyGam) of
+                                                                                                                                                                                            { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                                                                                            (case (_justItyKiGam) of
+                                                                                                                                                                                             { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                                             (case (_justItyVarWildMp) of
+                                                                                                                                                                                              { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppMb,_lhsOtrpp,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))
                                                                                                                                   in  sem_MbTyExpr_Just_4)) of
                                                                                                                            { ( sem_MbTyExpr_4) | True ->
                                                                                                                            ( _lhsOintlTyKiGam,_lhsOkiVarMp,sem_MbTyExpr_4) }) }) }) }) }) }) }))))
@@ -334,6 +342,7 @@
                                                                                                    _lhsImoduleNm
                                                                                                    _lhsIopts
                                                                                                    _lhsIsysfEnv
+                                                                                                   _lhsItr
                                                                                                    _lhsItyKiGlobFreeTvarS
                                                                                                    _lhsItyTyGlobFreeTvarS
                                                                                                    _lhsItyTyTySigFreeTvarS
@@ -346,31 +355,34 @@
                                                                                                          (_lhsImoduleNm `seq`
                                                                                                           (_lhsIopts `seq`
                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                            (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                ((case (Seq.empty) of
-                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                  (case (Set.empty) of
-                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                            (_lhsItr `seq`
+                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                 ((case (Seq.empty) of
+                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                    (case (Set.empty) of
-                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                    (case (Seq.empty) of
-                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                     (case (Map.empty) of
-                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                      (case (empty) of
-                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                       (case (Nothing) of
-                                                                                                                        { _lhsOppMb | _lhsOppMb `seq` (True) ->
-                                                                                                                        (case (_lhsItyGam) of
-                                                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                         (case (_lhsItyKiGam) of
-                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                          (case (Map.empty) of
-                                                                                                                           { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                           ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppMb,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                    (case (Set.empty) of
+                                                                                                                     { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                     (case (Seq.empty) of
+                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                      (case (Map.empty) of
+                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                       (case (empty) of
+                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                        (case (Nothing) of
+                                                                                                                         { _lhsOppMb | _lhsOppMb `seq` (True) ->
+                                                                                                                         (case (trppEmpty) of
+                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                          (case (_lhsItyGam) of
+                                                                                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                           (case (_lhsItyKiGam) of
+                                                                                                                            { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                            (case (Map.empty) of
+                                                                                                                             { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                             ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppMb,_lhsOtrpp,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) })))))))))))))))
                                                                                         in  sem_MbTyExpr_Nothing_4)) of
                                                                                  { ( sem_MbTyExpr_4) | True ->
                                                                                  ( _lhsOintlTyKiGam,_lhsOkiVarMp,sem_MbTyExpr_4) }) }) }))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_PatExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_PatExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_PatExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_PatExpr.hs
@@ -19,5916 +19,6106 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- PatExpr -----------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attribute:
-         gUniq                : UID
-   visit 2:
-      inherited attributes:
-         kiGam                : KiGam
-         lexLev               : Int
-      chained attribute:
-         predSameScopeCounter : Int
-   visit 3:
-      inherited attributes:
-         opts                 : EHCOpts
-         polGam               : PolGam
-         predScope            : PredScope
-         tyKiGlobFreeTvarS    : TyVarIdS
-      chained attributes:
-         kiVarMp              : VarMp
-         polVarMp             : VarMp
-         tyGam                : TyGam
-         tyKiGam              : TyKiGam
-   visit 4:
-      inherited attributes:
-         clGam                : ClGam
-         dataGam              : DataGam
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         tyTyTySigFreeTvarS   : TyVarIdS
-      synthesized attributes:
-         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
-         topNm                : HsName
-   visit 5:
-      inherited attribute:
-         valGam               : ValGam
-      synthesized attributes:
-         arity                : Int
-         mbTopNm              : Maybe HsName
-         patFunTy             : Ty
-   visit 6:
-      inherited attributes:
-         fiOpts               : FIOpts
-         inclVarBind          : Bool
-         knTy                 : Ty
-         knTyL                : TyL
-         tySigGam             : ValGam
-      chained attribute:
-         patTyVarMp           : VarMp
-      synthesized attribute:
-         valGam               : ValGam
-   visit 7:
-      inherited attributes:
-         chrStore             : ScopedPredStore
-         clDfGam              : ClassDefaultGam
-         tvKiVarMp            : VarMp
-         tyTyGlobFreeTvarS    : TyVarIdS
-         valTyGlobFreeTvarS   : TyVarIdS
-      chained attribute:
-         tyVarMp              : VarMp
-      synthesized attributes:
-         cpNm                 : RPatNm
-         gathCnstrMp          : CHRPredOccCnstrMp
-         gathRangeMp          : RangeMp
-         scopeGam             : ScopeGam
-         ty                   : Ty
-   visit 8:
-      inherited attributes:
-         ceParentNm           : HsName
-         chrEvidBindMp        : EvidKeyToCBindMap
-         chrScopeBindMp       : PredScopeToCBindMap
-         finTyVarMp           : VarMp
-         finValGam            : ValGam
-         moduleNm             : HsName
-         rangeMp              : RangeMp
-         sysfEnv              : ToSysfEnv
-         tySigVarMp           : VarMp
-      chained attribute:
-         cSubst               : CSubst
-      synthesized attributes:
-         allErrSq             : ErrSq
-         appArgPPL            : [PP_Doc]
-         appFunNm             : HsName
-         appFunPP             : PP_Doc
-         errSq                : ErrSq
-         fsRPatL              : FieldSplitL
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         gathTvKiVarMp        : VarMp
-         isBang               : Bool
-         patCRest             : CPatRest
-         pp                   : PP_Doc
-         rpat                 : RPat
-         valCBindL            : CBindL
-   alternatives:
-      alternative IConst:
-         child hsrange        : {Range}
-         child int            : {Int}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup169     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup169     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup169     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup169     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            local finalTy     : _
-            local fe          : {FIEnv}
-            local finalTyExpanded : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            intra ty          : {Ty}
-            intra range       : {Range}
-            intra cpNm        : {RPatNm}
-      alternative CConst:
-         child hsrange        : {Range}
-         child char           : {Char}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup170     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup170     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup170     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup170     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            local finalTy     : _
-            local fe          : {FIEnv}
-            local finalTyExpanded : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            intra ty          : {Ty}
-            intra range       : {Range}
-            intra cpNm        : {RPatNm}
-      alternative Con:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup173     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup173     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup173     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup173     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            local lUniq2      : {UID}
-            local _tup172     : _
-            local tvarv2_     : {Ty}
-            local tvarv1_     : {Ty}
-            local knTyShape   : _
-            local _tup171     : _
-            local ty_g_       : {Ty}
-            local fe          : {FIEnv}
-            local fo_fitP_    : {FIOut}
-            local tyVarMp_p_  : {VarMp}
-            local patFunTy    : {Ty}
-            intra _tup173     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-            intra topNm       : {HsName}
-         visit 6:
-            local lUniq3      : {UID}
-            local fo_fitR_    : {FIOut}
-            intra _tup173     : _
-            intra tvarv1_     : {Ty}
-            intra tyVarMp_p_  : {VarMp}
-            intra fe          : {FIEnv}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra _tup171     : _
-            intra range       : {Range}
-            intra ty_g_       : {Ty}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty_r_       : _
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra fo_fitR_    : {FIOut}
-            intra _tup171     : _
-            intra range       : {Range}
-            intra ty_g_       : {Ty}
-            intra tvarv1_     : {Ty}
-            intra fe          : {FIEnv}
-         visit 8:
-            local appFunNm    : _
-            local pp          : _
-            local nmErrs      : {ErrL}
-            local fsRPatL     : _
-            local gathMentrelFilterMp : _
-            local knPatTy     : {Ty}
-            local finalTy     : _
-            local finalTyExpanded : _
-            local finKnPatTy  : _
-            local tyConNm     : _
-            local dgi         : {DataGamInfo}
-            local dti         : _
-            local tag         : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            intra _tup171     : _
-            intra fo_fitR_    : {FIOut}
-            intra range       : {Range}
-            intra ty_g_       : {Ty}
-            intra tvarv1_     : {Ty}
-            intra ty          : {Ty}
-            intra fe          : {FIEnv}
-            intra cpNm        : {RPatNm}
-      alternative Var:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup177     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup177     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup177     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup177     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra _tup177     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-            intra topNm       : {HsName}
-         visit 6:
-            local lUniq_4_fo  : {UID}
-            local lUniq2      : {UID}
-            local _tup176     : _
-            local ty_kn_ensured : _
-            local ty_kn_      : {Ty}
-            local patTyVarMpKnTyEns : _
-            local patTyVarMpKnTy1 : _
-            local _tup174     : _
-            local ty_g_       : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            local _tup175     : _
-            local patTyVarMpKnEx : _
-            local ty          : {Ty}
-            local varTy       : _
-            local addToGam    : _
-            intra _tup177     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 7:
-            local cpNm        : {RPatNm}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra ty          : {Ty}
-            intra fe          : {FIEnv}
-         visit 8:
-            local pp          : _
-            local finalTy     : _
-            local finalTyExpanded : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            intra ty          : {Ty}
-            intra fe          : {FIEnv}
-            intra cpNm        : {RPatNm}
-      alternative VarAs:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup180     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup180     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup180     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup180     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra _tup180     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-            intra topNm       : {HsName}
-         visit 6:
-            local lUniq_4_fo  : {UID}
-            local lUniq2      : {UID}
-            local patTyVarMpKnTy1 : _
-            local ty_kn_      : {Ty}
-            local _tup178     : _
-            local ty_g_       : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            local _tup179     : _
-            local patTyVarMpKnEx : _
-            local ty          : {Ty}
-            local varTy       : _
-            local addToGam    : _
-            intra _tup180     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 7:
-            local cpNm        : {RPatNm}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-            local rpat        : _
-            intra cpNm        : {RPatNm}
-      alternative App:
-         child hsrange        : {Range}
-         child func           : PatExpr 
-         child arg            : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup183     : _
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-         visit 6:
-            local _tup182     : _
-            local knTyL       : {TyL}
-            local knArgTy     : {Ty}
-         visit 7:
-            local cpNm        : {RPatNm}
-         visit 8:
-            local _tup181     : _
-            local pp          : _
-      alternative AppTop:
-         child hsrange        : {Range}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup186     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup186     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup186     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup186     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            local patFunTy    : {Ty}
-            intra range       : {Range}
-            intra lUniq       : {UID}
-            intra topNm       : {HsName}
-         visit 6:
-            local _tup185     : _
-            local knProdTy    : _
-            local prodTyL     : _
-            local _tup184     : _
-            local knTyL       : {TyL}
-            local knPatTy     : {Ty}
-            local fe          : {FIEnv}
-            local fo_fitR_    : {FIOut}
-            intra patFunTy    : {Ty}
-            intra range       : {Range}
-            intra lUniq       : {UID}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra fo_fitR_    : {FIOut}
-            intra _tup184     : _
-            intra range       : {Range}
-            intra fe          : {FIEnv}
-            intra knPatTy     : {Ty}
-         visit 8:
-            local pp          : _
-            local arityErrs   : {ErrL}
-            local appFunNm    : _
-            local finalTy     : _
-            local finalTyExpanded : _
-            local finKnPatTy  : _
-            local fsRPatL     : _
-            local rpatBinds   : _
-            local rest        : _
-            local tyConNm     : _
-            local dgi         : {DataGamInfo}
-            local dti         : _
-            local tag         : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            local rceEnv      : _
-            local valCBindLSub : _
-            local valCBindL   : _
-            intra _tup184     : _
-            intra fo_fitR_    : {FIOut}
-            intra range       : {Range}
-            intra ty          : {Ty}
-            intra fe          : {FIEnv}
-            intra knPatTy     : {Ty}
-            intra cpNm        : {RPatNm}
-      alternative Parens:
-         child hsrange        : {Range}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup187     : _
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-         visit 8:
-            local pp          : _
-      alternative Ann:
-         child hsrange        : {Range}
-         child ann            : PatExprAnn 
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup188     : _
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-         visit 8:
-            local pp          : _
-      alternative TypeAs:
-         child hsrange        : {Range}
-         child tyExpr         : TyExpr 
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup189     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup189     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup189     : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup189     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra _tup189     : _
-            intra range       : {Range}
-         visit 6:
-            local lUniq_4_fo  : {UID}
-            local ty_q_       : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup189     : _
-            intra range       : {Range}
-         visit 7:
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-      alternative SConst:
-         child hsrange        : {Range}
-         child str            : {String}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup190     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup190     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup190     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup190     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra range       : {Range}
-            intra lUniq       : {UID}
-            intra topNm       : {HsName}
-         visit 6:
-            local constTy     : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra range       : {Range}
-            intra lUniq       : {UID}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra constTy     : {Ty}
-            intra fe          : {FIEnv}
-         visit 8:
-            local pp          : _
-            local finalTy     : _
-            local finalTyExpanded : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            intra ty          : {Ty}
-            intra fe          : {FIEnv}
-            intra cpNm        : {RPatNm}
-      alternative Rec:
-         child hsrange        : {Range}
-         child recPatExpr     : RecPatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup191     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup191     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup191     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup191     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 8:
-            local appFunNm    : _
-            local pp          : _
-            local fsRPatL     : _
-            local finalTy     : _
-            local fe          : {FIEnv}
-            local finalTyExpanded : _
-            local rpatBinds   : _
-            local rest        : _
-            local tag         : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            local rceEnv      : _
-            local valCBindLSub : _
-            local valCBindL   : _
-            intra range       : {Range}
-            intra ty          : {Ty}
-            intra cpNm        : {RPatNm}
-      alternative DataFields:
-         child hsrange        : {Range}
-         child dataFieldPatExpr : DataFieldPatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup193     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup193     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup193     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup193     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            local finalTy     : _
-            local fe          : {FIEnv}
-            local finalTyExpanded : _
-            local fsRPatL     : _
-            local tag         : _
-            local _tup192     : _
-            local rpatBind0   : _
-            local rpatBindss  : _
-            local rest        : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            local rceEnv      : _
-            local valCBindLSub : _
-            local rpatBindsNonSat : _
-            local valCBindL   : _
-            intra ty          : {Ty}
-            intra range       : {Range}
-            intra cpNm        : {RPatNm}
-      alternative Irrefutable:
-         child hsrange        : {Range}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup194     : _
-            intra range       : {Range}
-         visit 2:
-            intra range       : {Range}
-         visit 3:
-            intra range       : {Range}
-         visit 4:
-            local topNm       : {HsName}
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            local finalTy     : _
-            local fe          : {FIEnv}
-            local finalTyExpanded : _
-            local sysfty      : _
-            local acorety     : _
-            local rpat        : _
-            intra ty          : {Ty}
-            intra range       : {Range}
-            intra cpNm        : {RPatNm}
-      alternative Bang:
-         child hsrange        : {Range}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup195     : _
-         visit 4:
-            local topNm       : {HsName}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local ty          : {Ty}
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-         visit 8:
-            local pp          : _
-            local rpat        : _
-      alternative Expr:
-         child hsrange        : {Range}
-         child expr           : Expr 
-         child mbConst        : {Maybe SrcConst}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup198     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup198     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup198     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq       : {UID}
-            local topNm       : {HsName}
-            intra _tup198     : _
-            intra range       : {Range}
-         visit 5:
-            local mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra _tup198     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-         visit 6:
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra _tup198     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-         visit 7:
-            local cpNm        : {RPatNm}
-            local lUniq_97_fitsIn_ty : {UID}
-            local knExprTy    : {Ty}
-            local eqFldNm     : {HsName}
-            local _tup197     : _
-            local eqTy        : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            local hereCnstrMp : _
-            intra mbTopNm     : {Maybe HsName}
-            intra topNm       : {HsName}
-            intra _tup198     : _
-            intra lUniq       : {UID}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            local lUniq_cexpr : {UID}
-            local cexprBaseEq : _
-            local _tup196     : _
-            local cexprpatCSubst : _
-            local nmErrs      : {ErrL}
-            local gathMentrelFilterMp : _
-            local cexpr       : _
-            local rpat        : _
-            intra _tup198     : _
-            intra eqFldNm     : {HsName}
-            intra fo_         : {FIOut}
-            intra _tup197     : _
-            intra range       : {Range}
-            intra eqTy        : {Ty}
-            intra cpNm        : {RPatNm}
--}
-sem_PatExpr_IConst :: Range ->
-                      Int ->
-                      T_PatExpr
-
-sem_PatExpr_IConst hsrange_ int_ | hsrange_ `seq` (int_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_PatExpr_IConst_1 :: T_PatExpr_1
-                  sem_PatExpr_IConst_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup169 | __tup169 `seq` (True) ->
-                             (case (__tup169) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_PatExpr_IConst_2 :: T_PatExpr_2
-                                          sem_PatExpr_IConst_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_PatExpr_IConst_3 :: T_PatExpr_3
-                                                                   sem_PatExpr_IConst_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_PatExpr_IConst_4 :: T_PatExpr_4
-                                                                                                    sem_PatExpr_IConst_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                 ((case (Seq.empty) of
-                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                   (case (__tup169) of
-                                                                                                                    { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                    (case (uidHNm _lUniq) of
-                                                                                                                     { _topNm | _topNm `seq` (True) ->
-                                                                                                                     (case (_topNm) of
-                                                                                                                      { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                      (case ((let sem_PatExpr_IConst_5 :: T_PatExpr_5
-                                                                                                                                  sem_PatExpr_IConst_5 =
-                                                                                                                                      (\ _lhsIvalGam ->
-                                                                                                                                           _lhsIvalGam `seq`
-                                                                                                                                           ((case (0) of
-                                                                                                                                             { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                             (case (Nothing) of
-                                                                                                                                              { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                              (case (_mbTopNm) of
-                                                                                                                                               { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                               (case (Ty_Any) of
-                                                                                                                                                { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                (case ((let sem_PatExpr_IConst_6 :: T_PatExpr_6
-                                                                                                                                                            sem_PatExpr_IConst_6 =
-                                                                                                                                                                (\ _lhsIfiOpts
-                                                                                                                                                                   _lhsIinclVarBind
-                                                                                                                                                                   _lhsIknTy
-                                                                                                                                                                   _lhsIknTyL
-                                                                                                                                                                   _lhsIpatTyVarMp
-                                                                                                                                                                   _lhsItySigGam ->
-                                                                                                                                                                     _lhsIfiOpts `seq`
-                                                                                                                                                                     (_lhsIinclVarBind `seq`
-                                                                                                                                                                      (_lhsIknTy `seq`
-                                                                                                                                                                       (_lhsIknTyL `seq`
-                                                                                                                                                                        (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                         (_lhsItySigGam `seq`
-                                                                                                                                                                          ((case (_lhsIpatTyVarMp) of
-                                                                                                                                                                            { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                            (case (_lhsIvalGam) of
-                                                                                                                                                                             { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                             (case ((let sem_PatExpr_IConst_7 :: T_PatExpr_7
-                                                                                                                                                                                         sem_PatExpr_IConst_7 =
-                                                                                                                                                                                             (\ _lhsIchrStore
-                                                                                                                                                                                                _lhsIclDfGam
-                                                                                                                                                                                                _lhsItvKiVarMp
-                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                _lhsItyVarMp
-                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                  _lhsIchrStore `seq`
-                                                                                                                                                                                                  (_lhsIclDfGam `seq`
-                                                                                                                                                                                                   (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                     (_lhsItyVarMp `seq`
-                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                       ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                         { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                         (case (_cpNm) of
-                                                                                                                                                                                                          { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                          (case (Map.empty) of
-                                                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                           (case (Map.empty) of
-                                                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                            (case (emptyGam) of
-                                                                                                                                                                                                             { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                             (case (tyInt) of
-                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                              (case (_ty) of
-                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                               (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                (case ((let sem_PatExpr_IConst_8 :: T_PatExpr_8
-                                                                                                                                                                                                                            sem_PatExpr_IConst_8 =
-                                                                                                                                                                                                                                (\ _lhsIcSubst
-                                                                                                                                                                                                                                   _lhsIceParentNm
-                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                   _lhsIfinTyVarMp
-                                                                                                                                                                                                                                   _lhsIfinValGam
-                                                                                                                                                                                                                                   _lhsImoduleNm
-                                                                                                                                                                                                                                   _lhsIrangeMp
-                                                                                                                                                                                                                                   _lhsIsysfEnv
-                                                                                                                                                                                                                                   _lhsItySigVarMp ->
-                                                                                                                                                                                                                                     _lhsIcSubst `seq`
-                                                                                                                                                                                                                                     (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                             (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                              ((case (Seq.empty) of
-                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (pp (show int_)) of
-                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                     { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (Seq.empty) of
-                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                       { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (Map.empty) of
-                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (emptyVarMp) of
-                                                                                                                                                                                                                                                         { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (False) of
-                                                                                                                                                                                                                                                          { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                           { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_pp) of
-                                                                                                                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                             { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (defaultFIEnv
-                                                                                                                                                                                                                                                                        { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                        , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                        , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                        , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                        , feRange = _range
-                                                                                                                                                                                                                                                                        }) of
-                                                                                                                                                                                                                                                              { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                               { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                               (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                 { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (RPat_Int _cpNm _acorety (toInteger int_)) of
-                                                                                                                                                                                                                                                                  { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_rpat) of
-                                                                                                                                                                                                                                                                   { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case ([]) of
-                                                                                                                                                                                                                                                                    { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                        in  sem_PatExpr_IConst_8)) of
-                                                                                                                                                                                                                 { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                 ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                     in  sem_PatExpr_IConst_7)) of
-                                                                                                                                                                              { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                              ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }))))))))
-                                                                                                                                                        in  sem_PatExpr_IConst_6)) of
-                                                                                                                                                 { ( sem_PatExpr_6) | True ->
-                                                                                                                                                 ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                              in  sem_PatExpr_IConst_5)) of
-                                                                                                                       { ( sem_PatExpr_5) | True ->
-                                                                                                                       ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
-                                                                                                in  sem_PatExpr_IConst_4)) of
-                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }))))))))))
-                                                               in  sem_PatExpr_IConst_3)) of
-                                                        { ( sem_PatExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
-                                      in  sem_PatExpr_IConst_2)) of
-                               { ( sem_PatExpr_2) | True ->
-                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
-              in  sem_PatExpr_IConst_1)) of
-       { ( sem_PatExpr_1) | True ->
-       ( _lhsOrange,sem_PatExpr_1) }) }) })
-
-sem_PatExpr_CConst :: Range ->
-                      Char ->
-                      T_PatExpr
-
-sem_PatExpr_CConst hsrange_ char_ | hsrange_ `seq` (char_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_PatExpr_CConst_1 :: T_PatExpr_1
-                  sem_PatExpr_CConst_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup170 | __tup170 `seq` (True) ->
-                             (case (__tup170) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_PatExpr_CConst_2 :: T_PatExpr_2
-                                          sem_PatExpr_CConst_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_PatExpr_CConst_3 :: T_PatExpr_3
-                                                                   sem_PatExpr_CConst_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_PatExpr_CConst_4 :: T_PatExpr_4
-                                                                                                    sem_PatExpr_CConst_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                 ((case (Seq.empty) of
-                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                   (case (__tup170) of
-                                                                                                                    { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                    (case (uidHNm _lUniq) of
-                                                                                                                     { _topNm | _topNm `seq` (True) ->
-                                                                                                                     (case (_topNm) of
-                                                                                                                      { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                      (case ((let sem_PatExpr_CConst_5 :: T_PatExpr_5
-                                                                                                                                  sem_PatExpr_CConst_5 =
-                                                                                                                                      (\ _lhsIvalGam ->
-                                                                                                                                           _lhsIvalGam `seq`
-                                                                                                                                           ((case (0) of
-                                                                                                                                             { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                             (case (Nothing) of
-                                                                                                                                              { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                              (case (_mbTopNm) of
-                                                                                                                                               { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                               (case (Ty_Any) of
-                                                                                                                                                { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                (case ((let sem_PatExpr_CConst_6 :: T_PatExpr_6
-                                                                                                                                                            sem_PatExpr_CConst_6 =
-                                                                                                                                                                (\ _lhsIfiOpts
-                                                                                                                                                                   _lhsIinclVarBind
-                                                                                                                                                                   _lhsIknTy
-                                                                                                                                                                   _lhsIknTyL
-                                                                                                                                                                   _lhsIpatTyVarMp
-                                                                                                                                                                   _lhsItySigGam ->
-                                                                                                                                                                     _lhsIfiOpts `seq`
-                                                                                                                                                                     (_lhsIinclVarBind `seq`
-                                                                                                                                                                      (_lhsIknTy `seq`
-                                                                                                                                                                       (_lhsIknTyL `seq`
-                                                                                                                                                                        (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                         (_lhsItySigGam `seq`
-                                                                                                                                                                          ((case (_lhsIpatTyVarMp) of
-                                                                                                                                                                            { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                            (case (_lhsIvalGam) of
-                                                                                                                                                                             { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                             (case ((let sem_PatExpr_CConst_7 :: T_PatExpr_7
-                                                                                                                                                                                         sem_PatExpr_CConst_7 =
-                                                                                                                                                                                             (\ _lhsIchrStore
-                                                                                                                                                                                                _lhsIclDfGam
-                                                                                                                                                                                                _lhsItvKiVarMp
-                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                _lhsItyVarMp
-                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                  _lhsIchrStore `seq`
-                                                                                                                                                                                                  (_lhsIclDfGam `seq`
-                                                                                                                                                                                                   (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                     (_lhsItyVarMp `seq`
-                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                       ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                         { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                         (case (_cpNm) of
-                                                                                                                                                                                                          { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                          (case (Map.empty) of
-                                                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                           (case (Map.empty) of
-                                                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                            (case (emptyGam) of
-                                                                                                                                                                                                             { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                             (case (tyChar) of
-                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                              (case (_ty) of
-                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                               (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                (case ((let sem_PatExpr_CConst_8 :: T_PatExpr_8
-                                                                                                                                                                                                                            sem_PatExpr_CConst_8 =
-                                                                                                                                                                                                                                (\ _lhsIcSubst
-                                                                                                                                                                                                                                   _lhsIceParentNm
-                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                   _lhsIfinTyVarMp
-                                                                                                                                                                                                                                   _lhsIfinValGam
-                                                                                                                                                                                                                                   _lhsImoduleNm
-                                                                                                                                                                                                                                   _lhsIrangeMp
-                                                                                                                                                                                                                                   _lhsIsysfEnv
-                                                                                                                                                                                                                                   _lhsItySigVarMp ->
-                                                                                                                                                                                                                                     _lhsIcSubst `seq`
-                                                                                                                                                                                                                                     (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                             (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                              ((case (Seq.empty) of
-                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (pp (show char_)) of
-                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                     { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (Seq.empty) of
-                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                       { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (Map.empty) of
-                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (emptyVarMp) of
-                                                                                                                                                                                                                                                         { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (False) of
-                                                                                                                                                                                                                                                          { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                           { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_pp) of
-                                                                                                                                                                                                                                                            { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                             { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (defaultFIEnv
-                                                                                                                                                                                                                                                                        { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                        , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                        , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                        , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                        , feRange = _range
-                                                                                                                                                                                                                                                                        }) of
-                                                                                                                                                                                                                                                              { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                               { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                               (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                 { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (RPat_Char _cpNm _acorety char_) of
-                                                                                                                                                                                                                                                                  { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_rpat) of
-                                                                                                                                                                                                                                                                   { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case ([]) of
-                                                                                                                                                                                                                                                                    { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                        in  sem_PatExpr_CConst_8)) of
-                                                                                                                                                                                                                 { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                 ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                     in  sem_PatExpr_CConst_7)) of
-                                                                                                                                                                              { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                              ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }))))))))
-                                                                                                                                                        in  sem_PatExpr_CConst_6)) of
-                                                                                                                                                 { ( sem_PatExpr_6) | True ->
-                                                                                                                                                 ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                              in  sem_PatExpr_CConst_5)) of
-                                                                                                                       { ( sem_PatExpr_5) | True ->
-                                                                                                                       ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
-                                                                                                in  sem_PatExpr_CConst_4)) of
-                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }))))))))))
-                                                               in  sem_PatExpr_CConst_3)) of
-                                                        { ( sem_PatExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
-                                      in  sem_PatExpr_CConst_2)) of
-                               { ( sem_PatExpr_2) | True ->
-                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
-              in  sem_PatExpr_CConst_1)) of
-       { ( sem_PatExpr_1) | True ->
-       ( _lhsOrange,sem_PatExpr_1) }) }) })
-
-sem_PatExpr_Con :: Range ->
-                   HsName ->
-                   T_PatExpr
-
-sem_PatExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_PatExpr_Con_1 :: T_PatExpr_1
-                  sem_PatExpr_Con_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
-                             { __tup173 | __tup173 `seq` (True) ->
-                             (case (__tup173) of
-                              { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_PatExpr_Con_2 :: T_PatExpr_2
-                                          sem_PatExpr_Con_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_PatExpr_Con_3 :: T_PatExpr_3
-                                                                   sem_PatExpr_Con_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_PatExpr_Con_4 :: T_PatExpr_4
-                                                                                                    sem_PatExpr_Con_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                 ((case (Seq.empty) of
-                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                   (case (__tup173) of
-                                                                                                                    { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                    (case (uidHNm _lUniq) of
-                                                                                                                     { _topNm | _topNm `seq` (True) ->
-                                                                                                                     (case (_topNm) of
-                                                                                                                      { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                      (case ((let sem_PatExpr_Con_5 :: T_PatExpr_5
-                                                                                                                                  sem_PatExpr_Con_5 =
-                                                                                                                                      (\ _lhsIvalGam ->
-                                                                                                                                           _lhsIvalGam `seq`
-                                                                                                                                           ((case (0) of
-                                                                                                                                             { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                             (case (Nothing) of
-                                                                                                                                              { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                              (case (_mbTopNm) of
-                                                                                                                                               { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                               (case (__tup173) of
-                                                                                                                                                { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                (case (let  [a,r] = mkNewTyVarL 2 _lUniq in (a,r)) of
-                                                                                                                                                 { __tup172 | __tup172 `seq` (True) ->
-                                                                                                                                                 (case (__tup172) of
-                                                                                                                                                  { (_,_tvarv2_) | _tvarv2_ `seq` (True) ->
-                                                                                                                                                  (case (__tup172) of
-                                                                                                                                                   { (_tvarv1_,_) | _tvarv1_ `seq` (True) ->
-                                                                                                                                                   (case ([_tvarv1_    ] `appArr` _tvarv2_) of
-                                                                                                                                                    { _knTyShape | _knTyShape `seq` (True) ->
-                                                                                                                                                    (case (valGamLookupTy (hsnUn nm_) _lhsIvalGam) of
-                                                                                                                                                     { __tup171 | __tup171 `seq` (True) ->
-                                                                                                                                                     (case (__tup171) of
-                                                                                                                                                      { (_ty_g_,_) | _ty_g_ `seq` (True) ->
-                                                                                                                                                      (case (defaultFIEnv
-                                                                                                                                                                 { feEHCOpts = _lhsIopts
-                                                                                                                                                                 , fePredScope = _lhsIpredScope
-                                                                                                                                                                 , feTyGam = _lhsItyGam
-                                                                                                                                                                 , fePolGam = _lhsIpolGam
-                                                                                                                                                                 , feRange = _range
-                                                                                                                                                                 }) of
-                                                                                                                                                       { _fe | _fe `seq` (True) ->
-                                                                                                                                                       (case (fitsIn instFIOpts _fe _lUniq2 (emptyVarMp :: VarMp) _ty_g_ _knTyShape) of
-                                                                                                                                                        { _fo_fitP_ | _fo_fitP_ `seq` (True) ->
-                                                                                                                                                        (case (foVarMp _fo_fitP_) of
-                                                                                                                                                         { _tyVarMp_p_ | _tyVarMp_p_ `seq` (True) ->
-                                                                                                                                                         (case (_tyVarMp_p_ `varUpd` foTy _fo_fitP_) of
-                                                                                                                                                          { _patFunTy | _patFunTy `seq` (True) ->
-                                                                                                                                                          (case (_patFunTy) of
-                                                                                                                                                           { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                           (case ((let sem_PatExpr_Con_6 :: T_PatExpr_6
-                                                                                                                                                                       sem_PatExpr_Con_6 =
-                                                                                                                                                                           (\ _lhsIfiOpts
-                                                                                                                                                                              _lhsIinclVarBind
-                                                                                                                                                                              _lhsIknTy
-                                                                                                                                                                              _lhsIknTyL
-                                                                                                                                                                              _lhsIpatTyVarMp
-                                                                                                                                                                              _lhsItySigGam ->
-                                                                                                                                                                                _lhsIfiOpts `seq`
-                                                                                                                                                                                (_lhsIinclVarBind `seq`
-                                                                                                                                                                                 (_lhsIknTy `seq`
-                                                                                                                                                                                  (_lhsIknTyL `seq`
-                                                                                                                                                                                   (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                    (_lhsItySigGam `seq`
-                                                                                                                                                                                     ((case (__tup173) of
-                                                                                                                                                                                       { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
-                                                                                                                                                                                       (case (fitsIn _lhsIfiOpts _fe _lUniq3 (_tyVarMp_p_ `varUpd` _lhsIpatTyVarMp) _lhsIknTy _tvarv1_) of
-                                                                                                                                                                                        { _fo_fitR_ | _fo_fitR_ `seq` (True) ->
-                                                                                                                                                                                        (case (foVarMp _fo_fitR_ `varUpd` _tyVarMp_p_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                         { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIvalGam) of
-                                                                                                                                                                                          { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                          (case ((let sem_PatExpr_Con_7 :: T_PatExpr_7
-                                                                                                                                                                                                      sem_PatExpr_Con_7 =
-                                                                                                                                                                                                          (\ _lhsIchrStore
-                                                                                                                                                                                                             _lhsIclDfGam
-                                                                                                                                                                                                             _lhsItvKiVarMp
-                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                             _lhsItyVarMp
-                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                               _lhsIchrStore `seq`
-                                                                                                                                                                                                               (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                  (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                    ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                      { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                      (case (_cpNm) of
-                                                                                                                                                                                                                       { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                       (case (Map.empty) of
-                                                                                                                                                                                                                        { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                        (case (Map.empty) of
-                                                                                                                                                                                                                         { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                         (case (emptyGam) of
-                                                                                                                                                                                                                          { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                          (case (foTy _fo_fitR_) of
-                                                                                                                                                                                                                           { _ty_r_ | _ty_r_ `seq` (True) ->
-                                                                                                                                                                                                                           (case (_ty_r_) of
-                                                                                                                                                                                                                            { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                            (case (_ty) of
-                                                                                                                                                                                                                             { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                              { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                              (case ((let sem_PatExpr_Con_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                          sem_PatExpr_Con_8 =
-                                                                                                                                                                                                                                              (\ _lhsIcSubst
-                                                                                                                                                                                                                                                 _lhsIceParentNm
-                                                                                                                                                                                                                                                 _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                 _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                 _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                 _lhsIfinValGam
-                                                                                                                                                                                                                                                 _lhsImoduleNm
-                                                                                                                                                                                                                                                 _lhsIrangeMp
-                                                                                                                                                                                                                                                 _lhsIsysfEnv
-                                                                                                                                                                                                                                                 _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                   _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                   (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                    (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                     (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                      (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                       (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                        (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                         (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                          (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                           (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                            ((case (Seq.empty) of
-                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                              (case ([]) of
-                                                                                                                                                                                                                                                               { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (nm_) of
-                                                                                                                                                                                                                                                                { _appFunNm | _appFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_appFunNm) of
-                                                                                                                                                                                                                                                                 { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (ppCon nm_) of
-                                                                                                                                                                                                                                                                  { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_pp) of
-                                                                                                                                                                                                                                                                   { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                    { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (__tup171) of
-                                                                                                                                                                                                                                                                     { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs, foErrSq _fo_fitR_]) of
-                                                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                                       { _fsRPatL | _fsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_fsRPatL) of
-                                                                                                                                                                                                                                                                        { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val nm_
-                                                                                                                                                                                                                                                                               `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                                                               tyUsedNames _lhsImoduleNm _ty_g_) of
-                                                                                                                                                                                                                                                                         { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (emptyVarMp) of
-                                                                                                                                                                                                                                                                           { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (False) of
-                                                                                                                                                                                                                                                                            { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                             { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_pp) of
-                                                                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_tvarv1_) of
-                                                                                                                                                                                                                                                                               { _knPatTy | _knPatTy `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                                { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                                 { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp `varUpd` _knPatTy) of
-                                                                                                                                                                                                                                                                                  { _finKnPatTy | _finKnPatTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (tyConNm $ fst $ appUnApp _finKnPatTy) of
-                                                                                                                                                                                                                                                                                   { _tyConNm | _tyConNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (panicJust ("PatExpr.{AppTop,Con}.dgi: " ++ show _tyConNm)
-                                                                                                                                                                                                                                                                                              $ dataGamLookup _tyConNm $ _lhsIdataGam) of
-                                                                                                                                                                                                                                                                                    { _dgi | _dgi `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (panicJust ("PatExpr.{AppTop,Con}.dti: " ++ show _tyConNm ++ "." ++ show _appFunNm)
-                                                                                                                                                                                                                                                                                               $ Map.lookup _appFunNm $ dgiConstrTagMp _dgi) of
-                                                                                                                                                                                                                                                                                     { _dti | _dti `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (dtiCTag _dti) of
-                                                                                                                                                                                                                                                                                      { _tag | _tag `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                                       { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                                        { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (RPat_Con _cpNm _acorety _tag (RPatConBind_One CPatRest_Empty [])) of
-                                                                                                                                                                                                                                                                                         { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_rpat) of
-                                                                                                                                                                                                                                                                                          { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case ([]) of
-                                                                                                                                                                                                                                                                                           { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                           ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                      in  sem_PatExpr_Con_8)) of
-                                                                                                                                                                                                                               { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                               ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                  in  sem_PatExpr_Con_7)) of
-                                                                                                                                                                                           { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                           ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }))))))))
-                                                                                                                                                                   in  sem_PatExpr_Con_6)) of
-                                                                                                                                                            { ( sem_PatExpr_6) | True ->
-                                                                                                                                                            ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
-                                                                                                                              in  sem_PatExpr_Con_5)) of
-                                                                                                                       { ( sem_PatExpr_5) | True ->
-                                                                                                                       ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
-                                                                                                in  sem_PatExpr_Con_4)) of
-                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }))))))))))
-                                                               in  sem_PatExpr_Con_3)) of
-                                                        { ( sem_PatExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
-                                      in  sem_PatExpr_Con_2)) of
-                               { ( sem_PatExpr_2) | True ->
-                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
-              in  sem_PatExpr_Con_1)) of
-       { ( sem_PatExpr_1) | True ->
-       ( _lhsOrange,sem_PatExpr_1) }) }) })
-
-sem_PatExpr_Var :: Range ->
-                   HsName ->
-                   T_PatExpr
-
-sem_PatExpr_Var hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_PatExpr_Var_1 :: T_PatExpr_1
-                  sem_PatExpr_Var_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_4_fo) -> (__cont,lUniq,lUniq2,lUniq_4_fo)}}} )) of
-                             { __tup177 | __tup177 `seq` (True) ->
-                             (case (__tup177) of
-                              { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_PatExpr_Var_2 :: T_PatExpr_2
-                                          sem_PatExpr_Var_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_PatExpr_Var_3 :: T_PatExpr_3
-                                                                   sem_PatExpr_Var_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_PatExpr_Var_4 :: T_PatExpr_4
-                                                                                                    sem_PatExpr_Var_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                 ((case (Seq.empty) of
-                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                   (case (__tup177) of
-                                                                                                                    { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                    (case (if hsnIsWild nm_ then uidHNm _lUniq else nm_) of
-                                                                                                                     { _topNm | _topNm `seq` (True) ->
-                                                                                                                     (case (_topNm) of
-                                                                                                                      { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                      (case ((let sem_PatExpr_Var_5 :: T_PatExpr_5
-                                                                                                                                  sem_PatExpr_Var_5 =
-                                                                                                                                      (\ _lhsIvalGam ->
-                                                                                                                                           _lhsIvalGam `seq`
-                                                                                                                                           ((case (0) of
-                                                                                                                                             { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                             (case (if hsnIsWild nm_ then Nothing else Just nm_) of
-                                                                                                                                              { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                              (case (_mbTopNm) of
-                                                                                                                                               { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                               (case (Ty_Any) of
-                                                                                                                                                { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                (case ((let sem_PatExpr_Var_6 :: T_PatExpr_6
-                                                                                                                                                            sem_PatExpr_Var_6 =
-                                                                                                                                                                (\ _lhsIfiOpts
-                                                                                                                                                                   _lhsIinclVarBind
-                                                                                                                                                                   _lhsIknTy
-                                                                                                                                                                   _lhsIknTyL
-                                                                                                                                                                   _lhsIpatTyVarMp
-                                                                                                                                                                   _lhsItySigGam ->
-                                                                                                                                                                     _lhsIfiOpts `seq`
-                                                                                                                                                                     (_lhsIinclVarBind `seq`
-                                                                                                                                                                      (_lhsIknTy `seq`
-                                                                                                                                                                       (_lhsIknTyL `seq`
-                                                                                                                                                                        (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                         (_lhsItySigGam `seq`
-                                                                                                                                                                          ((case (__tup177) of
-                                                                                                                                                                            { (_,_,_,_lUniq_4_fo) | _lUniq_4_fo `seq` (True) ->
-                                                                                                                                                                            (case (__tup177) of
-                                                                                                                                                                             { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                             (case (tyAsVarMp' tyEnsureNonAnyImpl _lUniq _lhsIknTy) of
-                                                                                                                                                                              { __tup176 | __tup176 `seq` (True) ->
-                                                                                                                                                                              (case (__tup176) of
-                                                                                                                                                                               { (_ty_kn_ensured,_) | _ty_kn_ensured `seq` (True) ->
-                                                                                                                                                                               (case (_ty_kn_ensured) of
-                                                                                                                                                                                { _ty_kn_ | _ty_kn_ `seq` (True) ->
-                                                                                                                                                                                (case (__tup176) of
-                                                                                                                                                                                 { (_,_patTyVarMpKnTyEns) | _patTyVarMpKnTyEns `seq` (True) ->
-                                                                                                                                                                                 (case (_patTyVarMpKnTyEns `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                  { _patTyVarMpKnTy1 | _patTyVarMpKnTy1 `seq` (True) ->
-                                                                                                                                                                                  (case (valGamLookupTy nm_ _lhsItySigGam) of
-                                                                                                                                                                                   { __tup174 | __tup174 `seq` (True) ->
-                                                                                                                                                                                   (case (__tup174) of
-                                                                                                                                                                                    { (_ty_g_,_) | _ty_g_ `seq` (True) ->
-                                                                                                                                                                                    (case (defaultFIEnv
-                                                                                                                                                                                               { feEHCOpts = _lhsIopts
-                                                                                                                                                                                               , fePredScope = _lhsIpredScope
-                                                                                                                                                                                               , feTyGam = _lhsItyGam
-                                                                                                                                                                                               , fePolGam = _lhsIpolGam
-                                                                                                                                                                                               , feRange = _range
-                                                                                                                                                                                               }) of
-                                                                                                                                                                                     { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                     (case (fitsIn _lhsIfiOpts _fe _lUniq_4_fo _patTyVarMpKnTy1 _ty_kn_ _ty_g_) of
-                                                                                                                                                                                      { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                      (case (tyAsVarMp' tyInst1Exists _lUniq2 (foTy _fo_)) of
-                                                                                                                                                                                       { __tup175 | __tup175 `seq` (True) ->
-                                                                                                                                                                                       (case (__tup175) of
-                                                                                                                                                                                        { (_,_patTyVarMpKnEx) | _patTyVarMpKnEx `seq` (True) ->
-                                                                                                                                                                                        (case (__tup175) of
-                                                                                                                                                                                         { (_ty,_) | _ty `seq` (True) ->
-                                                                                                                                                                                         (case (tyRestrictKiVarMp [_ty] `varUpd` _patTyVarMpKnEx `varUpd` foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                          { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                          (case (_ty) of
-                                                                                                                                                                                           { _varTy | _varTy `seq` (True) ->
-                                                                                                                                                                                           (case (if _lhsIinclVarBind && not (hsnIsWild nm_)
-                                                                                                                                                                                                  then  \g ->  gamAdd nm_
-                                                                                                                                                                                                                 (ValGamInfo _varTy) g
-                                                                                                                                                                                                  else  id) of
-                                                                                                                                                                                            { _addToGam | _addToGam `seq` (True) ->
-                                                                                                                                                                                            (case (_addToGam _lhsIvalGam) of
-                                                                                                                                                                                             { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                             (case ((let sem_PatExpr_Var_7 :: T_PatExpr_7
-                                                                                                                                                                                                         sem_PatExpr_Var_7 =
-                                                                                                                                                                                                             (\ _lhsIchrStore
-                                                                                                                                                                                                                _lhsIclDfGam
-                                                                                                                                                                                                                _lhsItvKiVarMp
-                                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                _lhsItyVarMp
-                                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                  _lhsIchrStore `seq`
-                                                                                                                                                                                                                  (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                   (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                     (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                       ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                         { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                         (case (_cpNm) of
-                                                                                                                                                                                                                          { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                          (case (Map.empty) of
-                                                                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                           (case (Map.empty) of
-                                                                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                            (case (gamSingleton nm_ _lhsIpredScope) of
-                                                                                                                                                                                                                             { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                             (case (_ty) of
-                                                                                                                                                                                                                              { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                               { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                               (case ((let sem_PatExpr_Var_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                           sem_PatExpr_Var_8 =
-                                                                                                                                                                                                                                               (\ _lhsIcSubst
-                                                                                                                                                                                                                                                  _lhsIceParentNm
-                                                                                                                                                                                                                                                  _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                  _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                  _lhsIfinValGam
-                                                                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                                                                  _lhsIrangeMp
-                                                                                                                                                                                                                                                  _lhsIsysfEnv
-                                                                                                                                                                                                                                                  _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                    _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                    (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                            (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                             ((case (Seq.empty) of
-                                                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                                                                { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                 { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (pp nm_) of
-                                                                                                                                                                                                                                                                  { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_pp) of
-                                                                                                                                                                                                                                                                   { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                    { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (Seq.empty) of
-                                                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case ([]) of
-                                                                                                                                                                                                                                                                      { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (Map.empty) of
-                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (emptyVarMp) of
-                                                                                                                                                                                                                                                                        { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (False) of
-                                                                                                                                                                                                                                                                         { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (CPatRest_Var nm_) of
-                                                                                                                                                                                                                                                                          { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_pp) of
-                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                            { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                             { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                              { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                               { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (RPat_Var _cpNm _acorety False) of
-                                                                                                                                                                                                                                                                                { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_rpat) of
-                                                                                                                                                                                                                                                                                 { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                                                                  { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                       in  sem_PatExpr_Var_8)) of
-                                                                                                                                                                                                                                { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                     in  sem_PatExpr_Var_7)) of
-                                                                                                                                                                                              { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                              ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                        in  sem_PatExpr_Var_6)) of
-                                                                                                                                                 { ( sem_PatExpr_6) | True ->
-                                                                                                                                                 ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                              in  sem_PatExpr_Var_5)) of
-                                                                                                                       { ( sem_PatExpr_5) | True ->
-                                                                                                                       ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
-                                                                                                in  sem_PatExpr_Var_4)) of
-                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }))))))))))
-                                                               in  sem_PatExpr_Var_3)) of
-                                                        { ( sem_PatExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
-                                      in  sem_PatExpr_Var_2)) of
-                               { ( sem_PatExpr_2) | True ->
-                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
-              in  sem_PatExpr_Var_1)) of
-       { ( sem_PatExpr_1) | True ->
-       ( _lhsOrange,sem_PatExpr_1) }) }) })
-
-sem_PatExpr_VarAs :: Range ->
-                     HsName ->
-                     T_PatExpr ->
-                     T_PatExpr
-
-sem_PatExpr_VarAs hsrange_ nm_ patExpr_ | hsrange_ `seq` (nm_ `seq` (patExpr_ `seq` (True))) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_VarAs_1 :: T_PatExpr_1
-                       sem_PatExpr_VarAs_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_4_fo) -> (__cont,lUniq,lUniq2,lUniq_4_fo)}}} )) of
-                                  { __tup180 | __tup180 `seq` (True) ->
-                                  (case (__tup180) of
-                                   { (_patExprOgUniq,_,_,_) | _patExprOgUniq `seq` (True) ->
-                                   (case (patExpr_1 _patExprOgUniq) of
-                                    { ( _patExprIgUniq,patExpr_2) | True ->
-                                        (case (_patExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_VarAs_2 :: T_PatExpr_2
-                                                     sem_PatExpr_VarAs_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                         (case (_patExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_VarAs_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_VarAs_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_VarAs_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_VarAs_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (__tup180) of
-                                                                                                                                                              { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                              (case (if hsnIsWild nm_ then uidHNm _lUniq else nm_) of
-                                                                                                                                                               { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                               (case (_topNm) of
-                                                                                                                                                                { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                (case ((let sem_PatExpr_VarAs_5 :: T_PatExpr_5
-                                                                                                                                                                            sem_PatExpr_VarAs_5 =
-                                                                                                                                                                                (\ _lhsIvalGam ->
-                                                                                                                                                                                     _lhsIvalGam `seq`
-                                                                                                                                                                                     ((case (_lhsIvalGam) of
-                                                                                                                                                                                       { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                       (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                        { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                            (case (_patExprIarity) of
-                                                                                                                                                                                             { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                             (case (if hsnIsWild nm_ then Nothing else Just nm_) of
-                                                                                                                                                                                              { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                              (case (_mbTopNm) of
-                                                                                                                                                                                               { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                               (case (_patExprIpatFunTy) of
-                                                                                                                                                                                                { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                                (case ((let sem_PatExpr_VarAs_6 :: T_PatExpr_6
-                                                                                                                                                                                                            sem_PatExpr_VarAs_6 =
-                                                                                                                                                                                                                (\ _lhsIfiOpts
-                                                                                                                                                                                                                   _lhsIinclVarBind
-                                                                                                                                                                                                                   _lhsIknTy
-                                                                                                                                                                                                                   _lhsIknTyL
-                                                                                                                                                                                                                   _lhsIpatTyVarMp
-                                                                                                                                                                                                                   _lhsItySigGam ->
-                                                                                                                                                                                                                     _lhsIfiOpts `seq`
-                                                                                                                                                                                                                     (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                      (_lhsIknTy `seq`
-                                                                                                                                                                                                                       (_lhsIknTyL `seq`
-                                                                                                                                                                                                                        (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                         (_lhsItySigGam `seq`
-                                                                                                                                                                                                                          ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                            { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsIknTyL) of
-                                                                                                                                                                                                                             { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                              { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                               { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                               (case (__tup180) of
-                                                                                                                                                                                                                                { (_,_,_,_lUniq_4_fo) | _lUniq_4_fo `seq` (True) ->
-                                                                                                                                                                                                                                (case (__tup180) of
-                                                                                                                                                                                                                                 { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                                                 (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                  { _patTyVarMpKnTy1 | _patTyVarMpKnTy1 `seq` (True) ->
-                                                                                                                                                                                                                                  (case (tyEnsureNonAny _lUniq _lhsIknTy) of
-                                                                                                                                                                                                                                   { _ty_kn_ | _ty_kn_ `seq` (True) ->
-                                                                                                                                                                                                                                   (case (valGamLookupTy nm_ _lhsItySigGam) of
-                                                                                                                                                                                                                                    { __tup178 | __tup178 `seq` (True) ->
-                                                                                                                                                                                                                                    (case (__tup178) of
-                                                                                                                                                                                                                                     { (_ty_g_,_) | _ty_g_ `seq` (True) ->
-                                                                                                                                                                                                                                     (case (defaultFIEnv
-                                                                                                                                                                                                                                                { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                , feRange = _range
-                                                                                                                                                                                                                                                }) of
-                                                                                                                                                                                                                                      { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                      (case (fitsIn _lhsIfiOpts _fe _lUniq_4_fo _patTyVarMpKnTy1 _ty_kn_ _ty_g_) of
-                                                                                                                                                                                                                                       { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                       (case (tyAsVarMp' tyInst1Exists _lUniq2 (foTy _fo_)) of
-                                                                                                                                                                                                                                        { __tup179 | __tup179 `seq` (True) ->
-                                                                                                                                                                                                                                        (case (__tup179) of
-                                                                                                                                                                                                                                         { (_,_patTyVarMpKnEx) | _patTyVarMpKnEx `seq` (True) ->
-                                                                                                                                                                                                                                         (case (__tup179) of
-                                                                                                                                                                                                                                          { (_ty,_) | _ty `seq` (True) ->
-                                                                                                                                                                                                                                          (case (tyRestrictKiVarMp [_ty] `varUpd` _patTyVarMpKnEx `varUpd` foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                           { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                           (case (_ty) of
-                                                                                                                                                                                                                                            { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                            (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                             { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                                 (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                  { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (_ty) of
-                                                                                                                                                                                                                                                   { _varTy | _varTy `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (if _lhsIinclVarBind && not (hsnIsWild nm_)
-                                                                                                                                                                                                                                                          then  \g ->  gamAdd nm_
-                                                                                                                                                                                                                                                                         (ValGamInfo _varTy) g
-                                                                                                                                                                                                                                                          else  id) of
-                                                                                                                                                                                                                                                    { _addToGam | _addToGam `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_addToGam _patExprIvalGam) of
-                                                                                                                                                                                                                                                     { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                     (case ((let sem_PatExpr_VarAs_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                                 sem_PatExpr_VarAs_7 =
-                                                                                                                                                                                                                                                                     (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                        _lhsIclDfGam
-                                                                                                                                                                                                                                                                        _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                        _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                        _lhsItyVarMp
-                                                                                                                                                                                                                                                                        _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                          _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                          (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                           (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                             (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                               ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                                                 { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_cpNm) of
-                                                                                                                                                                                                                                                                                  { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                   { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                    { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                     { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                      { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                       { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                        { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                         { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                                             (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                              { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                               { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                                { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_ty) of
-                                                                                                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case ((let sem_PatExpr_VarAs_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                              sem_PatExpr_VarAs_8 =
-                                                                                                                                                                                                                                                                                                                  (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                     _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                     _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                     _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                                     _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                       _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                               (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                  { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                   { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                    { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                     { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                      { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                       { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                        { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                         { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                          { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                           { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                            { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                  { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                                   { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (pp nm_ >|< "@" >|< _patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                    { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                     { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                      { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_patExprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (False) of
-                                                                                                                                                                                                                                                                                                                                                           { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                                            { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (_patExprIrpat {rcpPNm = _cpNm}) of
-                                                                                                                                                                                                                                                                                                                                                              { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                               { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                          in  sem_PatExpr_VarAs_8)) of
-                                                                                                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                             in  sem_PatExpr_VarAs_7)) of
-                                                                                                                                                                                                                                                      { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                                      ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                        in  sem_PatExpr_VarAs_6)) of
-                                                                                                                                                                                                 { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                 ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                        in  sem_PatExpr_VarAs_5)) of
-                                                                                                                                                                 { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                 ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_VarAs_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_VarAs_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_VarAs_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_VarAs_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_App :: Range ->
-                   T_PatExpr ->
-                   T_PatExpr ->
-                   T_PatExpr
-
-sem_PatExpr_App hsrange_ func_ arg_ | hsrange_ `seq` (func_ `seq` (arg_ `seq` (True))) =
-    (case (arg_) of
-     { ( _argIrange,arg_1) | True ->
-         (case (func_) of
-          { ( _funcIrange,func_1) | True ->
-              (case (rangeUnions [hsrange_, _funcIrange   , _argIrange   ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_PatExpr_App_1 :: T_PatExpr_1
-                            sem_PatExpr_App_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                       { __tup183 | __tup183 `seq` (True) ->
-                                       (case (__tup183) of
-                                        { (_funcOgUniq,_) | _funcOgUniq `seq` (True) ->
-                                        (case (func_1 _funcOgUniq) of
-                                         { ( _funcIgUniq,func_2) | True ->
-                                             (case (_funcIgUniq) of
-                                              { _argOgUniq | _argOgUniq `seq` (True) ->
-                                              (case (arg_1 _argOgUniq) of
-                                               { ( _argIgUniq,arg_2) | True ->
-                                                   (case (_argIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_PatExpr_App_2 :: T_PatExpr_2
-                                                                sem_PatExpr_App_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _funcOpredSameScopeCounter | _funcOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _funcOlexLev | _funcOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _funcOkiGam | _funcOkiGam `seq` (True) ->
-                                                                               (case (func_2 _funcOkiGam _funcOlexLev _funcOpredSameScopeCounter) of
-                                                                                { ( _funcIpredSameScopeCounter,func_3) | True ->
-                                                                                    (case (_funcIpredSameScopeCounter) of
-                                                                                     { _argOpredSameScopeCounter | _argOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case (_lhsIlexLev) of
-                                                                                      { _argOlexLev | _argOlexLev `seq` (True) ->
-                                                                                      (case (_lhsIkiGam) of
-                                                                                       { _argOkiGam | _argOkiGam `seq` (True) ->
-                                                                                       (case (arg_2 _argOkiGam _argOlexLev _argOpredSameScopeCounter) of
-                                                                                        { ( _argIpredSameScopeCounter,arg_3) | True ->
-                                                                                            (case (_argIpredSameScopeCounter) of
-                                                                                             { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                             (case ((let sem_PatExpr_App_3 :: T_PatExpr_3
-                                                                                                         sem_PatExpr_App_3 =
-                                                                                                             (\ _lhsIkiVarMp
-                                                                                                                _lhsIopts
-                                                                                                                _lhsIpolGam
-                                                                                                                _lhsIpolVarMp
-                                                                                                                _lhsIpredScope
-                                                                                                                _lhsItyGam
-                                                                                                                _lhsItyKiGam
-                                                                                                                _lhsItyKiGlobFreeTvarS ->
-                                                                                                                  _lhsIkiVarMp `seq`
-                                                                                                                  (_lhsIopts `seq`
-                                                                                                                   (_lhsIpolGam `seq`
-                                                                                                                    (_lhsIpolVarMp `seq`
-                                                                                                                     (_lhsIpredScope `seq`
-                                                                                                                      (_lhsItyGam `seq`
-                                                                                                                       (_lhsItyKiGam `seq`
-                                                                                                                        (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                         ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                           { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _funcOtyKiGam | _funcOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsItyGam) of
-                                                                                                                              { _funcOtyGam | _funcOtyGam `seq` (True) ->
-                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                               { _funcOpredScope | _funcOpredScope `seq` (True) ->
-                                                                                                                               (case (_lhsIpolVarMp) of
-                                                                                                                                { _funcOpolVarMp | _funcOpolVarMp `seq` (True) ->
-                                                                                                                                (case (_lhsIpolGam) of
-                                                                                                                                 { _funcOpolGam | _funcOpolGam `seq` (True) ->
-                                                                                                                                 (case (_lhsIopts) of
-                                                                                                                                  { _funcOopts | _funcOopts `seq` (True) ->
-                                                                                                                                  (case (_lhsIkiVarMp) of
-                                                                                                                                   { _funcOkiVarMp | _funcOkiVarMp `seq` (True) ->
-                                                                                                                                   (case (func_3 _funcOkiVarMp _funcOopts _funcOpolGam _funcOpolVarMp _funcOpredScope _funcOtyGam _funcOtyKiGam _funcOtyKiGlobFreeTvarS) of
-                                                                                                                                    { ( _funcIkiVarMp,_funcIpolVarMp,_funcItyGam,_funcItyKiGam,func_4) | True ->
-                                                                                                                                        (case (_funcItyKiGam) of
-                                                                                                                                         { _argOtyKiGam | _argOtyKiGam `seq` (True) ->
-                                                                                                                                         (case (_funcItyGam) of
-                                                                                                                                          { _argOtyGam | _argOtyGam `seq` (True) ->
-                                                                                                                                          (case (_lhsIpredScope) of
-                                                                                                                                           { _argOpredScope | _argOpredScope `seq` (True) ->
-                                                                                                                                           (case (_funcIpolVarMp) of
-                                                                                                                                            { _argOpolVarMp | _argOpolVarMp `seq` (True) ->
-                                                                                                                                            (case (_lhsIpolGam) of
-                                                                                                                                             { _argOpolGam | _argOpolGam `seq` (True) ->
-                                                                                                                                             (case (_lhsIopts) of
-                                                                                                                                              { _argOopts | _argOopts `seq` (True) ->
-                                                                                                                                              (case (_funcIkiVarMp) of
-                                                                                                                                               { _argOkiVarMp | _argOkiVarMp `seq` (True) ->
-                                                                                                                                               (case (arg_3 _argOkiVarMp _argOopts _argOpolGam _argOpolVarMp _argOpredScope _argOtyGam _argOtyKiGam _argOtyKiGlobFreeTvarS) of
-                                                                                                                                                { ( _argIkiVarMp,_argIpolVarMp,_argItyGam,_argItyKiGam,arg_4) | True ->
-                                                                                                                                                    (case (_argIkiVarMp) of
-                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_argIpolVarMp) of
-                                                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                      (case (_argItyGam) of
-                                                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                                                       (case (_argItyKiGam) of
-                                                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                        (case ((let sem_PatExpr_App_4 :: T_PatExpr_4
-                                                                                                                                                                    sem_PatExpr_App_4 =
-                                                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                                                           _lhsIdataGam
-                                                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                   { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                    { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                     { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                                                      { _argOdataGam | _argOdataGam `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                                                       { _argOclGam | _argOclGam `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                        { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                         { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                          { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                          (case (_lhsIdataGam) of
-                                                                                                                                                                                           { _funcOdataGam | _funcOdataGam `seq` (True) ->
-                                                                                                                                                                                           (case (_lhsIclGam) of
-                                                                                                                                                                                            { _funcOclGam | _funcOclGam `seq` (True) ->
-                                                                                                                                                                                            (case (arg_4 _argOclGam _argOdataGam _argOfinKiVarMp _argOfinTyKiGam _argOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                             { ( _argIchrInstDeclSq,_argItopNm,arg_5) | True ->
-                                                                                                                                                                                                 (case (func_4 _funcOclGam _funcOdataGam _funcOfinKiVarMp _funcOfinTyKiGam _funcOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                  { ( _funcIchrInstDeclSq,_funcItopNm,func_5) | True ->
-                                                                                                                                                                                                      (case (_funcIchrInstDeclSq `Seq.union` _argIchrInstDeclSq) of
-                                                                                                                                                                                                       { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                       (case (hsnUnknown) of
-                                                                                                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                                                        (case ((let sem_PatExpr_App_5 :: T_PatExpr_5
-                                                                                                                                                                                                                    sem_PatExpr_App_5 =
-                                                                                                                                                                                                                        (\ _lhsIvalGam ->
-                                                                                                                                                                                                                             _lhsIvalGam `seq`
-                                                                                                                                                                                                                             ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                               { _funcOvalGam | _funcOvalGam `seq` (True) ->
-                                                                                                                                                                                                                               (case (func_5 _funcOvalGam) of
-                                                                                                                                                                                                                                { ( _funcIarity,_funcImbTopNm,_funcIpatFunTy,func_6) | True ->
-                                                                                                                                                                                                                                    (case (_funcIarity + 1) of
-                                                                                                                                                                                                                                     { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                                                                     (case (Nothing) of
-                                                                                                                                                                                                                                      { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_mbTopNm) of
-                                                                                                                                                                                                                                       { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_funcIpatFunTy) of
-                                                                                                                                                                                                                                        { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                                                                        (case ((let sem_PatExpr_App_6 :: T_PatExpr_6
-                                                                                                                                                                                                                                                    sem_PatExpr_App_6 =
-                                                                                                                                                                                                                                                        (\ _lhsIfiOpts
-                                                                                                                                                                                                                                                           _lhsIinclVarBind
-                                                                                                                                                                                                                                                           _lhsIknTy
-                                                                                                                                                                                                                                                           _lhsIknTyL
-                                                                                                                                                                                                                                                           _lhsIpatTyVarMp
-                                                                                                                                                                                                                                                           _lhsItySigGam ->
-                                                                                                                                                                                                                                                             _lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                             (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                                                              (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                               (_lhsIknTyL `seq`
-                                                                                                                                                                                                                                                                (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                                                                 (_lhsItySigGam `seq`
-                                                                                                                                                                                                                                                                  ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                                    { _funcOtySigGam | _funcOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                                                     { _funcOpatTyVarMp | _funcOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (hdAndTl _lhsIknTyL) of
-                                                                                                                                                                                                                                                                      { __tup182 | __tup182 `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (__tup182) of
-                                                                                                                                                                                                                                                                       { (_,_knTyL) | _knTyL `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_knTyL) of
-                                                                                                                                                                                                                                                                        { _funcOknTyL | _funcOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                                                                         { _funcOinclVarBind | _funcOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                          { _funcOfiOpts | _funcOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (Ty_Any) of
-                                                                                                                                                                                                                                                                           { _funcOknTy | _funcOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (func_6 _funcOfiOpts _funcOinclVarBind _funcOknTy _funcOknTyL _funcOpatTyVarMp _funcOtySigGam) of
-                                                                                                                                                                                                                                                                            { ( _funcIpatTyVarMp,_funcIvalGam,func_7) | True ->
-                                                                                                                                                                                                                                                                                (case (_funcIvalGam) of
-                                                                                                                                                                                                                                                                                 { _argOvalGam | _argOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                                                  { _argOtySigGam | _argOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_funcIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                   { _argOpatTyVarMp | _argOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_knTyL) of
-                                                                                                                                                                                                                                                                                    { _argOknTyL | _argOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                                                                                     { _argOinclVarBind | _argOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                      { _argOfiOpts | _argOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (__tup182) of
-                                                                                                                                                                                                                                                                                       { (_knArgTy,_) | _knArgTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_knArgTy) of
-                                                                                                                                                                                                                                                                                        { _argOknTy | _argOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (arg_5 _argOvalGam) of
-                                                                                                                                                                                                                                                                                         { ( _argIarity,_argImbTopNm,_argIpatFunTy,arg_6) | True ->
-                                                                                                                                                                                                                                                                                             (case (arg_6 _argOfiOpts _argOinclVarBind _argOknTy _argOknTyL _argOpatTyVarMp _argOtySigGam) of
-                                                                                                                                                                                                                                                                                              { ( _argIpatTyVarMp,_argIvalGam,arg_7) | True ->
-                                                                                                                                                                                                                                                                                                  (case (_argIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                                   { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_argIvalGam) of
-                                                                                                                                                                                                                                                                                                    { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case ((let sem_PatExpr_App_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                                                                                sem_PatExpr_App_7 =
-                                                                                                                                                                                                                                                                                                                    (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                                                                       _lhsIclDfGam
-                                                                                                                                                                                                                                                                                                                       _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                                                                       _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                                       _lhsItyVarMp
-                                                                                                                                                                                                                                                                                                                       _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                                                         _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                                                                         (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                 { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                  { _funcOtyVarMp | _funcOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                   { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                    { _funcOtvKiVarMp | _funcOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                                     { _funcOclDfGam | _funcOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                                      { _funcOchrStore | _funcOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (func_7 _funcOchrStore _funcOclDfGam _funcOtvKiVarMp _funcOtyTyGlobFreeTvarS _funcOtyVarMp _funcOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                       { ( _funcIcpNm,_funcIgathCnstrMp,_funcIgathRangeMp,_funcIscopeGam,_funcIty,_funcItyVarMp,func_8) | True ->
-                                                                                                                                                                                                                                                                                                                                           (case (_funcItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                            { _argOtyVarMp | _argOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                             { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                              { _argOtvKiVarMp | _argOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                                               { _argOclDfGam | _argOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                                                { _argOchrStore | _argOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (arg_7 _argOchrStore _argOclDfGam _argOtvKiVarMp _argOtyTyGlobFreeTvarS _argOtyVarMp _argOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                 { ( _argIcpNm,_argIgathCnstrMp,_argIgathRangeMp,_argIscopeGam,_argIty,_argItyVarMp,arg_8) | True ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_argIcpNm) of
-                                                                                                                                                                                                                                                                                                                                                      { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_cpNm) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_funcIgathCnstrMp `cnstrMpUnion` _argIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_funcIgathRangeMp `Map.union` _argIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (_funcIscopeGam `gamUnion` _argIscopeGam) of
-                                                                                                                                                                                                                                                                                                                                                          { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (_argIty) of
-                                                                                                                                                                                                                                                                                                                                                           { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_argItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                            { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case ((let sem_PatExpr_App_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                                                                                        sem_PatExpr_App_8 =
-                                                                                                                                                                                                                                                                                                                                                                            (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                                               _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                                               _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                                                                                               _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                                                                                 _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                                                 (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                                  (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                   (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                    (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                     (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                        (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                                                         (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                                          ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                             { _argOrangeMp | _argOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _argOfinValGam | _argOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                               { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                                { _funcOsysfEnv | _funcOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                 { _funcOrangeMp | _funcOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                                  { _funcOfinValGam | _funcOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                   { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { _argOtySigVarMp | _argOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                      { _argOchrScopeBindMp | _argOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                       { _argOchrEvidBindMp | _argOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                        { _funcOchrScopeBindMp | _funcOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                         { _funcOchrEvidBindMp | _funcOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                          { _funcOcSubst | _funcOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                           { _funcOtySigVarMp | _funcOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                            { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                             { _funcOceParentNm | _funcOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                             (case (func_8 _funcOcSubst _funcOceParentNm _funcOchrEvidBindMp _funcOchrScopeBindMp _funcOfinTyVarMp _funcOfinValGam _funcOmoduleNm _funcOrangeMp _funcOsysfEnv _funcOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                              { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIcSubst,_funcIerrSq,_funcIfsRPatL,_funcIgathMentrelFilterMp,_funcIgathTvKiVarMp,_funcIisBang,_funcIpatCRest,_funcIpp,_funcIrpat,_funcIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_funcIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                                   { _argOcSubst | _argOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                   (case (rpatNmNm _argIcpNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                                    { _argOceParentNm | _argOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                    (case (arg_8 _argOcSubst _argOceParentNm _argOchrEvidBindMp _argOchrScopeBindMp _argOfinTyVarMp _argOfinValGam _argOmoduleNm _argOrangeMp _argOsysfEnv _argOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                     { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIcSubst,_argIerrSq,_argIfsRPatL,_argIgathMentrelFilterMp,_argIgathTvKiVarMp,_argIisBang,_argIpatCRest,_argIpp,_argIrpat,_argIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_funcIallErrSq `Seq.union` _argIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                          (case (mkExtAppPP  (_funcIappFunNm,_funcIappFunPP,_funcIappArgPPL)
-                                                                                                                                                                                                                                                                                                                                                                                                                                             (_argIappFunNm,_argIappFunPP,_argIappArgPPL,_argIpp)) of
-                                                                                                                                                                                                                                                                                                                                                                                                                           { __tup181 | __tup181 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                           (case (__tup181) of
-                                                                                                                                                                                                                                                                                                                                                                                                                            { (_,_lhsOappArgPPL) | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_funcIappFunNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                             (case (__tup181) of
-                                                                                                                                                                                                                                                                                                                                                                                                                              { (_lhsOappFunPP,_) | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_argIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_funcIerrSq `Seq.union` _argIerrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                (case ((FldImplicitOffset,_argIrpat) : _funcIfsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_funcIgathTvKiVarMp `varmpUnion` _argIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (False) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_funcIpp >#< _argIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_argIrpat) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_funcIvalCBindL ++ _argIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                                                                                    in  sem_PatExpr_App_8)) of
-                                                                                                                                                                                                                                                                                                                                                             { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                                                             ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                                                                            in  sem_PatExpr_App_7)) of
-                                                                                                                                                                                                                                                                                                     { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                     ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                in  sem_PatExpr_App_6)) of
-                                                                                                                                                                                                                                         { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                                                         ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                                                                in  sem_PatExpr_App_5)) of
-                                                                                                                                                                                                         { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                                in  sem_PatExpr_App_4)) of
-                                                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                     in  sem_PatExpr_App_3)) of
-                                                                                              { ( sem_PatExpr_3) | True ->
-                                                                                              ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) }) }) }) }) })))))
-                                                            in  sem_PatExpr_App_2)) of
-                                                     { ( sem_PatExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) }) }) })))
-                        in  sem_PatExpr_App_1)) of
-                 { ( sem_PatExpr_1) | True ->
-                 ( _lhsOrange,sem_PatExpr_1) }) }) }) }) })
-
-sem_PatExpr_AppTop :: Range ->
-                      T_PatExpr ->
-                      T_PatExpr
-
-sem_PatExpr_AppTop hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_AppTop_1 :: T_PatExpr_1
-                       sem_PatExpr_AppTop_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup186 | __tup186 `seq` (True) ->
-                                  (case (__tup186) of
-                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
-                                   (case (patExpr_1 _patExprOgUniq) of
-                                    { ( _patExprIgUniq,patExpr_2) | True ->
-                                        (case (_patExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_AppTop_2 :: T_PatExpr_2
-                                                     sem_PatExpr_AppTop_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                         (case (_patExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_AppTop_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_AppTop_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_AppTop_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_AppTop_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (__tup186) of
-                                                                                                                                                              { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                              (case (uidHNm _lUniq) of
-                                                                                                                                                               { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                               (case (_topNm) of
-                                                                                                                                                                { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                (case ((let sem_PatExpr_AppTop_5 :: T_PatExpr_5
-                                                                                                                                                                            sem_PatExpr_AppTop_5 =
-                                                                                                                                                                                (\ _lhsIvalGam ->
-                                                                                                                                                                                     _lhsIvalGam `seq`
-                                                                                                                                                                                     ((case (0) of
-                                                                                                                                                                                       { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                       (case (Nothing) of
-                                                                                                                                                                                        { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                        (case (_mbTopNm) of
-                                                                                                                                                                                         { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIvalGam) of
-                                                                                                                                                                                          { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                          (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                           { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                               (case (_patExprIpatFunTy) of
-                                                                                                                                                                                                { _patFunTy | _patFunTy `seq` (True) ->
-                                                                                                                                                                                                (case (_patFunTy) of
-                                                                                                                                                                                                 { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                                 (case ((let sem_PatExpr_AppTop_6 :: T_PatExpr_6
-                                                                                                                                                                                                             sem_PatExpr_AppTop_6 =
-                                                                                                                                                                                                                 (\ _lhsIfiOpts
-                                                                                                                                                                                                                    _lhsIinclVarBind
-                                                                                                                                                                                                                    _lhsIknTy
-                                                                                                                                                                                                                    _lhsIknTyL
-                                                                                                                                                                                                                    _lhsIpatTyVarMp
-                                                                                                                                                                                                                    _lhsItySigGam ->
-                                                                                                                                                                                                                      _lhsIfiOpts `seq`
-                                                                                                                                                                                                                      (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                       (_lhsIknTy `seq`
-                                                                                                                                                                                                                        (_lhsIknTyL `seq`
-                                                                                                                                                                                                                         (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                          (_lhsItySigGam `seq`
-                                                                                                                                                                                                                           ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                             { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                             (case (appUn1Arr _patFunTy) of
-                                                                                                                                                                                                                              { __tup185 | __tup185 `seq` (True) ->
-                                                                                                                                                                                                                              (case (__tup185) of
-                                                                                                                                                                                                                               { (_,_knProdTy) | _knProdTy `seq` (True) ->
-                                                                                                                                                                                                                               (case (tyProdArgs _knProdTy) of
-                                                                                                                                                                                                                                { _prodTyL | _prodTyL `seq` (True) ->
-                                                                                                                                                                                                                                (case (case _prodTyL     of
-                                                                                                                                                                                                                                           tL | _patExprIarity == length tL
-                                                                                                                                                                                                                                               ->  (reverse tL,[])
-                                                                                                                                                                                                                                           _   ->  (repeat Ty_Any
-                                                                                                                                                                                                                                                   ,  [rngLift _range Err_PatArity2 "type"
-                                                                                                                                                                                                                                                        (ppTy _knProdTy) _patExprIarity])) of
-                                                                                                                                                                                                                                 { __tup184 | __tup184 `seq` (True) ->
-                                                                                                                                                                                                                                 (case (__tup184) of
-                                                                                                                                                                                                                                  { (_knTyL,_) | _knTyL `seq` (True) ->
-                                                                                                                                                                                                                                  (case (_knTyL) of
-                                                                                                                                                                                                                                   { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                   (case (_lhsIknTy) of
-                                                                                                                                                                                                                                    { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                    (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                     { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                     (case (True) of
-                                                                                                                                                                                                                                      { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                      (case (__tup185) of
-                                                                                                                                                                                                                                       { (_knPatTy,_) | _knPatTy `seq` (True) ->
-                                                                                                                                                                                                                                       (case (defaultFIEnv
-                                                                                                                                                                                                                                                  { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                  , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                  , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                  , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                  , feRange = _range
-                                                                                                                                                                                                                                                  }) of
-                                                                                                                                                                                                                                        { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                        (case (fitsIn _lhsIfiOpts _fe _lUniq _lhsIpatTyVarMp _lhsIknTy _knPatTy) of
-                                                                                                                                                                                                                                         { _fo_fitR_ | _fo_fitR_ `seq` (True) ->
-                                                                                                                                                                                                                                         (case (foVarMp _fo_fitR_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                          { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                          (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                           { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                               (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                                 { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                 (case ((let sem_PatExpr_AppTop_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                             sem_PatExpr_AppTop_7 =
-                                                                                                                                                                                                                                                                 (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                    _lhsIclDfGam
-                                                                                                                                                                                                                                                                    _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                    _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                    _lhsItyVarMp
-                                                                                                                                                                                                                                                                    _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                      _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                      (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                       (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                         (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                           ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                                             { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_cpNm) of
-                                                                                                                                                                                                                                                                              { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                               { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                 { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                  { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                   { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                    { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                     { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                                         (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                          { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                           { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                            { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (foTy _fo_fitR_) of
-                                                                                                                                                                                                                                                                                             { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_ty) of
-                                                                                                                                                                                                                                                                                              { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                               { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case ((let sem_PatExpr_AppTop_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                           sem_PatExpr_AppTop_8 =
-                                                                                                                                                                                                                                                                                                               (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                  _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                                  _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                  _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                  _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                  _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                  _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                                  _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                    _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                    (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                            (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                             ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                               { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                 { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                  { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                   { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                    { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                     { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                      { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                       { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                        { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                         { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                             (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case ([]) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                                { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (ppAppTop  (_patExprIappFunNm,_patExprIappFunPP)
-                                                                                                                                                                                                                                                                                                                                                                 _patExprIappArgPPL _patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                 { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                  { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                   { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (__tup184) of
-                                                                                                                                                                                                                                                                                                                                                    { (_,_arityErrs) | _arityErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (rngLift _range mkNestErr' _pp [_patExprIerrSq, Seq.fromList _arityErrs, foErrSq _fo_fitR_]) of
-                                                                                                                                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                      { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (False) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                                          { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_patExprIappFunNm) of
-                                                                                                                                                                                                                                                                                                                                                            { _appFunNm | _appFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                                                                                                             { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                                                                                                              { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp `varUpd` _knPatTy) of
-                                                                                                                                                                                                                                                                                                                                                               { _finKnPatTy | _finKnPatTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (_patExprIfsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                                { _fsRPatL | _fsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (fsL2PatOffsetL _lhsIopts $ reverse                 $ _fsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                                 { _rpatBinds | _rpatBinds `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                                                  { _rest | _rest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (tyConNm $ fst $ appUnApp _finKnPatTy) of
-                                                                                                                                                                                                                                                                                                                                                                   { _tyConNm | _tyConNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (panicJust ("PatExpr.{AppTop,Con}.dgi: " ++ show _tyConNm)
-                                                                                                                                                                                                                                                                                                                                                                              $ dataGamLookup _tyConNm $ _lhsIdataGam) of
-                                                                                                                                                                                                                                                                                                                                                                    { _dgi | _dgi `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (panicJust ("PatExpr.{AppTop,Con}.dti: " ++ show _tyConNm ++ "." ++ show _appFunNm)
-                                                                                                                                                                                                                                                                                                                                                                               $ Map.lookup _appFunNm $ dgiConstrTagMp _dgi) of
-                                                                                                                                                                                                                                                                                                                                                                     { _dti | _dti `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (dtiCTag _dti) of
-                                                                                                                                                                                                                                                                                                                                                                      { _tag | _tag `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                                                                                                                       { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                                                                                                                        { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                        (case (RPat_Con _cpNm _acorety _tag (RPatConBind_One _rest (map fst _rpatBinds))) of
-                                                                                                                                                                                                                                                                                                                                                                         { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                         (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                                          { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                          (case ((emptyRCEEnv _lhsIopts) { rceValGam = _lhsIvalGam, rceDataGam = _lhsIdataGam, rceTyVarMp = _lhsIfinTyVarMp }) of
-                                                                                                                                                                                                                                                                                                                                                                           { _rceEnv | _rceEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                           (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                            { _valCBindLSub | _valCBindLSub `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                            (case (acoreRPatBindL2BindL _rceEnv (not $ null _valCBindLSub) _lhsIceParentNm _tag (Just (_rest,length _fsRPatL)) _rpatBinds) of
-                                                                                                                                                                                                                                                                                                                                                                             { _valCBindL | _valCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                             (case (_valCBindL ++ _valCBindLSub) of
-                                                                                                                                                                                                                                                                                                                                                                              { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                       in  sem_PatExpr_AppTop_8)) of
-                                                                                                                                                                                                                                                                                                { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                         in  sem_PatExpr_AppTop_7)) of
-                                                                                                                                                                                                                                                  { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                                  ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                         in  sem_PatExpr_AppTop_6)) of
-                                                                                                                                                                                                  { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                  ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) }) })))
-                                                                                                                                                                        in  sem_PatExpr_AppTop_5)) of
-                                                                                                                                                                 { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                 ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_AppTop_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_AppTop_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_AppTop_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_AppTop_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_Parens :: Range ->
-                      T_PatExpr ->
-                      T_PatExpr
-
-sem_PatExpr_Parens hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_Parens_1 :: T_PatExpr_1
-                       sem_PatExpr_Parens_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup187 | __tup187 `seq` (True) ->
-                                  (case (__tup187) of
-                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
-                                   (case (patExpr_1 _patExprOgUniq) of
-                                    { ( _patExprIgUniq,patExpr_2) | True ->
-                                        (case (_patExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_Parens_2 :: T_PatExpr_2
-                                                     sem_PatExpr_Parens_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                         (case (_patExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_Parens_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_Parens_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_Parens_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_Parens_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (_patExprItopNm) of
-                                                                                                                                                              { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                              (case ((let sem_PatExpr_Parens_5 :: T_PatExpr_5
-                                                                                                                                                                          sem_PatExpr_Parens_5 =
-                                                                                                                                                                              (\ _lhsIvalGam ->
-                                                                                                                                                                                   _lhsIvalGam `seq`
-                                                                                                                                                                                   ((case (_lhsIvalGam) of
-                                                                                                                                                                                     { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                     (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                      { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                          (case (_patExprIarity) of
-                                                                                                                                                                                           { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                           (case (Nothing) of
-                                                                                                                                                                                            { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                            (case (_mbTopNm) of
-                                                                                                                                                                                             { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                             (case (_patExprIpatFunTy) of
-                                                                                                                                                                                              { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                              (case ((let sem_PatExpr_Parens_6 :: T_PatExpr_6
-                                                                                                                                                                                                          sem_PatExpr_Parens_6 =
-                                                                                                                                                                                                              (\ _lhsIfiOpts
-                                                                                                                                                                                                                 _lhsIinclVarBind
-                                                                                                                                                                                                                 _lhsIknTy
-                                                                                                                                                                                                                 _lhsIknTyL
-                                                                                                                                                                                                                 _lhsIpatTyVarMp
-                                                                                                                                                                                                                 _lhsItySigGam ->
-                                                                                                                                                                                                                   _lhsIfiOpts `seq`
-                                                                                                                                                                                                                   (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                    (_lhsIknTy `seq`
-                                                                                                                                                                                                                     (_lhsIknTyL `seq`
-                                                                                                                                                                                                                      (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                       (_lhsItySigGam `seq`
-                                                                                                                                                                                                                        ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                          { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                          (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                           { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsIknTyL) of
-                                                                                                                                                                                                                            { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsIknTy) of
-                                                                                                                                                                                                                             { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                              { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                               { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                               (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                    (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                     { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                     (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                      { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                      (case ((let sem_PatExpr_Parens_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                  sem_PatExpr_Parens_7 =
-                                                                                                                                                                                                                                                      (\ _lhsIchrStore
-                                                                                                                                                                                                                                                         _lhsIclDfGam
-                                                                                                                                                                                                                                                         _lhsItvKiVarMp
-                                                                                                                                                                                                                                                         _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                         _lhsItyVarMp
-                                                                                                                                                                                                                                                         _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                           _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                           (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                            (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                   { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                    { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                     { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                      { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                       { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                        { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                            (case (_patExprIcpNm) of
-                                                                                                                                                                                                                                                                             { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                              { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                               { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_patExprIty) of
-                                                                                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case ((let sem_PatExpr_Parens_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                              sem_PatExpr_Parens_8 =
-                                                                                                                                                                                                                                                                                                  (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                     _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                     _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                     _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                     _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                       _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                               (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                  { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                   { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                    { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                     { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                      { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                       { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                        { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                         { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                          { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                           { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                            { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                                                                                                                  { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                   { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (ppParens _patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                    { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                     { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_patExprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (False) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                            { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_patExprIrpat) of
-                                                                                                                                                                                                                                                                                                                                              { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                          in  sem_PatExpr_Parens_8)) of
-                                                                                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                              in  sem_PatExpr_Parens_7)) of
-                                                                                                                                                                                                                                       { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                       ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                      in  sem_PatExpr_Parens_6)) of
-                                                                                                                                                                                               { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                               ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                      in  sem_PatExpr_Parens_5)) of
-                                                                                                                                                               { ( sem_PatExpr_5) | True ->
-                                                                                                                                                               ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_Parens_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_Parens_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_Parens_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_Parens_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_Ann :: Range ->
-                   T_PatExprAnn ->
-                   T_PatExpr ->
-                   T_PatExpr
-
-sem_PatExpr_Ann hsrange_ ann_ patExpr_ | hsrange_ `seq` (ann_ `seq` (patExpr_ `seq` (True))) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_Ann_1 :: T_PatExpr_1
-                       sem_PatExpr_Ann_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup188 | __tup188 `seq` (True) ->
-                                  (case (__tup188) of
-                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
-                                   (case (patExpr_1 _patExprOgUniq) of
-                                    { ( _patExprIgUniq,patExpr_2) | True ->
-                                        (case (_patExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_Ann_2 :: T_PatExpr_2
-                                                     sem_PatExpr_Ann_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                         (case (_patExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_Ann_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_Ann_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_Ann_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_Ann_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (_patExprItopNm) of
-                                                                                                                                                              { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                              (case ((let sem_PatExpr_Ann_5 :: T_PatExpr_5
-                                                                                                                                                                          sem_PatExpr_Ann_5 =
-                                                                                                                                                                              (\ _lhsIvalGam ->
-                                                                                                                                                                                   _lhsIvalGam `seq`
-                                                                                                                                                                                   ((case (_lhsIvalGam) of
-                                                                                                                                                                                     { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                     (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                      { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                          (case (_patExprIarity) of
-                                                                                                                                                                                           { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                           (case (Nothing) of
-                                                                                                                                                                                            { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                            (case (_mbTopNm) of
-                                                                                                                                                                                             { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                             (case (_patExprIpatFunTy) of
-                                                                                                                                                                                              { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                              (case ((let sem_PatExpr_Ann_6 :: T_PatExpr_6
-                                                                                                                                                                                                          sem_PatExpr_Ann_6 =
-                                                                                                                                                                                                              (\ _lhsIfiOpts
-                                                                                                                                                                                                                 _lhsIinclVarBind
-                                                                                                                                                                                                                 _lhsIknTy
-                                                                                                                                                                                                                 _lhsIknTyL
-                                                                                                                                                                                                                 _lhsIpatTyVarMp
-                                                                                                                                                                                                                 _lhsItySigGam ->
-                                                                                                                                                                                                                   _lhsIfiOpts `seq`
-                                                                                                                                                                                                                   (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                    (_lhsIknTy `seq`
-                                                                                                                                                                                                                     (_lhsIknTyL `seq`
-                                                                                                                                                                                                                      (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                       (_lhsItySigGam `seq`
-                                                                                                                                                                                                                        ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                          { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                          (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                           { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsIknTyL) of
-                                                                                                                                                                                                                            { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsIknTy) of
-                                                                                                                                                                                                                             { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                              { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                               { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                               (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                    (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                     { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                     (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                      { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                      (case ((let sem_PatExpr_Ann_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                  sem_PatExpr_Ann_7 =
-                                                                                                                                                                                                                                                      (\ _lhsIchrStore
-                                                                                                                                                                                                                                                         _lhsIclDfGam
-                                                                                                                                                                                                                                                         _lhsItvKiVarMp
-                                                                                                                                                                                                                                                         _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                         _lhsItyVarMp
-                                                                                                                                                                                                                                                         _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                           _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                           (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                            (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                   { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                    { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                     { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                      { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                       { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                        { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                            (case (_patExprIcpNm) of
-                                                                                                                                                                                                                                                                             { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                              { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                               { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_patExprIty) of
-                                                                                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case ((let sem_PatExpr_Ann_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                              sem_PatExpr_Ann_8 =
-                                                                                                                                                                                                                                                                                                  (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                     _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                     _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                     _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                     _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                       _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                               (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                  { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                   { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                    { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                     { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                      { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                       { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                        { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                         { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                          { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                           { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                            { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                                                                                                                  { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                   { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                    { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                     { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_patExprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (False) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                            { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_patExprIrpat) of
-                                                                                                                                                                                                                                                                                                                                              { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                          in  sem_PatExpr_Ann_8)) of
-                                                                                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                              in  sem_PatExpr_Ann_7)) of
-                                                                                                                                                                                                                                       { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                       ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                      in  sem_PatExpr_Ann_6)) of
-                                                                                                                                                                                               { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                               ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                      in  sem_PatExpr_Ann_5)) of
-                                                                                                                                                               { ( sem_PatExpr_5) | True ->
-                                                                                                                                                               ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_Ann_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_Ann_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_Ann_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_Ann_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_TypeAs :: Range ->
-                      T_TyExpr ->
-                      T_PatExpr ->
-                      T_PatExpr
-
-sem_PatExpr_TypeAs hsrange_ tyExpr_ patExpr_ | hsrange_ `seq` (tyExpr_ `seq` (patExpr_ `seq` (True))) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (tyExpr_) of
-          { ( _tyExprIrange,tyExpr_1) | True ->
-              (case (rangeUnions [hsrange_, _tyExprIrange , _patExprIrange
-                                                                         ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_PatExpr_TypeAs_1 :: T_PatExpr_1
-                            sem_PatExpr_TypeAs_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_4_fo) -> (__cont,lUniq,lUniq_4_fo)}} )) of
-                                       { __tup189 | __tup189 `seq` (True) ->
-                                       (case (__tup189) of
-                                        { (_tyExprOgUniq,_,_) | _tyExprOgUniq `seq` (True) ->
-                                        (case (tyExpr_1 _tyExprOgUniq) of
-                                         { ( _tyExprIgUniq,tyExpr_2) | True ->
-                                             (case (_tyExprIgUniq) of
-                                              { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
-                                              (case (patExpr_1 _patExprOgUniq) of
-                                               { ( _patExprIgUniq,patExpr_2) | True ->
-                                                   (case (_patExprIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_PatExpr_TypeAs_2 :: T_PatExpr_2
-                                                                sem_PatExpr_TypeAs_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                               (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                                { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                                    (case (_patExprIpredSameScopeCounter) of
-                                                                                     { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case ((let sem_PatExpr_TypeAs_3 :: T_PatExpr_3
-                                                                                                 sem_PatExpr_TypeAs_3 =
-                                                                                                     (\ _lhsIkiVarMp
-                                                                                                        _lhsIopts
-                                                                                                        _lhsIpolGam
-                                                                                                        _lhsIpolVarMp
-                                                                                                        _lhsIpredScope
-                                                                                                        _lhsItyGam
-                                                                                                        _lhsItyKiGam
-                                                                                                        _lhsItyKiGlobFreeTvarS ->
-                                                                                                          _lhsIkiVarMp `seq`
-                                                                                                          (_lhsIopts `seq`
-                                                                                                           (_lhsIpolGam `seq`
-                                                                                                            (_lhsIpolVarMp `seq`
-                                                                                                             (_lhsIpredScope `seq`
-                                                                                                              (_lhsItyGam `seq`
-                                                                                                               (_lhsItyKiGam `seq`
-                                                                                                                (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                 ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                   { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                   (case (_lhsItyKiGam) of
-                                                                                                                    { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
-                                                                                                                    (case (_lhsItyGam) of
-                                                                                                                     { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
-                                                                                                                     (case (_lhsIpolVarMp) of
-                                                                                                                      { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_lhsIpolGam) of
-                                                                                                                       { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
-                                                                                                                       (case (polCovariant) of
-                                                                                                                        { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
-                                                                                                                        (case (tyExpr_2 _tyExprOtyGam) of
-                                                                                                                         { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
-                                                                                                                             (case (tyExpr_3 _tyExprOknPolCtx) of
-                                                                                                                              { ( _tyExprIpolVarL,tyExpr_4) | True ->
-                                                                                                                                  (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
-                                                                                                                                   { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
-                                                                                                                                       (case (tyExpr_5 _tyExprOtyKiGam) of
-                                                                                                                                        { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
-                                                                                                                                            (case (_tyExprItyKiGam) of
-                                                                                                                                             { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                                                             (case (_tyExprItyGam) of
-                                                                                                                                              { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                                               { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                                                               (case (_tyExprIpolVarMp) of
-                                                                                                                                                { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                                                                (case (_lhsIpolGam) of
-                                                                                                                                                 { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                                                                 (case (_lhsIopts) of
-                                                                                                                                                  { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                                                                  (case (_lhsIkiVarMp) of
-                                                                                                                                                   { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                   (case (tyExpr_6 _tyExprOkiVarMp) of
-                                                                                                                                                    { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
-                                                                                                                                                        (case (_tyExprIkiVarMp) of
-                                                                                                                                                         { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                                                                         (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                                                          { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                                                              (case (_patExprIkiVarMp) of
-                                                                                                                                                               { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                               (case (_patExprIpolVarMp) of
-                                                                                                                                                                { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                                (case (_patExprItyGam) of
-                                                                                                                                                                 { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                                                                 (case (_patExprItyKiGam) of
-                                                                                                                                                                  { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                  (case ((let sem_PatExpr_TypeAs_4 :: T_PatExpr_4
-                                                                                                                                                                              sem_PatExpr_TypeAs_4 =
-                                                                                                                                                                                  (\ _lhsIclGam
-                                                                                                                                                                                     _lhsIdataGam
-                                                                                                                                                                                     _lhsIfinKiVarMp
-                                                                                                                                                                                     _lhsIfinTyKiGam
-                                                                                                                                                                                     _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                                       _lhsIclGam `seq`
-                                                                                                                                                                                       (_lhsIdataGam `seq`
-                                                                                                                                                                                        (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                                         (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                          (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                           ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                             { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                              { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                               { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                               (case (_lhsIdataGam) of
-                                                                                                                                                                                                { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                                                                (case (_lhsIclGam) of
-                                                                                                                                                                                                 { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                                                                 (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                  { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                                                                      (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                                                                       { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                       (case (_patExprItopNm) of
-                                                                                                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                                                        (case ((let sem_PatExpr_TypeAs_5 :: T_PatExpr_5
-                                                                                                                                                                                                                    sem_PatExpr_TypeAs_5 =
-                                                                                                                                                                                                                        (\ _lhsIvalGam ->
-                                                                                                                                                                                                                             _lhsIvalGam `seq`
-                                                                                                                                                                                                                             ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                               { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                               (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                                                                { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                                                                    (case (_patExprIarity) of
-                                                                                                                                                                                                                                     { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                                                                     (case (Nothing) of
-                                                                                                                                                                                                                                      { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_mbTopNm) of
-                                                                                                                                                                                                                                       { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_patExprIpatFunTy) of
-                                                                                                                                                                                                                                        { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                                                                        (case ((let sem_PatExpr_TypeAs_6 :: T_PatExpr_6
-                                                                                                                                                                                                                                                    sem_PatExpr_TypeAs_6 =
-                                                                                                                                                                                                                                                        (\ _lhsIfiOpts
-                                                                                                                                                                                                                                                           _lhsIinclVarBind
-                                                                                                                                                                                                                                                           _lhsIknTy
-                                                                                                                                                                                                                                                           _lhsIknTyL
-                                                                                                                                                                                                                                                           _lhsIpatTyVarMp
-                                                                                                                                                                                                                                                           _lhsItySigGam ->
-                                                                                                                                                                                                                                                             _lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                             (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                                                              (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                               (_lhsIknTyL `seq`
-                                                                                                                                                                                                                                                                (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                                                                 (_lhsItySigGam `seq`
-                                                                                                                                                                                                                                                                  ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                                    { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIknTyL) of
-                                                                                                                                                                                                                                                                     { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                                                                      { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                       { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (__tup189) of
-                                                                                                                                                                                                                                                                        { (_,_,_lUniq_4_fo) | _lUniq_4_fo `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_tyExprIty) of
-                                                                                                                                                                                                                                                                         { _ty_q_ | _ty_q_ `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                    { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                    , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                    , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                    , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                    , feRange = _range
-                                                                                                                                                                                                                                                                                    }) of
-                                                                                                                                                                                                                                                                          { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (fitsIn _lhsIfiOpts _fe _lUniq_4_fo _lhsIpatTyVarMp _lhsIknTy _ty_q_) of
-                                                                                                                                                                                                                                                                           { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (foTy _fo_) of
-                                                                                                                                                                                                                                                                            { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                                                             { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                                                              { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                                                                  (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                                                   { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                                                                    { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case ((let sem_PatExpr_TypeAs_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                                                                sem_PatExpr_TypeAs_7 =
-                                                                                                                                                                                                                                                                                                    (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                                                       _lhsIclDfGam
-                                                                                                                                                                                                                                                                                                       _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                                                       _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                       _lhsItyVarMp
-                                                                                                                                                                                                                                                                                                       _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                                         _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                                 { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                  { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                   { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                    { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                     { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                      { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                          (case (_patExprIcpNm) of
-                                                                                                                                                                                                                                                                                                                           { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                                                            { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                             { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                                                              { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case (_patExprIty) of
-                                                                                                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case ((let sem_PatExpr_TypeAs_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                                                            sem_PatExpr_TypeAs_8 =
-                                                                                                                                                                                                                                                                                                                                                (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                   _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                   _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                   _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                   _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                   _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                                                                   _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                     (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                             (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                              ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                 { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                  { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                   { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                    { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                     { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                      { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                       { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                                                        { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                         { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                         (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                          { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                                                                                                               { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                                                                                                                                                                                { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                     { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                      { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                       { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                        { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                         { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                                                                                          { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                             { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                               { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                                                                { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (_tyExprIallErrSq `Seq.union` _patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                      (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                       (case (_patExprIpp >#< "::" >#< _tyExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                        { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                        (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                         (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                          (case (rngLift _range mkNestErr' _pp [ _patExprIerrSq, _tyExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                                                               , foErrSq _fo_
-                                                                                                                                                                                                                                                                                                                                                                                                                                               ]) of
-                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                           (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                            (case (_tyExprIgathMentrelFilterMp `mentrelFilterMpUnion` _patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                             (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                              (case (False) of
-                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                               (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_patExprIrpat) of
-                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                                                        in  sem_PatExpr_TypeAs_8)) of
-                                                                                                                                                                                                                                                                                                                                 { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                                 ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                                                            in  sem_PatExpr_TypeAs_7)) of
-                                                                                                                                                                                                                                                                                     { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                                                                     ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                in  sem_PatExpr_TypeAs_6)) of
-                                                                                                                                                                                                                                         { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                                                         ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                                                                in  sem_PatExpr_TypeAs_5)) of
-                                                                                                                                                                                                         { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                                          in  sem_PatExpr_TypeAs_4)) of
-                                                                                                                                                                   { ( sem_PatExpr_4) | True ->
-                                                                                                                                                                   ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                             in  sem_PatExpr_TypeAs_3)) of
-                                                                                      { ( sem_PatExpr_3) | True ->
-                                                                                      ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                            in  sem_PatExpr_TypeAs_2)) of
-                                                     { ( sem_PatExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) }) }) })))
-                        in  sem_PatExpr_TypeAs_1)) of
-                 { ( sem_PatExpr_1) | True ->
-                 ( _lhsOrange,sem_PatExpr_1) }) }) }) }) })
-
-sem_PatExpr_SConst :: Range ->
-                      String ->
-                      T_PatExpr
-
-sem_PatExpr_SConst hsrange_ str_ | hsrange_ `seq` (str_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_PatExpr_SConst_1 :: T_PatExpr_1
-                  sem_PatExpr_SConst_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup190 | __tup190 `seq` (True) ->
-                             (case (__tup190) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_PatExpr_SConst_2 :: T_PatExpr_2
-                                          sem_PatExpr_SConst_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_PatExpr_SConst_3 :: T_PatExpr_3
-                                                                   sem_PatExpr_SConst_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_PatExpr_SConst_4 :: T_PatExpr_4
-                                                                                                    sem_PatExpr_SConst_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                 ((case (Seq.empty) of
-                                                                                                                   { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                   (case (__tup190) of
-                                                                                                                    { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                    (case (uidHNm _lUniq) of
-                                                                                                                     { _topNm | _topNm `seq` (True) ->
-                                                                                                                     (case (_topNm) of
-                                                                                                                      { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                      (case ((let sem_PatExpr_SConst_5 :: T_PatExpr_5
-                                                                                                                                  sem_PatExpr_SConst_5 =
-                                                                                                                                      (\ _lhsIvalGam ->
-                                                                                                                                           _lhsIvalGam `seq`
-                                                                                                                                           ((case (0) of
-                                                                                                                                             { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                             (case (Nothing) of
-                                                                                                                                              { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                              (case (_mbTopNm) of
-                                                                                                                                               { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                               (case (Ty_Any) of
-                                                                                                                                                { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                (case ((let sem_PatExpr_SConst_6 :: T_PatExpr_6
-                                                                                                                                                            sem_PatExpr_SConst_6 =
-                                                                                                                                                                (\ _lhsIfiOpts
-                                                                                                                                                                   _lhsIinclVarBind
-                                                                                                                                                                   _lhsIknTy
-                                                                                                                                                                   _lhsIknTyL
-                                                                                                                                                                   _lhsIpatTyVarMp
-                                                                                                                                                                   _lhsItySigGam ->
-                                                                                                                                                                     _lhsIfiOpts `seq`
-                                                                                                                                                                     (_lhsIinclVarBind `seq`
-                                                                                                                                                                      (_lhsIknTy `seq`
-                                                                                                                                                                       (_lhsIknTyL `seq`
-                                                                                                                                                                        (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                         (_lhsItySigGam `seq`
-                                                                                                                                                                          ((case (tyString _lhsIopts) of
-                                                                                                                                                                            { _constTy | _constTy `seq` (True) ->
-                                                                                                                                                                            (case (defaultFIEnv
-                                                                                                                                                                                       { feEHCOpts = _lhsIopts
-                                                                                                                                                                                       , fePredScope = _lhsIpredScope
-                                                                                                                                                                                       , feTyGam = _lhsItyGam
-                                                                                                                                                                                       , fePolGam = _lhsIpolGam
-                                                                                                                                                                                       , feRange = _range
-                                                                                                                                                                                       }) of
-                                                                                                                                                                             { _fe | _fe `seq` (True) ->
-                                                                                                                                                                             (case (fitsIn _lhsIfiOpts _fe _lUniq _lhsIpatTyVarMp _lhsIknTy _constTy) of
-                                                                                                                                                                              { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                              (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                               { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                               (case (_lhsIvalGam) of
-                                                                                                                                                                                { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                (case ((let sem_PatExpr_SConst_7 :: T_PatExpr_7
-                                                                                                                                                                                            sem_PatExpr_SConst_7 =
-                                                                                                                                                                                                (\ _lhsIchrStore
-                                                                                                                                                                                                   _lhsIclDfGam
-                                                                                                                                                                                                   _lhsItvKiVarMp
-                                                                                                                                                                                                   _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                   _lhsItyVarMp
-                                                                                                                                                                                                   _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                     _lhsIchrStore `seq`
-                                                                                                                                                                                                     (_lhsIclDfGam `seq`
-                                                                                                                                                                                                      (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                        (_lhsItyVarMp `seq`
-                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                          ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                            { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                            (case (_cpNm) of
-                                                                                                                                                                                                             { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                             (case (Map.empty) of
-                                                                                                                                                                                                              { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                              (case (Map.empty) of
-                                                                                                                                                                                                               { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                               (case (emptyGam) of
-                                                                                                                                                                                                                { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                (case (_constTy) of
-                                                                                                                                                                                                                 { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                 (case (_ty) of
-                                                                                                                                                                                                                  { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                  (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                   { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                   (case ((let sem_PatExpr_SConst_8 :: T_PatExpr_8
-                                                                                                                                                                                                                               sem_PatExpr_SConst_8 =
-                                                                                                                                                                                                                                   (\ _lhsIcSubst
-                                                                                                                                                                                                                                      _lhsIceParentNm
-                                                                                                                                                                                                                                      _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                      _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                      _lhsIfinTyVarMp
-                                                                                                                                                                                                                                      _lhsIfinValGam
-                                                                                                                                                                                                                                      _lhsImoduleNm
-                                                                                                                                                                                                                                      _lhsIrangeMp
-                                                                                                                                                                                                                                      _lhsIsysfEnv
-                                                                                                                                                                                                                                      _lhsItySigVarMp ->
-                                                                                                                                                                                                                                        _lhsIcSubst `seq`
-                                                                                                                                                                                                                                        (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                         (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                          (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                           (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                            (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                             (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                              (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                               (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                 ((case (Seq.empty) of
-                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                   (case ([]) of
-                                                                                                                                                                                                                                                    { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (hsnUnknown) of
-                                                                                                                                                                                                                                                     { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (pp (show str_)) of
-                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (_pp) of
-                                                                                                                                                                                                                                                       { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (Seq.empty) of
-                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                                                                                                          { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (Map.empty) of
-                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (emptyVarMp) of
-                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (False) of
-                                                                                                                                                                                                                                                             { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                              { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_pp) of
-                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                 { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                  { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                   { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (RPat_Int _cpNm _acorety (-1)) of
-                                                                                                                                                                                                                                                                    { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_rpat) of
-                                                                                                                                                                                                                                                                     { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case ([]) of
-                                                                                                                                                                                                                                                                      { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                           in  sem_PatExpr_SConst_8)) of
-                                                                                                                                                                                                                    { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                    ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                        in  sem_PatExpr_SConst_7)) of
-                                                                                                                                                                                 { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                 ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }))))))))
-                                                                                                                                                        in  sem_PatExpr_SConst_6)) of
-                                                                                                                                                 { ( sem_PatExpr_6) | True ->
-                                                                                                                                                 ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                              in  sem_PatExpr_SConst_5)) of
-                                                                                                                       { ( sem_PatExpr_5) | True ->
-                                                                                                                       ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
-                                                                                                in  sem_PatExpr_SConst_4)) of
-                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }))))))))))
-                                                               in  sem_PatExpr_SConst_3)) of
-                                                        { ( sem_PatExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
-                                      in  sem_PatExpr_SConst_2)) of
-                               { ( sem_PatExpr_2) | True ->
-                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
-              in  sem_PatExpr_SConst_1)) of
-       { ( sem_PatExpr_1) | True ->
-       ( _lhsOrange,sem_PatExpr_1) }) }) })
-
-sem_PatExpr_Rec :: Range ->
-                   T_RecPatExpr ->
-                   T_PatExpr
-
-sem_PatExpr_Rec hsrange_ recPatExpr_ | hsrange_ `seq` (recPatExpr_ `seq` (True)) =
-    (case (recPatExpr_) of
-     { ( _recPatExprIrange,recPatExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _recPatExprIrange
-                                                     , _recPatExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_Rec_1 :: T_PatExpr_1
-                       sem_PatExpr_Rec_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup191 | __tup191 `seq` (True) ->
-                                  (case (__tup191) of
-                                   { (_recPatExprOgUniq,_) | _recPatExprOgUniq `seq` (True) ->
-                                   (case (recPatExpr_1 _recPatExprOgUniq) of
-                                    { ( _recPatExprIgUniq,recPatExpr_2) | True ->
-                                        (case (_recPatExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_Rec_2 :: T_PatExpr_2
-                                                     sem_PatExpr_Rec_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _recPatExprOpredSameScopeCounter | _recPatExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _recPatExprOlexLev | _recPatExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _recPatExprOkiGam | _recPatExprOkiGam `seq` (True) ->
-                                                                    (case (recPatExpr_2 _recPatExprOkiGam _recPatExprOlexLev _recPatExprOpredSameScopeCounter) of
-                                                                     { ( _recPatExprIpredSameScopeCounter,recPatExpr_3) | True ->
-                                                                         (case (_recPatExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_Rec_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_Rec_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _recPatExprOtyKiGlobFreeTvarS | _recPatExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _recPatExprOtyKiGam | _recPatExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _recPatExprOtyGam | _recPatExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _recPatExprOpredScope | _recPatExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _recPatExprOpolVarMp | _recPatExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _recPatExprOpolGam | _recPatExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _recPatExprOopts | _recPatExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _recPatExprOkiVarMp | _recPatExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (recPatExpr_3 _recPatExprOkiVarMp _recPatExprOopts _recPatExprOpolGam _recPatExprOpolVarMp _recPatExprOpredScope _recPatExprOtyGam _recPatExprOtyKiGam _recPatExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _recPatExprIkiVarMp,_recPatExprIpolVarMp,_recPatExprItyGam,_recPatExprItyKiGam,recPatExpr_4) | True ->
-                                                                                                                    (case (_recPatExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_recPatExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_recPatExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_recPatExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_Rec_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_Rec_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _recPatExprOtyTyTySigFreeTvarS | _recPatExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _recPatExprOfinTyKiGam | _recPatExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _recPatExprOfinKiVarMp | _recPatExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _recPatExprOdataGam | _recPatExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _recPatExprOclGam | _recPatExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (positionalFldNames) of
-                                                                                                                                                        { _recPatExprOpositionalFldNmL | _recPatExprOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                        (case (recPatExpr_4 _recPatExprOclGam _recPatExprOdataGam _recPatExprOfinKiVarMp _recPatExprOfinTyKiGam _recPatExprOpositionalFldNmL _recPatExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                         { ( _recPatExprIchrInstDeclSq,_recPatExprIhasAFldRef,_recPatExprIpositionalFldNmL,recPatExpr_5) | True ->
-                                                                                                                                                             (case (_recPatExprIchrInstDeclSq) of
-                                                                                                                                                              { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                              (case (__tup191) of
-                                                                                                                                                               { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                               (case (uidHNm _lUniq) of
-                                                                                                                                                                { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                                (case (_topNm) of
-                                                                                                                                                                 { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                 (case ((let sem_PatExpr_Rec_5 :: T_PatExpr_5
-                                                                                                                                                                             sem_PatExpr_Rec_5 =
-                                                                                                                                                                                 (\ _lhsIvalGam ->
-                                                                                                                                                                                      _lhsIvalGam `seq`
-                                                                                                                                                                                      ((case (0) of
-                                                                                                                                                                                        { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                        (case (Nothing) of
-                                                                                                                                                                                         { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                         (case (_mbTopNm) of
-                                                                                                                                                                                          { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                          (case (Ty_Any) of
-                                                                                                                                                                                           { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                           (case ((let sem_PatExpr_Rec_6 :: T_PatExpr_6
-                                                                                                                                                                                                       sem_PatExpr_Rec_6 =
-                                                                                                                                                                                                           (\ _lhsIfiOpts
-                                                                                                                                                                                                              _lhsIinclVarBind
-                                                                                                                                                                                                              _lhsIknTy
-                                                                                                                                                                                                              _lhsIknTyL
-                                                                                                                                                                                                              _lhsIpatTyVarMp
-                                                                                                                                                                                                              _lhsItySigGam ->
-                                                                                                                                                                                                                _lhsIfiOpts `seq`
-                                                                                                                                                                                                                (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                 (_lhsIknTy `seq`
-                                                                                                                                                                                                                  (_lhsIknTyL `seq`
-                                                                                                                                                                                                                   (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                    (_lhsItySigGam `seq`
-                                                                                                                                                                                                                     ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                       { _recPatExprOvalGam | _recPatExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                       (case (_lhsItySigGam) of
-                                                                                                                                                                                                                        { _recPatExprOtySigGam | _recPatExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                        (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                         { _recPatExprOpatTyVarMp | _recPatExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                         (case (_lhsIknTy) of
-                                                                                                                                                                                                                          { _recPatExprOknTy | _recPatExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                          (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                           { _recPatExprOfiOpts | _recPatExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                           (case (_recPatExprIhasAFldRef) of
-                                                                                                                                                                                                                            { _recPatExprOmatchOnFld | _recPatExprOmatchOnFld `seq` (True) ->
-                                                                                                                                                                                                                            (case (recPatExpr_5 _recPatExprOfiOpts _recPatExprOknTy _recPatExprOmatchOnFld _recPatExprOpatTyVarMp _recPatExprOtySigGam _recPatExprOvalGam) of
-                                                                                                                                                                                                                             { ( _recPatExprIpatTyVarMp,_recPatExprIvalGam,recPatExpr_6) | True ->
-                                                                                                                                                                                                                                 (case (_recPatExprIpatTyVarMp) of
-                                                                                                                                                                                                                                  { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                  (case (_recPatExprIvalGam) of
-                                                                                                                                                                                                                                   { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                   (case ((let sem_PatExpr_Rec_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                               sem_PatExpr_Rec_7 =
-                                                                                                                                                                                                                                                   (\ _lhsIchrStore
-                                                                                                                                                                                                                                                      _lhsIclDfGam
-                                                                                                                                                                                                                                                      _lhsItvKiVarMp
-                                                                                                                                                                                                                                                      _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                      _lhsItyVarMp
-                                                                                                                                                                                                                                                      _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                        _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                        (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                         (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                          (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                           (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                            (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                             ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                               { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_cpNm) of
-                                                                                                                                                                                                                                                                { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _recPatExprOvalTyGlobFreeTvarS | _recPatExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                  { _recPatExprOtyVarMp | _recPatExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _recPatExprOtyTyGlobFreeTvarS | _recPatExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                    { _recPatExprOtvKiVarMp | _recPatExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                     { _recPatExprOclDfGam | _recPatExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                      { _recPatExprOchrStore | _recPatExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (recPatExpr_6 _recPatExprOchrStore _recPatExprOclDfGam _recPatExprOtvKiVarMp _recPatExprOtyTyGlobFreeTvarS _recPatExprOtyVarMp _recPatExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                       { ( _recPatExprIgathCnstrMp,_recPatExprIgathRangeMp,_recPatExprIscopeGam,_recPatExprIty,_recPatExprItyVarMp,recPatExpr_7) | True ->
-                                                                                                                                                                                                                                                                           (case (_recPatExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                            { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_recPatExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                             { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_recPatExprIscopeGam) of
-                                                                                                                                                                                                                                                                              { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_recPatExprIty) of
-                                                                                                                                                                                                                                                                               { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_ty) of
-                                                                                                                                                                                                                                                                                { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_recPatExprItyVarMp) of
-                                                                                                                                                                                                                                                                                 { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case ((let sem_PatExpr_Rec_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                             sem_PatExpr_Rec_8 =
-                                                                                                                                                                                                                                                                                                 (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                    _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                    _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                    _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                    _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                    _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                    _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                    _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                    _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                    _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                      _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                      (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                       (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                        (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                               ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                 { _recPatExprOsysfEnv | _recPatExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                  { _recPatExprOrangeMp | _recPatExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                   { _recPatExprOfinValGam | _recPatExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                    { _recPatExprOfinTyVarMp | _recPatExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                     { _recPatExprOtySigVarMp | _recPatExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                      { _recPatExprOmoduleNm | _recPatExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                       { _recPatExprOchrScopeBindMp | _recPatExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                        { _recPatExprOchrEvidBindMp | _recPatExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                         { _recPatExprOceParentNm | _recPatExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                          { _recPatExprOcSubst | _recPatExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (recPatExpr_7 _recPatExprOcSubst _recPatExprOceParentNm _recPatExprOchrEvidBindMp _recPatExprOchrScopeBindMp _recPatExprOfinTyVarMp _recPatExprOfinValGam _recPatExprOmoduleNm _recPatExprOrangeMp _recPatExprOsysfEnv _recPatExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                           { ( _recPatExprIallErrSq,_recPatExprIcSubst,_recPatExprIerrSq,_recPatExprIextNm,_recPatExprIfsRPatL,_recPatExprIgathMentrelFilterMp,_recPatExprIgathTvKiVarMp,_recPatExprIpatCRest,_recPatExprIpp,_recPatExprIppL,_recPatExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                               (case (_recPatExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (reverse _recPatExprIppL) of
-                                                                                                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_recPatExprIpp) of
-                                                                                                                                                                                                                                                                                                                                   { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_recPatExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                    { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_recPatExprIextNm) of
-                                                                                                                                                                                                                                                                                                                                     { _appFunNm | _appFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (ppAppTop  (hsnRec,mkPPAppFun _appFunNm _recPatExprIpp)
-                                                                                                                                                                                                                                                                                                                                                      (reverse _recPatExprIppL) _recPatExprIpp) of
-                                                                                                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (rngLift _range mkNestErr' _pp [_recPatExprIerrSq]) of
-                                                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_recPatExprIfsRPatL) of
-                                                                                                                                                                                                                                                                                                                                        { _fsRPatL | _fsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_fsRPatL) of
-                                                                                                                                                                                                                                                                                                                                         { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_recPatExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_recPatExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (False) of
-                                                                                                                                                                                                                                                                                                                                            { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                                                                                               { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                                                                                          { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                                                                                          , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                                                                                          , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                                                                                          , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                                                                                          , feRange = _range
-                                                                                                                                                                                                                                                                                                                                                          }) of
-                                                                                                                                                                                                                                                                                                                                                { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                                                                                                 { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (fsL2PatOffsetL _lhsIopts $ rowCanonOrderBy compare $ _fsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                  { _rpatBinds | _rpatBinds `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_recPatExprIpatCRest) of
-                                                                                                                                                                                                                                                                                                                                                   { _rest | _rest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (CTagRec) of
-                                                                                                                                                                                                                                                                                                                                                    { _tag | _tag `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                                                                                                     { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                                                                                                      { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (case _rest of
-                                                                                                                                                                                                                                                                                                                                                                 CPatRest_Empty
-                                                                                                                                                                                                                                                                                                                                                                   ->  RPat_Con _cpNm _acorety _tag (RPatConBind_One _rest (map fst _rpatBinds))
-                                                                                                                                                                                                                                                                                                                                                                 CPatRest_Var r
-                                                                                                                                                                                                                                                                                                                                                                   ->  RPat_Con _cpNm _acorety _tag (RPatConBind_One _rest pbL)
-                                                                                                                                                                                                                                                                                                                                                                       where  pbL = map fst $ fsL2PatOffsetL _lhsIopts $ fsLReorder _lhsIopts $ reverse $ _fsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                       { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case ((emptyRCEEnv _lhsIopts) { rceValGam = _lhsIvalGam, rceDataGam = _lhsIdataGam, rceTyVarMp = _lhsIfinTyVarMp }) of
-                                                                                                                                                                                                                                                                                                                                                         { _rceEnv | _rceEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (_recPatExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                          { _valCBindLSub | _valCBindLSub `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (acoreRPatBindL2BindL _rceEnv (not $ null _valCBindLSub) _lhsIceParentNm _tag (Just (_rest,length _fsRPatL)) _rpatBinds) of
-                                                                                                                                                                                                                                                                                                                                                           { _valCBindL | _valCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_valCBindL ++ _valCBindLSub) of
-                                                                                                                                                                                                                                                                                                                                                            { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                         in  sem_PatExpr_Rec_8)) of
-                                                                                                                                                                                                                                                                                  { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                  ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                           in  sem_PatExpr_Rec_7)) of
-                                                                                                                                                                                                                                    { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                    ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                   in  sem_PatExpr_Rec_6)) of
-                                                                                                                                                                                            { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                            ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                                                                         in  sem_PatExpr_Rec_5)) of
-                                                                                                                                                                  { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                  ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_Rec_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_Rec_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_Rec_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_Rec_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_DataFields :: Range ->
-                          T_DataFieldPatExpr ->
-                          T_PatExpr
-
-sem_PatExpr_DataFields hsrange_ dataFieldPatExpr_ | hsrange_ `seq` (dataFieldPatExpr_ `seq` (True)) =
-    (case (dataFieldPatExpr_) of
-     { ( _dataFieldPatExprIrange,dataFieldPatExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _dataFieldPatExprIrange
-                                                     , _dataFieldPatExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_DataFields_1 :: T_PatExpr_1
-                       sem_PatExpr_DataFields_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup193 | __tup193 `seq` (True) ->
-                                  (case (__tup193) of
-                                   { (_dataFieldPatExprOgUniq,_) | _dataFieldPatExprOgUniq `seq` (True) ->
-                                   (case (dataFieldPatExpr_1 _dataFieldPatExprOgUniq) of
-                                    { ( _dataFieldPatExprIgUniq,dataFieldPatExpr_2) | True ->
-                                        (case (_dataFieldPatExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_DataFields_2 :: T_PatExpr_2
-                                                     sem_PatExpr_DataFields_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _dataFieldPatExprOpredSameScopeCounter | _dataFieldPatExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _dataFieldPatExprOlexLev | _dataFieldPatExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _dataFieldPatExprOkiGam | _dataFieldPatExprOkiGam `seq` (True) ->
-                                                                    (case (dataFieldPatExpr_2 _dataFieldPatExprOkiGam _dataFieldPatExprOlexLev _dataFieldPatExprOpredSameScopeCounter) of
-                                                                     { ( _dataFieldPatExprIpredSameScopeCounter,dataFieldPatExpr_3) | True ->
-                                                                         (case (_dataFieldPatExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_DataFields_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_DataFields_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _dataFieldPatExprOtyKiGlobFreeTvarS | _dataFieldPatExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _dataFieldPatExprOtyKiGam | _dataFieldPatExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _dataFieldPatExprOtyGam | _dataFieldPatExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _dataFieldPatExprOpredScope | _dataFieldPatExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _dataFieldPatExprOpolVarMp | _dataFieldPatExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _dataFieldPatExprOpolGam | _dataFieldPatExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _dataFieldPatExprOopts | _dataFieldPatExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _dataFieldPatExprOkiVarMp | _dataFieldPatExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (dataFieldPatExpr_3 _dataFieldPatExprOkiVarMp _dataFieldPatExprOopts _dataFieldPatExprOpolGam _dataFieldPatExprOpolVarMp _dataFieldPatExprOpredScope _dataFieldPatExprOtyGam _dataFieldPatExprOtyKiGam _dataFieldPatExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _dataFieldPatExprIkiVarMp,_dataFieldPatExprIpolVarMp,_dataFieldPatExprItyGam,_dataFieldPatExprItyKiGam,dataFieldPatExpr_4) | True ->
-                                                                                                                    (case (_dataFieldPatExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_dataFieldPatExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_dataFieldPatExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_dataFieldPatExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_DataFields_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_DataFields_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _dataFieldPatExprOtyTyTySigFreeTvarS | _dataFieldPatExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _dataFieldPatExprOfinTyKiGam | _dataFieldPatExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _dataFieldPatExprOfinKiVarMp | _dataFieldPatExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _dataFieldPatExprOdataGam | _dataFieldPatExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _dataFieldPatExprOclGam | _dataFieldPatExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (dataFieldPatExpr_4 _dataFieldPatExprOclGam _dataFieldPatExprOdataGam _dataFieldPatExprOfinKiVarMp _dataFieldPatExprOfinTyKiGam _dataFieldPatExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _dataFieldPatExprIchrInstDeclSq,dataFieldPatExpr_5) | True ->
-                                                                                                                                                            (case (_dataFieldPatExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (__tup193) of
-                                                                                                                                                              { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                              (case (uidHNm _lUniq) of
-                                                                                                                                                               { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                               (case (_topNm) of
-                                                                                                                                                                { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                (case ((let sem_PatExpr_DataFields_5 :: T_PatExpr_5
-                                                                                                                                                                            sem_PatExpr_DataFields_5 =
-                                                                                                                                                                                (\ _lhsIvalGam ->
-                                                                                                                                                                                     _lhsIvalGam `seq`
-                                                                                                                                                                                     ((case (0) of
-                                                                                                                                                                                       { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                       (case (Nothing) of
-                                                                                                                                                                                        { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                        (case (_mbTopNm) of
-                                                                                                                                                                                         { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                         (case (Ty_Any) of
-                                                                                                                                                                                          { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                          (case ((let sem_PatExpr_DataFields_6 :: T_PatExpr_6
-                                                                                                                                                                                                      sem_PatExpr_DataFields_6 =
-                                                                                                                                                                                                          (\ _lhsIfiOpts
-                                                                                                                                                                                                             _lhsIinclVarBind
-                                                                                                                                                                                                             _lhsIknTy
-                                                                                                                                                                                                             _lhsIknTyL
-                                                                                                                                                                                                             _lhsIpatTyVarMp
-                                                                                                                                                                                                             _lhsItySigGam ->
-                                                                                                                                                                                                               _lhsIfiOpts `seq`
-                                                                                                                                                                                                               (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                (_lhsIknTy `seq`
-                                                                                                                                                                                                                 (_lhsIknTyL `seq`
-                                                                                                                                                                                                                  (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                   (_lhsItySigGam `seq`
-                                                                                                                                                                                                                    ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                      { _dataFieldPatExprOvalGam | _dataFieldPatExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                      (case (_lhsItySigGam) of
-                                                                                                                                                                                                                       { _dataFieldPatExprOtySigGam | _dataFieldPatExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                       (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                        { _dataFieldPatExprOpatTyVarMp | _dataFieldPatExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                        (case (_lhsIknTy) of
-                                                                                                                                                                                                                         { _dataFieldPatExprOknTy | _dataFieldPatExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                         (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                          { _dataFieldPatExprOfiOpts | _dataFieldPatExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                          (case (dataFieldPatExpr_5 _dataFieldPatExprOfiOpts _dataFieldPatExprOknTy _dataFieldPatExprOpatTyVarMp _dataFieldPatExprOtySigGam _dataFieldPatExprOvalGam) of
-                                                                                                                                                                                                                           { ( _dataFieldPatExprIpatTyVarMp,_dataFieldPatExprIvalGam,dataFieldPatExpr_6) | True ->
-                                                                                                                                                                                                                               (case (_dataFieldPatExprIpatTyVarMp) of
-                                                                                                                                                                                                                                { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                (case (_dataFieldPatExprIvalGam) of
-                                                                                                                                                                                                                                 { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                 (case ((let sem_PatExpr_DataFields_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                             sem_PatExpr_DataFields_7 =
-                                                                                                                                                                                                                                                 (\ _lhsIchrStore
-                                                                                                                                                                                                                                                    _lhsIclDfGam
-                                                                                                                                                                                                                                                    _lhsItvKiVarMp
-                                                                                                                                                                                                                                                    _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                    _lhsItyVarMp
-                                                                                                                                                                                                                                                    _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                      _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                      (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                       (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                         (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                           ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                             { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_cpNm) of
-                                                                                                                                                                                                                                                              { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                               { _dataFieldPatExprOvalTyGlobFreeTvarS | _dataFieldPatExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                { _dataFieldPatExprOtyVarMp | _dataFieldPatExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _dataFieldPatExprOtyTyGlobFreeTvarS | _dataFieldPatExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                  { _dataFieldPatExprOtvKiVarMp | _dataFieldPatExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                   { _dataFieldPatExprOclDfGam | _dataFieldPatExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                    { _dataFieldPatExprOchrStore | _dataFieldPatExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (dataFieldPatExpr_6 _dataFieldPatExprOchrStore _dataFieldPatExprOclDfGam _dataFieldPatExprOtvKiVarMp _dataFieldPatExprOtyTyGlobFreeTvarS _dataFieldPatExprOtyVarMp _dataFieldPatExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                     { ( _dataFieldPatExprIgathCnstrMp,_dataFieldPatExprIgathRangeMp,_dataFieldPatExprIscopeGam,_dataFieldPatExprIty,_dataFieldPatExprItyVarMp,dataFieldPatExpr_7) | True ->
-                                                                                                                                                                                                                                                                         (case (_dataFieldPatExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                          { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_dataFieldPatExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                           { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_dataFieldPatExprIscopeGam) of
-                                                                                                                                                                                                                                                                            { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_dataFieldPatExprIty) of
-                                                                                                                                                                                                                                                                             { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_ty) of
-                                                                                                                                                                                                                                                                              { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_dataFieldPatExprItyVarMp) of
-                                                                                                                                                                                                                                                                               { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case ((let sem_PatExpr_DataFields_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                           sem_PatExpr_DataFields_8 =
-                                                                                                                                                                                                                                                                                               (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                  _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                  _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                  _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                  _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                  _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                  _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                  _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                    _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                    (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                             ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                               { _dataFieldPatExprOsysfEnv | _dataFieldPatExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                { _dataFieldPatExprOrangeMp | _dataFieldPatExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                 { _dataFieldPatExprOfinValGam | _dataFieldPatExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                  { _dataFieldPatExprOfinTyVarMp | _dataFieldPatExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                   { _dataFieldPatExprOtySigVarMp | _dataFieldPatExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                    { _dataFieldPatExprOmoduleNm | _dataFieldPatExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                     { _dataFieldPatExprOchrScopeBindMp | _dataFieldPatExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                      { _dataFieldPatExprOchrEvidBindMp | _dataFieldPatExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                       { _dataFieldPatExprOceParentNm | _dataFieldPatExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                        { _dataFieldPatExprOcSubst | _dataFieldPatExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (dataFieldPatExpr_7 _dataFieldPatExprOcSubst _dataFieldPatExprOceParentNm _dataFieldPatExprOchrEvidBindMp _dataFieldPatExprOchrScopeBindMp _dataFieldPatExprOfinTyVarMp _dataFieldPatExprOfinValGam _dataFieldPatExprOmoduleNm _dataFieldPatExprOrangeMp _dataFieldPatExprOsysfEnv _dataFieldPatExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                         { ( _dataFieldPatExprIallErrSq,_dataFieldPatExprIcSubst,_dataFieldPatExprIdti,_dataFieldPatExprIerrSq,_dataFieldPatExprIfldL,_dataFieldPatExprIfsRPatL,_dataFieldPatExprIgathMentrelFilterMp,_dataFieldPatExprIgathTvKiVarMp,_dataFieldPatExprIpatCRest,_dataFieldPatExprIpp,_dataFieldPatExprIppL,_dataFieldPatExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                             (case (_dataFieldPatExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case ([]) of
-                                                                                                                                                                                                                                                                                                                               { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (_dataFieldPatExprIpp >#< ppCurlysCommas' (reverse _dataFieldPatExprIppL)) of
-                                                                                                                                                                                                                                                                                                                                 { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                  { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldPatExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                   { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_dataFieldPatExprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                    { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                                                                                                                                                                                     { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_dataFieldPatExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_dataFieldPatExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (False) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                         { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                                                                                           { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                                                                                      { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                                                                                      , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                                                                                      , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                                                                                      , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                                                                                      , feRange = _range
-                                                                                                                                                                                                                                                                                                                                                      }) of
-                                                                                                                                                                                                                                                                                                                                            { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                                                                                             { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_dataFieldPatExprIfsRPatL) of
-                                                                                                                                                                                                                                                                                                                                              { _fsRPatL | _fsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (dtiCTag _dataFieldPatExprIdti) of
-                                                                                                                                                                                                                                                                                                                                               { _tag | _tag `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (let fsL = reverse _fsRPatL
-                                                                                                                                                                                                                                                                                                                                                          grp = groupByOn (\o1 o2 -> (foffOffset o1 `compare` foffOffset o2) /= GT) fst
-                                                                                                                                                                                                                                                                                                                                                          max = ctagArity _tag - 1
-                                                                                                                                                                                                                                                                                                                                                          sat =
-                                                                                                                                                                                                                                                                                                                                                                listSaturateWith 0 max (foffOffset . fst) $
-                                                                                                                                                                                                                                                                                                                                                                  (map (\(n,o) -> (fldInt o, (FldKnownOffset n (fldInt o),RPat_Var (RPatNmOrig n) (acoreTyErr $ "EH.ToCore.PatExpr.DataFields: " ++ show n) False))) (refGen 0 1 $ take (max+1) hsnLclSupply))
-                                                                                                                                                                                                                                                                                                                                                      in  ( map (fsL2PatOffsetL _lhsIopts . sat) $ grp fsL
-                                                                                                                                                                                                                                                                                                                                                          , fsL2PatOffsetL _lhsIopts fsL
-                                                                                                                                                                                                                                                                                                                                                          , fsL2PatOffsetL _lhsIopts $ sat []
-                                                                                                                                                                                                                                                                                                                                                          )) of
-                                                                                                                                                                                                                                                                                                                                                { __tup192 | __tup192 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (__tup192) of
-                                                                                                                                                                                                                                                                                                                                                 { (_,_,_rpatBind0) | _rpatBind0 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (__tup192) of
-                                                                                                                                                                                                                                                                                                                                                  { (_rpatBindss,_,_) | _rpatBindss `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldPatExprIpatCRest) of
-                                                                                                                                                                                                                                                                                                                                                   { _rest | _rest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                                                                                                    { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                                                                                                     { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (RPat_Con _cpNm _acorety _tag
-                                                                                                                                                                                                                                                                                                                                                                (rpatConBindUnFlatten (RPatConBind_One _rest $ map fst _rpatBind0)
-                                                                                                                                                                                                                                                                                                                                                                 $ map (RPatConBind_One _rest . map fst)
-                                                                                                                                                                                                                                                                                                                                                                       _rpatBindss
-                                                                                                                                                                                                                                                                                                                                                                )) of
-                                                                                                                                                                                                                                                                                                                                                      { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case ((emptyRCEEnv _lhsIopts) { rceValGam = _lhsIvalGam, rceDataGam = _lhsIdataGam, rceTyVarMp = _lhsIfinTyVarMp }) of
-                                                                                                                                                                                                                                                                                                                                                        { _rceEnv | _rceEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_dataFieldPatExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                         { _valCBindLSub | _valCBindLSub `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (__tup192) of
-                                                                                                                                                                                                                                                                                                                                                          { (_,_rpatBindsNonSat,_) | _rpatBindsNonSat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (acoreRPatBindL2BindL _rceEnv (not $ null _valCBindLSub) _lhsIceParentNm _tag (Just (_rest,ctagArity _tag)) _rpatBindsNonSat) of
-                                                                                                                                                                                                                                                                                                                                                           { _valCBindL | _valCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_valCBindL ++ _valCBindLSub) of
-                                                                                                                                                                                                                                                                                                                                                            { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                       in  sem_PatExpr_DataFields_8)) of
-                                                                                                                                                                                                                                                                                { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                         in  sem_PatExpr_DataFields_7)) of
-                                                                                                                                                                                                                                  { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                  ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                  in  sem_PatExpr_DataFields_6)) of
-                                                                                                                                                                                           { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                           ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                                                                        in  sem_PatExpr_DataFields_5)) of
-                                                                                                                                                                 { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                 ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_DataFields_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_DataFields_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_DataFields_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_DataFields_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_Irrefutable :: Range ->
-                           T_PatExpr ->
-                           T_PatExpr
-
-sem_PatExpr_Irrefutable hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_Irrefutable_1 :: T_PatExpr_1
-                       sem_PatExpr_Irrefutable_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup194 | __tup194 `seq` (True) ->
-                                  (case (__tup194) of
-                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
-                                   (case (patExpr_1 _patExprOgUniq) of
-                                    { ( _patExprIgUniq,patExpr_2) | True ->
-                                        (case (_patExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_Irrefutable_2 :: T_PatExpr_2
-                                                     sem_PatExpr_Irrefutable_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                         (case (_patExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_Irrefutable_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_Irrefutable_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_Irrefutable_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_Irrefutable_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (_patExprItopNm) of
-                                                                                                                                                              { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                              (case (_topNm) of
-                                                                                                                                                               { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                               (case ((let sem_PatExpr_Irrefutable_5 :: T_PatExpr_5
-                                                                                                                                                                           sem_PatExpr_Irrefutable_5 =
-                                                                                                                                                                               (\ _lhsIvalGam ->
-                                                                                                                                                                                    _lhsIvalGam `seq`
-                                                                                                                                                                                    ((case (_lhsIvalGam) of
-                                                                                                                                                                                      { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                      (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                       { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                           (case (_patExprIarity) of
-                                                                                                                                                                                            { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                            (case (_patExprImbTopNm) of
-                                                                                                                                                                                             { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                             (case (_mbTopNm) of
-                                                                                                                                                                                              { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                              (case (_patExprIpatFunTy) of
-                                                                                                                                                                                               { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                               (case ((let sem_PatExpr_Irrefutable_6 :: T_PatExpr_6
-                                                                                                                                                                                                           sem_PatExpr_Irrefutable_6 =
-                                                                                                                                                                                                               (\ _lhsIfiOpts
-                                                                                                                                                                                                                  _lhsIinclVarBind
-                                                                                                                                                                                                                  _lhsIknTy
-                                                                                                                                                                                                                  _lhsIknTyL
-                                                                                                                                                                                                                  _lhsIpatTyVarMp
-                                                                                                                                                                                                                  _lhsItySigGam ->
-                                                                                                                                                                                                                    _lhsIfiOpts `seq`
-                                                                                                                                                                                                                    (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                     (_lhsIknTy `seq`
-                                                                                                                                                                                                                      (_lhsIknTyL `seq`
-                                                                                                                                                                                                                       (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                        (_lhsItySigGam `seq`
-                                                                                                                                                                                                                         ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                           { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                            { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsIknTyL) of
-                                                                                                                                                                                                                             { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIknTy) of
-                                                                                                                                                                                                                              { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                               { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                               (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                 { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                     (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                      { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                       { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                       (case ((let sem_PatExpr_Irrefutable_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                   sem_PatExpr_Irrefutable_7 =
-                                                                                                                                                                                                                                                       (\ _lhsIchrStore
-                                                                                                                                                                                                                                                          _lhsIclDfGam
-                                                                                                                                                                                                                                                          _lhsItvKiVarMp
-                                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                          _lhsItyVarMp
-                                                                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                            _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                            (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                             (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                               (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                 ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                                   { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_cpNm) of
-                                                                                                                                                                                                                                                                    { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                     { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                      { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                       { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                        { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                         { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                          { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                               (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                 { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                  { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_patExprIty) of
-                                                                                                                                                                                                                                                                                   { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_ty) of
-                                                                                                                                                                                                                                                                                    { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case ((let sem_PatExpr_Irrefutable_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                 sem_PatExpr_Irrefutable_8 =
-                                                                                                                                                                                                                                                                                                     (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                        _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                        _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                        _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                        _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                        _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                        _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                          _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                  (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                   ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                     { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                      { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                       { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                        { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                         { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                          { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                           { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                            { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                             { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                              { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                               { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                   (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                                                                                                                                                                                     { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case ("~" >|< _patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                         { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_patExprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case ([]) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (False) of
-                                                                                                                                                                                                                                                                                                                                              { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp `varUpd` _ty) of
-                                                                                                                                                                                                                                                                                                                                                 { _finalTy | _finalTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                                                                                            { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                                                                                            , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                                                                                            , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                                                                                            , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                                                                                            , feRange = _range
-                                                                                                                                                                                                                                                                                                                                                            }) of
-                                                                                                                                                                                                                                                                                                                                                  { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
-                                                                                                                                                                                                                                                                                                                                                   { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
-                                                                                                                                                                                                                                                                                                                                                    { _sysfty | _sysfty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
-                                                                                                                                                                                                                                                                                                                                                     { _acorety | _acorety `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (RPat_Irrefutable _cpNm _acorety _patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                      { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                             in  sem_PatExpr_Irrefutable_8)) of
-                                                                                                                                                                                                                                                                                      { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                      ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                               in  sem_PatExpr_Irrefutable_7)) of
-                                                                                                                                                                                                                                        { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                        ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                       in  sem_PatExpr_Irrefutable_6)) of
-                                                                                                                                                                                                { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                       in  sem_PatExpr_Irrefutable_5)) of
-                                                                                                                                                                { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_Irrefutable_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_Irrefutable_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_Irrefutable_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_Irrefutable_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_Bang :: Range ->
-                    T_PatExpr ->
-                    T_PatExpr
-
-sem_PatExpr_Bang hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_Bang_1 :: T_PatExpr_1
-                       sem_PatExpr_Bang_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                  { __tup195 | __tup195 `seq` (True) ->
-                                  (case (__tup195) of
-                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
-                                   (case (patExpr_1 _patExprOgUniq) of
-                                    { ( _patExprIgUniq,patExpr_2) | True ->
-                                        (case (_patExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_Bang_2 :: T_PatExpr_2
-                                                     sem_PatExpr_Bang_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                         (case (_patExprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_PatExpr_Bang_3 :: T_PatExpr_3
-                                                                                      sem_PatExpr_Bang_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                        (case ((let sem_PatExpr_Bang_4 :: T_PatExpr_4
-                                                                                                                                    sem_PatExpr_Bang_4 =
-                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                           _lhsIdataGam
-                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (_patExprItopNm) of
-                                                                                                                                                              { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                              (case (_topNm) of
-                                                                                                                                                               { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                               (case ((let sem_PatExpr_Bang_5 :: T_PatExpr_5
-                                                                                                                                                                           sem_PatExpr_Bang_5 =
-                                                                                                                                                                               (\ _lhsIvalGam ->
-                                                                                                                                                                                    _lhsIvalGam `seq`
-                                                                                                                                                                                    ((case (_lhsIvalGam) of
-                                                                                                                                                                                      { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                      (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                       { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                           (case (_patExprIarity) of
-                                                                                                                                                                                            { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                            (case (_patExprImbTopNm) of
-                                                                                                                                                                                             { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                             (case (_mbTopNm) of
-                                                                                                                                                                                              { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                              (case (_patExprIpatFunTy) of
-                                                                                                                                                                                               { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                               (case ((let sem_PatExpr_Bang_6 :: T_PatExpr_6
-                                                                                                                                                                                                           sem_PatExpr_Bang_6 =
-                                                                                                                                                                                                               (\ _lhsIfiOpts
-                                                                                                                                                                                                                  _lhsIinclVarBind
-                                                                                                                                                                                                                  _lhsIknTy
-                                                                                                                                                                                                                  _lhsIknTyL
-                                                                                                                                                                                                                  _lhsIpatTyVarMp
-                                                                                                                                                                                                                  _lhsItySigGam ->
-                                                                                                                                                                                                                    _lhsIfiOpts `seq`
-                                                                                                                                                                                                                    (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                     (_lhsIknTy `seq`
-                                                                                                                                                                                                                      (_lhsIknTyL `seq`
-                                                                                                                                                                                                                       (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                        (_lhsItySigGam `seq`
-                                                                                                                                                                                                                         ((case (_lhsItySigGam) of
-                                                                                                                                                                                                                           { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                            { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsIknTyL) of
-                                                                                                                                                                                                                             { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIknTy) of
-                                                                                                                                                                                                                              { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIinclVarBind) of
-                                                                                                                                                                                                                               { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                               (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                 { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                     (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                      { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                       { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                       (case ((let sem_PatExpr_Bang_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                                   sem_PatExpr_Bang_7 =
-                                                                                                                                                                                                                                                       (\ _lhsIchrStore
-                                                                                                                                                                                                                                                          _lhsIclDfGam
-                                                                                                                                                                                                                                                          _lhsItvKiVarMp
-                                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                          _lhsItyVarMp
-                                                                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                            _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                            (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                             (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                               (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                 ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                                   { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_cpNm) of
-                                                                                                                                                                                                                                                                    { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                     { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                      { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                       { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                        { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                         { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                          { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                               (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                                                { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                 { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                  { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_patExprIty) of
-                                                                                                                                                                                                                                                                                   { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_ty) of
-                                                                                                                                                                                                                                                                                    { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case ((let sem_PatExpr_Bang_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                 sem_PatExpr_Bang_8 =
-                                                                                                                                                                                                                                                                                                     (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                        _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                        _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                        _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                        _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                        _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                        _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                          _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                  (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                   ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                     { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                      { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                       { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                        { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                         { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                          { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                           { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                            { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                             { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                              { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                               { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                   (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                                                                                                                                                                                     { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case ("!" >|< _patExprIpp) of
-                                                                                                                                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                         { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_patExprIerrSq) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case ([]) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (True) of
-                                                                                                                                                                                                                                                                                                                                              { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (case _patExprIrpat of
-                                                                                                                                                                                                                                                                                                                                                         r@(RPat_Var _ _ _) -> r {rcpMustEval = True}
-                                                                                                                                                                                                                                                                                                                                                         r                  -> r) of
-                                                                                                                                                                                                                                                                                                                                                 { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                  { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                   { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                             in  sem_PatExpr_Bang_8)) of
-                                                                                                                                                                                                                                                                                      { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                      ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                               in  sem_PatExpr_Bang_7)) of
-                                                                                                                                                                                                                                        { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                                        ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                       in  sem_PatExpr_Bang_6)) of
-                                                                                                                                                                                                { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                       in  sem_PatExpr_Bang_5)) of
-                                                                                                                                                                { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                in  sem_PatExpr_Bang_4)) of
-                                                                                                                         { ( sem_PatExpr_4) | True ->
-                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                  in  sem_PatExpr_Bang_3)) of
-                                                                           { ( sem_PatExpr_3) | True ->
-                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
-                                                 in  sem_PatExpr_Bang_2)) of
-                                          { ( sem_PatExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
-                   in  sem_PatExpr_Bang_1)) of
-            { ( sem_PatExpr_1) | True ->
-            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
-
-sem_PatExpr_Expr :: Range ->
-                    T_Expr ->
-                    (Maybe SrcConst) ->
-                    T_PatExpr
-
-sem_PatExpr_Expr hsrange_ expr_ mbConst_ | hsrange_ `seq` (expr_ `seq` (mbConst_ `seq` (True))) =
-    (case (expr_) of
-     { ( _exprIrange,expr_1) | True ->
-         (case (rangeUnions [hsrange_, _exprIrange   , _exprIrange  ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_PatExpr_Expr_1 :: T_PatExpr_1
-                       sem_PatExpr_Expr_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_97_fitsIn_ty) -> case nextUnique __cont of { (__cont, lUniq_cexpr) -> (__cont,lUniq,lUniq_97_fitsIn_ty,lUniq_cexpr)}}} )) of
-                                  { __tup198 | __tup198 `seq` (True) ->
-                                  (case (__tup198) of
-                                   { (_exprOgUniq,_,_,_) | _exprOgUniq `seq` (True) ->
-                                   (case (expr_1 _exprOgUniq) of
-                                    { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
-                                        (case (_exprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_PatExpr_Expr_2 :: T_PatExpr_2
-                                                     sem_PatExpr_Expr_2 =
-                                                         (\ _lhsIkiGam
-                                                            _lhsIlexLev
-                                                            _lhsIpredSameScopeCounter ->
-                                                              _lhsIkiGam `seq`
-                                                              (_lhsIlexLev `seq`
-                                                               (_lhsIpredSameScopeCounter `seq`
-                                                                ((case (_lhsIpredSameScopeCounter) of
-                                                                  { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
-                                                                  (case (_lhsIlexLev) of
-                                                                   { _exprOlexLev | _exprOlexLev `seq` (True) ->
-                                                                   (case (_lhsIkiGam) of
-                                                                    { _exprOkiGam | _exprOkiGam `seq` (True) ->
-                                                                    (case (True) of
-                                                                     { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
-                                                                     (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
-                                                                      { ( _exprIpredSameScopeCounter,expr_3) | True ->
-                                                                          (case (_exprIpredSameScopeCounter) of
-                                                                           { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                           (case ((let sem_PatExpr_Expr_3 :: T_PatExpr_3
-                                                                                       sem_PatExpr_Expr_3 =
-                                                                                           (\ _lhsIkiVarMp
-                                                                                              _lhsIopts
-                                                                                              _lhsIpolGam
-                                                                                              _lhsIpolVarMp
-                                                                                              _lhsIpredScope
-                                                                                              _lhsItyGam
-                                                                                              _lhsItyKiGam
-                                                                                              _lhsItyKiGlobFreeTvarS ->
-                                                                                                _lhsIkiVarMp `seq`
-                                                                                                (_lhsIopts `seq`
-                                                                                                 (_lhsIpolGam `seq`
-                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                   (_lhsIpredScope `seq`
-                                                                                                    (_lhsItyGam `seq`
-                                                                                                     (_lhsItyKiGam `seq`
-                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                         { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                         (case (_lhsItyKiGam) of
-                                                                                                          { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                          (case (_lhsItyGam) of
-                                                                                                           { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                           (case (_lhsIpredScope) of
-                                                                                                            { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                            (case (_lhsIpolVarMp) of
-                                                                                                             { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                             (case (_lhsIpolGam) of
-                                                                                                              { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                              (case (_lhsIopts) of
-                                                                                                               { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                               (case (_lhsIkiVarMp) of
-                                                                                                                { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                                (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                 { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                     (case (_exprIkiVarMp) of
-                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                      (case (_exprIpolVarMp) of
-                                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                       (case (_lhsItyGam) of
-                                                                                                                        { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                                         { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                         (case ((let sem_PatExpr_Expr_4 :: T_PatExpr_4
-                                                                                                                                     sem_PatExpr_Expr_4 =
-                                                                                                                                         (\ _lhsIclGam
-                                                                                                                                            _lhsIdataGam
-                                                                                                                                            _lhsIfinKiVarMp
-                                                                                                                                            _lhsIfinTyKiGam
-                                                                                                                                            _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                              _lhsIclGam `seq`
-                                                                                                                                              (_lhsIdataGam `seq`
-                                                                                                                                               (_lhsIfinKiVarMp `seq`
-                                                                                                                                                (_lhsIfinTyKiGam `seq`
-                                                                                                                                                 (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                  ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                    { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                     { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                      { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                      (case (_lhsIdataGam) of
-                                                                                                                                                       { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                       (case (_lhsIclGam) of
-                                                                                                                                                        { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                        (case (emptyGam) of
-                                                                                                                                                         { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                         (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                          { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                              (case (expr_5 _exprOdataGam) of
-                                                                                                                                                               { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                   (case (_exprIchrInstDeclSq) of
-                                                                                                                                                                    { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                    (case (__tup198) of
-                                                                                                                                                                     { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                     (case (uidHNm _lUniq) of
-                                                                                                                                                                      { _topNm | _topNm `seq` (True) ->
-                                                                                                                                                                      (case (_topNm) of
-                                                                                                                                                                       { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
-                                                                                                                                                                       (case ((let sem_PatExpr_Expr_5 :: T_PatExpr_5
-                                                                                                                                                                                   sem_PatExpr_Expr_5 =
-                                                                                                                                                                                       (\ _lhsIvalGam ->
-                                                                                                                                                                                            _lhsIvalGam `seq`
-                                                                                                                                                                                            ((case (0) of
-                                                                                                                                                                                              { _lhsOarity | _lhsOarity `seq` (True) ->
-                                                                                                                                                                                              (case (Nothing) of
-                                                                                                                                                                                               { _mbTopNm | _mbTopNm `seq` (True) ->
-                                                                                                                                                                                               (case (_mbTopNm) of
-                                                                                                                                                                                                { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
-                                                                                                                                                                                                (case (Ty_Any) of
-                                                                                                                                                                                                 { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
-                                                                                                                                                                                                 (case ((let sem_PatExpr_Expr_6 :: T_PatExpr_6
-                                                                                                                                                                                                             sem_PatExpr_Expr_6 =
-                                                                                                                                                                                                                 (\ _lhsIfiOpts
-                                                                                                                                                                                                                    _lhsIinclVarBind
-                                                                                                                                                                                                                    _lhsIknTy
-                                                                                                                                                                                                                    _lhsIknTyL
-                                                                                                                                                                                                                    _lhsIpatTyVarMp
-                                                                                                                                                                                                                    _lhsItySigGam ->
-                                                                                                                                                                                                                      _lhsIfiOpts `seq`
-                                                                                                                                                                                                                      (_lhsIinclVarBind `seq`
-                                                                                                                                                                                                                       (_lhsIknTy `seq`
-                                                                                                                                                                                                                        (_lhsIknTyL `seq`
-                                                                                                                                                                                                                         (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                          (_lhsItySigGam `seq`
-                                                                                                                                                                                                                           ((case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                                                             { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIvalGam) of
-                                                                                                                                                                                                                              { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                              (case ((let sem_PatExpr_Expr_7 :: T_PatExpr_7
-                                                                                                                                                                                                                                          sem_PatExpr_Expr_7 =
-                                                                                                                                                                                                                                              (\ _lhsIchrStore
-                                                                                                                                                                                                                                                 _lhsIclDfGam
-                                                                                                                                                                                                                                                 _lhsItvKiVarMp
-                                                                                                                                                                                                                                                 _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                 _lhsItyVarMp
-                                                                                                                                                                                                                                                 _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                   _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                   (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                      (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                        ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
-                                                                                                                                                                                                                                                          { _cpNm | _cpNm `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (_cpNm) of
-                                                                                                                                                                                                                                                           { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                            { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                             { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                              { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                               { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                 { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                  { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (__tup198) of
-                                                                                                                                                                                                                                                                   { (_,_,_lUniq_97_fitsIn_ty,_) | _lUniq_97_fitsIn_ty `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (mkTyVar _lUniq) of
-                                                                                                                                                                                                                                                                    { _knExprTy | _knExprTy `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (ehcOptBuiltin _lhsIopts ehbnClassEqFldEq) of
-                                                                                                                                                                                                                                                                     { _eqFldNm | _eqFldNm `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (valGamLookupTy _eqFldNm _lhsIvalGam) of
-                                                                                                                                                                                                                                                                      { __tup197 | __tup197 `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (__tup197) of
-                                                                                                                                                                                                                                                                       { (_eqTy,_) | _eqTy `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                  { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                  , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                  , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                  , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                  , feRange = _range
-                                                                                                                                                                                                                                                                                  }) of
-                                                                                                                                                                                                                                                                        { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (fitsIn strongFIOpts _fe _lUniq_97_fitsIn_ty _lhsItyVarMp
-                                                                                                                                                                                                                                                                                   _eqTy
-                                                                                                                                                                                                                                                                                   ([_knExprTy,_lhsIknTy] `appArr` (appCon $ ehcOptBuiltin _lhsIopts ehbnDataBool))) of
-                                                                                                                                                                                                                                                                         { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
-                                                                                                                                                                                                                                                                          { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_knExprTy) of
-                                                                                                                                                                                                                                                                           { _exprOknTy | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (foGathCnstrMp _fo_) of
-                                                                                                                                                                                                                                                                            { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                                                                 (case (cnstrMpUnions [_hereCnstrMp, _exprIgathCnstrMp]) of
-                                                                                                                                                                                                                                                                                  { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_exprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                   { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (emptyGam) of
-                                                                                                                                                                                                                                                                                    { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_exprIty) of
-                                                                                                                                                                                                                                                                                     { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                                                                      { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case ((let sem_PatExpr_Expr_8 :: T_PatExpr_8
-                                                                                                                                                                                                                                                                                                  sem_PatExpr_Expr_8 =
-                                                                                                                                                                                                                                                                                                      (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                         _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                         _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                         _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                         _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                         _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                         _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                         _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                         _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                         _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                           _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                               (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                 (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                   (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                    ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                      { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                       { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                        { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                         { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                          { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                           { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                            { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                             { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                                                              { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                               { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                                                                   (case (_exprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                                                                                                                                                                                     { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case ("`" >|< _exprIpp >|< "`") of
-                                                                                                                                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (__tup198) of
-                                                                                                                                                                                                                                                                                                                                         { (_,_,_,_lUniq_cexpr) | _lUniq_cexpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (acoreVar _eqFldNm) of
-                                                                                                                                                                                                                                                                                                                                          { _cexprBaseEq | _cexprBaseEq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (let (e,s) = foAppLRCoeAsSubst _lhsIopts _lUniq_cexpr _fo_ _lhsIfinTyVarMp _exprIcSubst _cexprBaseEq
-                                                                                                                                                                                                                                                                                                                                                 in  (acoreApp e [_exprIcexpr], s)) of
-                                                                                                                                                                                                                                                                                                                                           { __tup196 | __tup196 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (__tup196) of
-                                                                                                                                                                                                                                                                                                                                            { (_,_cexprpatCSubst) | _cexprpatCSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (cSubstApp _exprIcSubst _cexprpatCSubst) of
-                                                                                                                                                                                                                                                                                                                                             { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (__tup197) of
-                                                                                                                                                                                                                                                                                                                                              { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (rngLift _range mkNestErr' _pp [ _exprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                   , Seq.fromList _nmErrs, foErrSq _fo_
-                                                                                                                                                                                                                                                                                                                                                                                   ]) of
-                                                                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val _eqFldNm
-                                                                                                                                                                                                                                                                                                                                                       `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                                                                                                                                       tyUsedNames _lhsImoduleNm _eqTy) of
-                                                                                                                                                                                                                                                                                                                                                 { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                   { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (False) of
-                                                                                                                                                                                                                                                                                                                                                    { _lhsOisBang | _lhsOisBang `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (CPatRest_Empty) of
-                                                                                                                                                                                                                                                                                                                                                     { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (__tup196) of
-                                                                                                                                                                                                                                                                                                                                                       { (_cexpr,_) | _cexpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (RPat_BoolExpr _cpNm (acoreTyErr "EH.ToCore.PatExpr.Expr") _cexpr mbConst_) of
-                                                                                                                                                                                                                                                                                                                                                        { _rpat | _rpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_rpat) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOrpat | _lhsOrpat `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                                                                                                                                                                                                          { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                              in  sem_PatExpr_Expr_8)) of
-                                                                                                                                                                                                                                                                                       { ( sem_PatExpr_8) | True ->
-                                                                                                                                                                                                                                                                                       ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                      in  sem_PatExpr_Expr_7)) of
-                                                                                                                                                                                                                               { ( sem_PatExpr_7) | True ->
-                                                                                                                                                                                                                               ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }))))))))
-                                                                                                                                                                                                         in  sem_PatExpr_Expr_6)) of
-                                                                                                                                                                                                  { ( sem_PatExpr_6) | True ->
-                                                                                                                                                                                                  ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
-                                                                                                                                                                               in  sem_PatExpr_Expr_5)) of
-                                                                                                                                                                        { ( sem_PatExpr_5) | True ->
-                                                                                                                                                                        ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                 in  sem_PatExpr_Expr_4)) of
-                                                                                                                          { ( sem_PatExpr_4) | True ->
-                                                                                                                          ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- PatExpr -----------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attribute:
+         gUniq                : UID
+   visit 2:
+      inherited attributes:
+         kiGam                : KiGam
+         lexLev               : Int
+      chained attribute:
+         predSameScopeCounter : Int
+   visit 3:
+      inherited attributes:
+         opts                 : EHCOpts
+         polGam               : PolGam
+         predScope            : PredScope
+         tyKiGlobFreeTvarS    : TyVarIdS
+      chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
+         kiVarMp              : VarMp
+         polVarMp             : VarMp
+         tyGam                : TyGam
+         tyKiGam              : TyKiGam
+   visit 4:
+      inherited attributes:
+         clGam                : ClGam
+         dataGam              : DataGam
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         tyTyTySigFreeTvarS   : TyVarIdS
+      synthesized attributes:
+         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
+         topNm                : HsName
+   visit 5:
+      inherited attribute:
+         valGam               : ValGam
+      synthesized attributes:
+         arity                : Int
+         mbTopNm              : Maybe HsName
+         patFunTy             : Ty
+   visit 6:
+      inherited attributes:
+         fiOpts               : FIOpts
+         inclVarBind          : Bool
+         knTy                 : Ty
+         knTyL                : TyL
+         tySigGam             : ValGam
+      chained attribute:
+         patTyVarMp           : VarMp
+      synthesized attribute:
+         valGam               : ValGam
+   visit 7:
+      inherited attributes:
+         chrStore             : ScopedPredStore
+         clDfGam              : ClassDefaultGam
+         tvKiVarMp            : VarMp
+         tyTyGlobFreeTvarS    : TyVarIdS
+         valTyGlobFreeTvarS   : TyVarIdS
+      chained attribute:
+         tyVarMp              : VarMp
+      synthesized attributes:
+         cpNm                 : RPatNm
+         gathCnstrMp          : CHRPredOccCnstrMp
+         gathRangeMp          : RangeMp
+         scopeGam             : ScopeGam
+         ty                   : Ty
+   visit 8:
+      inherited attributes:
+         ceParentNm           : HsName
+         chrEvidBindMp        : EvidKeyToCBindMap
+         chrScopeBindMp       : PredScopeToCBindMap
+         finTyVarMp           : VarMp
+         finValGam            : ValGam
+         moduleNm             : HsName
+         rangeMp              : RangeMp
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+         tySigVarMp           : VarMp
+      chained attribute:
+         cSubst               : CSubst
+      synthesized attributes:
+         allErrSq             : ErrSq
+         appArgPPL            : [PP_Doc]
+         appFunNm             : HsName
+         appFunPP             : PP_Doc
+         errSq                : ErrSq
+         fsRPatL              : FieldSplitL
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         gathTvKiVarMp        : VarMp
+         isBang               : Bool
+         patCRest             : CPatRest
+         pp                   : PP_Doc
+         rpat                 : RPat
+         trpp                 : TrPP
+         valCBindL            : CBindL
+   alternatives:
+      alternative IConst:
+         child hsrange        : {Range}
+         child int            : {Int}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup175     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup175     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup175     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup175     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            local finalTy     : _
+            local fe          : {FIEnv}
+            local finalTyExpanded : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            intra ty          : {Ty}
+            intra range       : {Range}
+            intra cpNm        : {RPatNm}
+      alternative CConst:
+         child hsrange        : {Range}
+         child char           : {Char}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup176     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup176     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup176     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup176     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            local finalTy     : _
+            local fe          : {FIEnv}
+            local finalTyExpanded : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            intra ty          : {Ty}
+            intra range       : {Range}
+            intra cpNm        : {RPatNm}
+      alternative Con:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup179     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup179     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup179     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup179     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            local lUniq2      : {UID}
+            local _tup178     : _
+            local tvarv2_     : {Ty}
+            local tvarv1_     : {Ty}
+            local knTyShape   : _
+            local _tup177     : _
+            local ty_g_       : {Ty}
+            local fe          : {FIEnv}
+            local fo_fitP_    : {FIOut}
+            local tyVarMp_p_  : {VarMp}
+            local patFunTy    : {Ty}
+            intra _tup179     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+            intra topNm       : {HsName}
+         visit 6:
+            local lUniq3      : {UID}
+            local fo_fitR_    : {FIOut}
+            intra _tup179     : _
+            intra tvarv1_     : {Ty}
+            intra tyVarMp_p_  : {VarMp}
+            intra fe          : {FIEnv}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra _tup177     : _
+            intra fo_fitP_    : {FIOut}
+            intra range       : {Range}
+            intra ty_g_       : {Ty}
+            intra patFunTy    : {Ty}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty_r_       : _
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra fo_fitR_    : {FIOut}
+            intra _tup177     : _
+            intra fo_fitP_    : {FIOut}
+            intra range       : {Range}
+            intra ty_g_       : {Ty}
+            intra tvarv1_     : {Ty}
+            intra fe          : {FIEnv}
+            intra patFunTy    : {Ty}
+         visit 8:
+            local appFunNm    : _
+            local pp          : _
+            local nmErrs      : {ErrL}
+            local fsRPatL     : _
+            local gathMentrelFilterMp : _
+            local knPatTy     : {Ty}
+            local finalTy     : _
+            local finalTyExpanded : _
+            local finKnPatTy  : _
+            local tyConNm     : _
+            local dgi         : {DataGamInfo}
+            local dti         : _
+            local tag         : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            local trpp        : _
+            intra _tup177     : _
+            intra fo_fitR_    : {FIOut}
+            intra fo_fitP_    : {FIOut}
+            intra range       : {Range}
+            intra ty_g_       : {Ty}
+            intra tvarv1_     : {Ty}
+            intra ty          : {Ty}
+            intra fe          : {FIEnv}
+            intra cpNm        : {RPatNm}
+            intra patFunTy    : {Ty}
+      alternative Var:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup183     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup183     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup183     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup183     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra _tup183     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+            intra topNm       : {HsName}
+         visit 6:
+            local lUniq_4_fo  : {UID}
+            local lUniq2      : {UID}
+            local _tup182     : _
+            local ty_kn_ensured : _
+            local ty_kn_      : {Ty}
+            local patTyVarMpKnTyEns : _
+            local patTyVarMpKnTy1 : _
+            local _tup180     : _
+            local ty_g_       : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            local _tup181     : _
+            local patTyVarMpKnEx : _
+            local ty          : {Ty}
+            local varTy       : _
+            local addToGam    : _
+            intra _tup183     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 7:
+            local cpNm        : {RPatNm}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra ty          : {Ty}
+            intra fe          : {FIEnv}
+         visit 8:
+            local pp          : _
+            local finalTy     : _
+            local finalTyExpanded : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            intra ty          : {Ty}
+            intra fe          : {FIEnv}
+            intra cpNm        : {RPatNm}
+      alternative VarAs:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup186     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup186     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup186     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup186     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra _tup186     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+            intra topNm       : {HsName}
+         visit 6:
+            local lUniq_4_fo  : {UID}
+            local lUniq2      : {UID}
+            local patTyVarMpKnTy1 : _
+            local ty_kn_      : {Ty}
+            local _tup184     : _
+            local ty_g_       : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            local _tup185     : _
+            local patTyVarMpKnEx : _
+            local ty          : {Ty}
+            local varTy       : _
+            local addToGam    : _
+            intra _tup186     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 7:
+            local cpNm        : {RPatNm}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+            local rpat        : _
+            intra cpNm        : {RPatNm}
+      alternative App:
+         child hsrange        : {Range}
+         child func           : PatExpr 
+         child arg            : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup189     : _
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+         visit 6:
+            local _tup188     : _
+            local knTyL       : {TyL}
+            local knArgTy     : {Ty}
+         visit 7:
+            local cpNm        : {RPatNm}
+         visit 8:
+            local _tup187     : _
+            local pp          : _
+      alternative AppTop:
+         child hsrange        : {Range}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup192     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup192     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup192     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup192     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            local patFunTy    : {Ty}
+            intra range       : {Range}
+            intra lUniq       : {UID}
+            intra topNm       : {HsName}
+         visit 6:
+            local _tup191     : _
+            local knProdTy    : _
+            local prodTyL     : _
+            local _tup190     : _
+            local knTyL       : {TyL}
+            local knPatTy     : {Ty}
+            local fe          : {FIEnv}
+            local fo_fitR_    : {FIOut}
+            intra patFunTy    : {Ty}
+            intra range       : {Range}
+            intra lUniq       : {UID}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra fo_fitR_    : {FIOut}
+            intra _tup190     : _
+            intra range       : {Range}
+            intra fe          : {FIEnv}
+            intra knPatTy     : {Ty}
+         visit 8:
+            local pp          : _
+            local arityErrs   : {ErrL}
+            local appFunNm    : _
+            local finalTy     : _
+            local finalTyExpanded : _
+            local finKnPatTy  : _
+            local fsRPatL     : _
+            local rpatBinds   : _
+            local rest        : _
+            local tyConNm     : _
+            local dgi         : {DataGamInfo}
+            local dti         : _
+            local tag         : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            local rceEnv      : _
+            local valCBindLSub : _
+            local valCBindL   : _
+            intra _tup190     : _
+            intra fo_fitR_    : {FIOut}
+            intra range       : {Range}
+            intra ty          : {Ty}
+            intra fe          : {FIEnv}
+            intra knPatTy     : {Ty}
+            intra cpNm        : {RPatNm}
+      alternative Parens:
+         child hsrange        : {Range}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup193     : _
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+         visit 8:
+            local pp          : _
+      alternative Ann:
+         child hsrange        : {Range}
+         child ann            : PatExprAnn 
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup194     : _
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+         visit 8:
+            local pp          : _
+      alternative TypeAs:
+         child hsrange        : {Range}
+         child tyExpr         : TyExpr 
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup195     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup195     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup195     : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup195     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra _tup195     : _
+            intra range       : {Range}
+         visit 6:
+            local lUniq_4_fo  : {UID}
+            local ty_q_       : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup195     : _
+            intra range       : {Range}
+         visit 7:
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+      alternative SConst:
+         child hsrange        : {Range}
+         child str            : {String}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup196     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup196     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup196     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup196     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra range       : {Range}
+            intra lUniq       : {UID}
+            intra topNm       : {HsName}
+         visit 6:
+            local constTy     : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra range       : {Range}
+            intra lUniq       : {UID}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra constTy     : {Ty}
+            intra fe          : {FIEnv}
+         visit 8:
+            local pp          : _
+            local finalTy     : _
+            local finalTyExpanded : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            intra ty          : {Ty}
+            intra fe          : {FIEnv}
+            intra cpNm        : {RPatNm}
+      alternative Rec:
+         child hsrange        : {Range}
+         child recPatExpr     : RecPatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup197     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup197     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup197     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup197     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 8:
+            local appFunNm    : _
+            local pp          : _
+            local fsRPatL     : _
+            local finalTy     : _
+            local fe          : {FIEnv}
+            local finalTyExpanded : _
+            local rpatBinds   : _
+            local rest        : _
+            local tag         : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            local rceEnv      : _
+            local valCBindLSub : _
+            local valCBindL   : _
+            intra range       : {Range}
+            intra ty          : {Ty}
+            intra cpNm        : {RPatNm}
+      alternative DataFields:
+         child hsrange        : {Range}
+         child dataFieldPatExpr : DataFieldPatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup199     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup199     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup199     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup199     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            local finalTy     : _
+            local fe          : {FIEnv}
+            local finalTyExpanded : _
+            local fsRPatL     : _
+            local tag         : _
+            local _tup198     : _
+            local rpatBind0   : _
+            local rpatBindss  : _
+            local rest        : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            local rceEnv      : _
+            local valCBindLSub : _
+            local rpatBindsNonSat : _
+            local valCBindL   : _
+            intra ty          : {Ty}
+            intra range       : {Range}
+            intra cpNm        : {RPatNm}
+      alternative Irrefutable:
+         child hsrange        : {Range}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup200     : _
+            intra range       : {Range}
+         visit 2:
+            intra range       : {Range}
+         visit 3:
+            intra range       : {Range}
+         visit 4:
+            local topNm       : {HsName}
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            local finalTy     : _
+            local fe          : {FIEnv}
+            local finalTyExpanded : _
+            local sysfty      : _
+            local acorety     : _
+            local rpat        : _
+            intra ty          : {Ty}
+            intra range       : {Range}
+            intra cpNm        : {RPatNm}
+      alternative Bang:
+         child hsrange        : {Range}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup201     : _
+         visit 4:
+            local topNm       : {HsName}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local ty          : {Ty}
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+         visit 8:
+            local pp          : _
+            local rpat        : _
+      alternative Expr:
+         child hsrange        : {Range}
+         child expr           : Expr 
+         child mbConst        : {Maybe SrcConst}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup204     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup204     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup204     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq       : {UID}
+            local topNm       : {HsName}
+            intra _tup204     : _
+            intra range       : {Range}
+         visit 5:
+            local mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra _tup204     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+         visit 6:
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra _tup204     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+         visit 7:
+            local cpNm        : {RPatNm}
+            local lUniq_97_fitsIn_ty : {UID}
+            local knExprTy    : {Ty}
+            local eqFldNm     : {HsName}
+            local _tup203     : _
+            local eqTy        : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            local hereCnstrMp : _
+            intra mbTopNm     : {Maybe HsName}
+            intra topNm       : {HsName}
+            intra _tup204     : _
+            intra lUniq       : {UID}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            local lUniq_cexpr : {UID}
+            local cexprBaseEq : _
+            local _tup202     : _
+            local cexprpatCSubst : _
+            local nmErrs      : {ErrL}
+            local gathMentrelFilterMp : _
+            local cexpr       : _
+            local rpat        : _
+            intra _tup204     : _
+            intra eqFldNm     : {HsName}
+            intra fo_         : {FIOut}
+            intra _tup203     : _
+            intra range       : {Range}
+            intra eqTy        : {Ty}
+            intra cpNm        : {RPatNm}
+-}
+sem_PatExpr_IConst :: Range ->
+                      Int ->
+                      T_PatExpr
+
+sem_PatExpr_IConst hsrange_ int_ | hsrange_ `seq` (int_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_PatExpr_IConst_1 :: T_PatExpr_1
+                  sem_PatExpr_IConst_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup175 | __tup175 `seq` (True) ->
+                             (case (__tup175) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_PatExpr_IConst_2 :: T_PatExpr_2
+                                          sem_PatExpr_IConst_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_PatExpr_IConst_3 :: T_PatExpr_3
+                                                                   sem_PatExpr_IConst_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_PatExpr_IConst_4 :: T_PatExpr_4
+                                                                                                      sem_PatExpr_IConst_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                   ((case (Seq.empty) of
+                                                                                                                     { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                     (case (__tup175) of
+                                                                                                                      { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                      (case (uidHNm _lUniq) of
+                                                                                                                       { _topNm | _topNm `seq` (True) ->
+                                                                                                                       (case (_topNm) of
+                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                        (case ((let sem_PatExpr_IConst_5 :: T_PatExpr_5
+                                                                                                                                    sem_PatExpr_IConst_5 =
+                                                                                                                                        (\ _lhsIvalGam ->
+                                                                                                                                             _lhsIvalGam `seq`
+                                                                                                                                             ((case (0) of
+                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                               (case (Nothing) of
+                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                 (case (Ty_Any) of
+                                                                                                                                                  { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                  (case ((let sem_PatExpr_IConst_6 :: T_PatExpr_6
+                                                                                                                                                              sem_PatExpr_IConst_6 =
+                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                     _lhsIinclVarBind
+                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                     _lhsIknTyL
+                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                     _lhsItySigGam ->
+                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                       (_lhsIinclVarBind `seq`
+                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                         (_lhsIknTyL `seq`
+                                                                                                                                                                          (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                           (_lhsItySigGam `seq`
+                                                                                                                                                                            ((case (_lhsIpatTyVarMp) of
+                                                                                                                                                                              { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                              (case (_lhsIvalGam) of
+                                                                                                                                                                               { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                               (case ((let sem_PatExpr_IConst_7 :: T_PatExpr_7
+                                                                                                                                                                                           sem_PatExpr_IConst_7 =
+                                                                                                                                                                                               (\ _lhsIchrStore
+                                                                                                                                                                                                  _lhsIclDfGam
+                                                                                                                                                                                                  _lhsItvKiVarMp
+                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                  _lhsItyVarMp
+                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                    _lhsIchrStore `seq`
+                                                                                                                                                                                                    (_lhsIclDfGam `seq`
+                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                       (_lhsItyVarMp `seq`
+                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                         ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                           { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                           (case (_cpNm) of
+                                                                                                                                                                                                            { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                            (case (Map.empty) of
+                                                                                                                                                                                                             { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                             (case (Map.empty) of
+                                                                                                                                                                                                              { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                              (case (emptyGam) of
+                                                                                                                                                                                                               { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                               (case (tyInt) of
+                                                                                                                                                                                                                { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                (case (_ty) of
+                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                  (case ((let sem_PatExpr_IConst_8 :: T_PatExpr_8
+                                                                                                                                                                                                                              sem_PatExpr_IConst_8 =
+                                                                                                                                                                                                                                  (\ _lhsIcSubst
+                                                                                                                                                                                                                                     _lhsIceParentNm
+                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                     _lhsIfinTyVarMp
+                                                                                                                                                                                                                                     _lhsIfinValGam
+                                                                                                                                                                                                                                     _lhsImoduleNm
+                                                                                                                                                                                                                                     _lhsIrangeMp
+                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                     _lhsItr
+                                                                                                                                                                                                                                     _lhsItySigVarMp ->
+                                                                                                                                                                                                                                       _lhsIcSubst `seq`
+                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                               (_lhsItr `seq`
+                                                                                                                                                                                                                                                (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                 ((case (Seq.empty) of
+                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                                    { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (hsnUnknown) of
+                                                                                                                                                                                                                                                     { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (pp (show int_)) of
+                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (_pp) of
+                                                                                                                                                                                                                                                       { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (Seq.empty) of
+                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                          { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (Map.empty) of
+                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (emptyVarMp) of
+                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (False) of
+                                                                                                                                                                                                                                                             { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                              { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (defaultFIEnv
+                                                                                                                                                                                                                                                                           { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                           , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                           , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                           , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                           , feRange = _range
+                                                                                                                                                                                                                                                                           }) of
+                                                                                                                                                                                                                                                                 { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                  { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                   { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                    { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (RPat_Int _cpNm _acorety (toInteger int_)) of
+                                                                                                                                                                                                                                                                     { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_rpat) of
+                                                                                                                                                                                                                                                                      { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (trppEmpty) of
+                                                                                                                                                                                                                                                                       { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case ([]) of
+                                                                                                                                                                                                                                                                        { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                          in  sem_PatExpr_IConst_8)) of
+                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                       in  sem_PatExpr_IConst_7)) of
+                                                                                                                                                                                { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }))))))))
+                                                                                                                                                          in  sem_PatExpr_IConst_6)) of
+                                                                                                                                                   { ( sem_PatExpr_6) | True ->
+                                                                                                                                                   ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                in  sem_PatExpr_IConst_5)) of
+                                                                                                                         { ( sem_PatExpr_5) | True ->
+                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
+                                                                                                  in  sem_PatExpr_IConst_4)) of
+                                                                                           { ( sem_PatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) })))))))))))
+                                                               in  sem_PatExpr_IConst_3)) of
+                                                        { ( sem_PatExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
+                                      in  sem_PatExpr_IConst_2)) of
+                               { ( sem_PatExpr_2) | True ->
+                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
+              in  sem_PatExpr_IConst_1)) of
+       { ( sem_PatExpr_1) | True ->
+       ( _lhsOrange,sem_PatExpr_1) }) }) })
+
+sem_PatExpr_CConst :: Range ->
+                      Char ->
+                      T_PatExpr
+
+sem_PatExpr_CConst hsrange_ char_ | hsrange_ `seq` (char_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_PatExpr_CConst_1 :: T_PatExpr_1
+                  sem_PatExpr_CConst_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup176 | __tup176 `seq` (True) ->
+                             (case (__tup176) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_PatExpr_CConst_2 :: T_PatExpr_2
+                                          sem_PatExpr_CConst_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_PatExpr_CConst_3 :: T_PatExpr_3
+                                                                   sem_PatExpr_CConst_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_PatExpr_CConst_4 :: T_PatExpr_4
+                                                                                                      sem_PatExpr_CConst_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                   ((case (Seq.empty) of
+                                                                                                                     { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                     (case (__tup176) of
+                                                                                                                      { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                      (case (uidHNm _lUniq) of
+                                                                                                                       { _topNm | _topNm `seq` (True) ->
+                                                                                                                       (case (_topNm) of
+                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                        (case ((let sem_PatExpr_CConst_5 :: T_PatExpr_5
+                                                                                                                                    sem_PatExpr_CConst_5 =
+                                                                                                                                        (\ _lhsIvalGam ->
+                                                                                                                                             _lhsIvalGam `seq`
+                                                                                                                                             ((case (0) of
+                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                               (case (Nothing) of
+                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                 (case (Ty_Any) of
+                                                                                                                                                  { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                  (case ((let sem_PatExpr_CConst_6 :: T_PatExpr_6
+                                                                                                                                                              sem_PatExpr_CConst_6 =
+                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                     _lhsIinclVarBind
+                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                     _lhsIknTyL
+                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                     _lhsItySigGam ->
+                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                       (_lhsIinclVarBind `seq`
+                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                         (_lhsIknTyL `seq`
+                                                                                                                                                                          (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                           (_lhsItySigGam `seq`
+                                                                                                                                                                            ((case (_lhsIpatTyVarMp) of
+                                                                                                                                                                              { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                              (case (_lhsIvalGam) of
+                                                                                                                                                                               { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                               (case ((let sem_PatExpr_CConst_7 :: T_PatExpr_7
+                                                                                                                                                                                           sem_PatExpr_CConst_7 =
+                                                                                                                                                                                               (\ _lhsIchrStore
+                                                                                                                                                                                                  _lhsIclDfGam
+                                                                                                                                                                                                  _lhsItvKiVarMp
+                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                  _lhsItyVarMp
+                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                    _lhsIchrStore `seq`
+                                                                                                                                                                                                    (_lhsIclDfGam `seq`
+                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                       (_lhsItyVarMp `seq`
+                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                         ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                           { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                           (case (_cpNm) of
+                                                                                                                                                                                                            { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                            (case (Map.empty) of
+                                                                                                                                                                                                             { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                             (case (Map.empty) of
+                                                                                                                                                                                                              { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                              (case (emptyGam) of
+                                                                                                                                                                                                               { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                               (case (tyChar) of
+                                                                                                                                                                                                                { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                (case (_ty) of
+                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                  (case ((let sem_PatExpr_CConst_8 :: T_PatExpr_8
+                                                                                                                                                                                                                              sem_PatExpr_CConst_8 =
+                                                                                                                                                                                                                                  (\ _lhsIcSubst
+                                                                                                                                                                                                                                     _lhsIceParentNm
+                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                     _lhsIfinTyVarMp
+                                                                                                                                                                                                                                     _lhsIfinValGam
+                                                                                                                                                                                                                                     _lhsImoduleNm
+                                                                                                                                                                                                                                     _lhsIrangeMp
+                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                     _lhsItr
+                                                                                                                                                                                                                                     _lhsItySigVarMp ->
+                                                                                                                                                                                                                                       _lhsIcSubst `seq`
+                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                               (_lhsItr `seq`
+                                                                                                                                                                                                                                                (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                 ((case (Seq.empty) of
+                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                                    { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (hsnUnknown) of
+                                                                                                                                                                                                                                                     { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (pp (show char_)) of
+                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (_pp) of
+                                                                                                                                                                                                                                                       { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (Seq.empty) of
+                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                          { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (Map.empty) of
+                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (emptyVarMp) of
+                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (False) of
+                                                                                                                                                                                                                                                             { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                              { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (defaultFIEnv
+                                                                                                                                                                                                                                                                           { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                           , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                           , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                           , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                           , feRange = _range
+                                                                                                                                                                                                                                                                           }) of
+                                                                                                                                                                                                                                                                 { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                  { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                   { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                    { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (RPat_Char _cpNm _acorety char_) of
+                                                                                                                                                                                                                                                                     { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_rpat) of
+                                                                                                                                                                                                                                                                      { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (trppEmpty) of
+                                                                                                                                                                                                                                                                       { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case ([]) of
+                                                                                                                                                                                                                                                                        { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                          in  sem_PatExpr_CConst_8)) of
+                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                       in  sem_PatExpr_CConst_7)) of
+                                                                                                                                                                                { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }))))))))
+                                                                                                                                                          in  sem_PatExpr_CConst_6)) of
+                                                                                                                                                   { ( sem_PatExpr_6) | True ->
+                                                                                                                                                   ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                in  sem_PatExpr_CConst_5)) of
+                                                                                                                         { ( sem_PatExpr_5) | True ->
+                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
+                                                                                                  in  sem_PatExpr_CConst_4)) of
+                                                                                           { ( sem_PatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) })))))))))))
+                                                               in  sem_PatExpr_CConst_3)) of
+                                                        { ( sem_PatExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
+                                      in  sem_PatExpr_CConst_2)) of
+                               { ( sem_PatExpr_2) | True ->
+                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
+              in  sem_PatExpr_CConst_1)) of
+       { ( sem_PatExpr_1) | True ->
+       ( _lhsOrange,sem_PatExpr_1) }) }) })
+
+sem_PatExpr_Con :: Range ->
+                   HsName ->
+                   T_PatExpr
+
+sem_PatExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_PatExpr_Con_1 :: T_PatExpr_1
+                  sem_PatExpr_Con_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
+                             { __tup179 | __tup179 `seq` (True) ->
+                             (case (__tup179) of
+                              { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_PatExpr_Con_2 :: T_PatExpr_2
+                                          sem_PatExpr_Con_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_PatExpr_Con_3 :: T_PatExpr_3
+                                                                   sem_PatExpr_Con_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_PatExpr_Con_4 :: T_PatExpr_4
+                                                                                                      sem_PatExpr_Con_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                   ((case (Seq.empty) of
+                                                                                                                     { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                     (case (__tup179) of
+                                                                                                                      { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                      (case (uidHNm _lUniq) of
+                                                                                                                       { _topNm | _topNm `seq` (True) ->
+                                                                                                                       (case (_topNm) of
+                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                        (case ((let sem_PatExpr_Con_5 :: T_PatExpr_5
+                                                                                                                                    sem_PatExpr_Con_5 =
+                                                                                                                                        (\ _lhsIvalGam ->
+                                                                                                                                             _lhsIvalGam `seq`
+                                                                                                                                             ((case (0) of
+                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                               (case (Nothing) of
+                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                 (case (__tup179) of
+                                                                                                                                                  { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                  (case (let  [a,r] = mkNewTyVarL 2 _lUniq in (a,r)) of
+                                                                                                                                                   { __tup178 | __tup178 `seq` (True) ->
+                                                                                                                                                   (case (__tup178) of
+                                                                                                                                                    { (_,_tvarv2_) | _tvarv2_ `seq` (True) ->
+                                                                                                                                                    (case (__tup178) of
+                                                                                                                                                     { (_tvarv1_,_) | _tvarv1_ `seq` (True) ->
+                                                                                                                                                     (case ([_tvarv1_    ] `appArr` _tvarv2_) of
+                                                                                                                                                      { _knTyShape | _knTyShape `seq` (True) ->
+                                                                                                                                                      (case (valGamLookupTy (hsnUn nm_) _lhsIvalGam) of
+                                                                                                                                                       { __tup177 | __tup177 `seq` (True) ->
+                                                                                                                                                       (case (__tup177) of
+                                                                                                                                                        { (_ty_g_,_) | _ty_g_ `seq` (True) ->
+                                                                                                                                                        (case (defaultFIEnv
+                                                                                                                                                                   { feEHCOpts = _lhsIopts
+                                                                                                                                                                   , fePredScope = _lhsIpredScope
+                                                                                                                                                                   , feTyGam = _lhsItyGam
+                                                                                                                                                                   , fePolGam = _lhsIpolGam
+                                                                                                                                                                   , feRange = _range
+                                                                                                                                                                   }) of
+                                                                                                                                                         { _fe | _fe `seq` (True) ->
+                                                                                                                                                         (case (fitsIn instFIOpts _fe _lUniq2 (emptyVarMp :: VarMp)                       _ty_g_ _knTyShape) of
+                                                                                                                                                          { _fo_fitP_ | _fo_fitP_ `seq` (True) ->
+                                                                                                                                                          (case (foVarMp _fo_fitP_) of
+                                                                                                                                                           { _tyVarMp_p_ | _tyVarMp_p_ `seq` (True) ->
+                                                                                                                                                           (case (_tyVarMp_p_ `varUpd` foTy _fo_fitP_) of
+                                                                                                                                                            { _patFunTy | _patFunTy `seq` (True) ->
+                                                                                                                                                            (case (_patFunTy) of
+                                                                                                                                                             { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                             (case ((let sem_PatExpr_Con_6 :: T_PatExpr_6
+                                                                                                                                                                         sem_PatExpr_Con_6 =
+                                                                                                                                                                             (\ _lhsIfiOpts
+                                                                                                                                                                                _lhsIinclVarBind
+                                                                                                                                                                                _lhsIknTy
+                                                                                                                                                                                _lhsIknTyL
+                                                                                                                                                                                _lhsIpatTyVarMp
+                                                                                                                                                                                _lhsItySigGam ->
+                                                                                                                                                                                  _lhsIfiOpts `seq`
+                                                                                                                                                                                  (_lhsIinclVarBind `seq`
+                                                                                                                                                                                   (_lhsIknTy `seq`
+                                                                                                                                                                                    (_lhsIknTyL `seq`
+                                                                                                                                                                                     (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                      (_lhsItySigGam `seq`
+                                                                                                                                                                                       ((case (__tup179) of
+                                                                                                                                                                                         { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
+                                                                                                                                                                                         (case (fitsIn _lhsIfiOpts _fe _lUniq3 (_tyVarMp_p_ `varUpd` _lhsIpatTyVarMp) _lhsIknTy _tvarv1_) of
+                                                                                                                                                                                          { _fo_fitR_ | _fo_fitR_ `seq` (True) ->
+                                                                                                                                                                                          (case (foVarMp _fo_fitR_ `varUpd` _tyVarMp_p_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                           { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                           (case (_lhsIvalGam) of
+                                                                                                                                                                                            { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                            (case ((let sem_PatExpr_Con_7 :: T_PatExpr_7
+                                                                                                                                                                                                        sem_PatExpr_Con_7 =
+                                                                                                                                                                                                            (\ _lhsIchrStore
+                                                                                                                                                                                                               _lhsIclDfGam
+                                                                                                                                                                                                               _lhsItvKiVarMp
+                                                                                                                                                                                                               _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                               _lhsItyVarMp
+                                                                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                 _lhsIchrStore `seq`
+                                                                                                                                                                                                                 (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                  (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                    (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                      ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                        { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                        (case (_cpNm) of
+                                                                                                                                                                                                                         { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                         (case (Map.empty) of
+                                                                                                                                                                                                                          { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                          (case (Map.empty) of
+                                                                                                                                                                                                                           { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                           (case (emptyGam) of
+                                                                                                                                                                                                                            { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                            (case (foTy _fo_fitR_) of
+                                                                                                                                                                                                                             { _ty_r_ | _ty_r_ `seq` (True) ->
+                                                                                                                                                                                                                             (case (_ty_r_) of
+                                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                              (case (_ty) of
+                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                (case ((let sem_PatExpr_Con_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                            sem_PatExpr_Con_8 =
+                                                                                                                                                                                                                                                (\ _lhsIcSubst
+                                                                                                                                                                                                                                                   _lhsIceParentNm
+                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                   _lhsIfinValGam
+                                                                                                                                                                                                                                                   _lhsImoduleNm
+                                                                                                                                                                                                                                                   _lhsIrangeMp
+                                                                                                                                                                                                                                                   _lhsIsysfEnv
+                                                                                                                                                                                                                                                   _lhsItr
+                                                                                                                                                                                                                                                   _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                     (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                             (_lhsItr `seq`
+                                                                                                                                                                                                                                                              (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                               ((case (Seq.empty) of
+                                                                                                                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case ([]) of
+                                                                                                                                                                                                                                                                  { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (nm_) of
+                                                                                                                                                                                                                                                                   { _appFunNm | _appFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_appFunNm) of
+                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (ppCon nm_) of
+                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                      { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                       { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (__tup177) of
+                                                                                                                                                                                                                                                                        { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (rngLift _range mkNestErr' _pp [Seq.fromList _nmErrs, foErrSq _fo_fitP_, foErrSq _fo_fitR_]) of
+                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                                          { _fsRPatL | _fsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_fsRPatL) of
+                                                                                                                                                                                                                                                                           { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val nm_
+                                                                                                                                                                                                                                                                                  `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                                                                  tyUsedNames _lhsImoduleNm _ty_g_) of
+                                                                                                                                                                                                                                                                            { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (emptyVarMp) of
+                                                                                                                                                                                                                                                                              { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (False) of
+                                                                                                                                                                                                                                                                               { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_pp) of
+                                                                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_tvarv1_) of
+                                                                                                                                                                                                                                                                                  { _knPatTy | _knPatTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                                   { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                                    { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyVarMp `varUpd` _knPatTy) of
+                                                                                                                                                                                                                                                                                     { _finKnPatTy | _finKnPatTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (tyConNm $ fst $ appUnApp _finKnPatTy) of
+                                                                                                                                                                                                                                                                                      { _tyConNm | _tyConNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (ehcOptFromJust _lhsIopts ("PatExpr.{AppTop,Con}.dgi: " ++ show _tyConNm ++ (showPP $ ppParens _finKnPatTy)) emptyDataGamInfo
+                                                                                                                                                                                                                                                                                                 $ dataGamLookup _tyConNm $ _lhsIdataGam) of
+                                                                                                                                                                                                                                                                                       { _dgi | _dgi `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (ehcOptFromJust _lhsIopts ("PatExpr.{AppTop,Con}.dti: " ++ show _tyConNm ++ "." ++ show _appFunNm) emptyDataTagInfo
+                                                                                                                                                                                                                                                                                                  $ Map.lookup _appFunNm $ dgiConstrTagMp _dgi) of
+                                                                                                                                                                                                                                                                                        { _dti | _dti `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (dtiCTag _dti) of
+                                                                                                                                                                                                                                                                                         { _tag | _tag `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                          { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                           { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (RPat_Con _cpNm _acorety _tag (RPatConBind_One CPatRest_Empty [])) of
+                                                                                                                                                                                                                                                                                            { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_rpat) of
+                                                                                                                                                                                                                                                                                             { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case ((_lhsItr TraceOn_EhValGam $ ["PatExpr.Con" >#< hsnUn nm_] ++ [ "ty_g_=" >#< ppTy _ty_g_, "@lhs.patTyVarMp |=> ty_g_=" >#< ppTy (_lhsIpatTyVarMp `varUpd` _ty_g_), "patFunTy=" >#< ppTy _patFunTy ])) of
+                                                                                                                                                                                                                                                                                              { _trpp | _trpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_trpp) of
+                                                                                                                                                                                                                                                                                               { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                                                                                { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                        in  sem_PatExpr_Con_8)) of
+                                                                                                                                                                                                                                 { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                 ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                    in  sem_PatExpr_Con_7)) of
+                                                                                                                                                                                             { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                             ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }))))))))
+                                                                                                                                                                     in  sem_PatExpr_Con_6)) of
+                                                                                                                                                              { ( sem_PatExpr_6) | True ->
+                                                                                                                                                              ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
+                                                                                                                                in  sem_PatExpr_Con_5)) of
+                                                                                                                         { ( sem_PatExpr_5) | True ->
+                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
+                                                                                                  in  sem_PatExpr_Con_4)) of
+                                                                                           { ( sem_PatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) })))))))))))
+                                                               in  sem_PatExpr_Con_3)) of
+                                                        { ( sem_PatExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
+                                      in  sem_PatExpr_Con_2)) of
+                               { ( sem_PatExpr_2) | True ->
+                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
+              in  sem_PatExpr_Con_1)) of
+       { ( sem_PatExpr_1) | True ->
+       ( _lhsOrange,sem_PatExpr_1) }) }) })
+
+sem_PatExpr_Var :: Range ->
+                   HsName ->
+                   T_PatExpr
+
+sem_PatExpr_Var hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_PatExpr_Var_1 :: T_PatExpr_1
+                  sem_PatExpr_Var_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_4_fo) -> (__cont,lUniq,lUniq2,lUniq_4_fo)}}} )) of
+                             { __tup183 | __tup183 `seq` (True) ->
+                             (case (__tup183) of
+                              { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_PatExpr_Var_2 :: T_PatExpr_2
+                                          sem_PatExpr_Var_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_PatExpr_Var_3 :: T_PatExpr_3
+                                                                   sem_PatExpr_Var_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_PatExpr_Var_4 :: T_PatExpr_4
+                                                                                                      sem_PatExpr_Var_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                   ((case (Seq.empty) of
+                                                                                                                     { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                     (case (__tup183) of
+                                                                                                                      { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                      (case (if hsnIsWild nm_ then uidHNm _lUniq else nm_) of
+                                                                                                                       { _topNm | _topNm `seq` (True) ->
+                                                                                                                       (case (_topNm) of
+                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                        (case ((let sem_PatExpr_Var_5 :: T_PatExpr_5
+                                                                                                                                    sem_PatExpr_Var_5 =
+                                                                                                                                        (\ _lhsIvalGam ->
+                                                                                                                                             _lhsIvalGam `seq`
+                                                                                                                                             ((case (0) of
+                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                               (case (if hsnIsWild nm_ then Nothing else Just nm_) of
+                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                 (case (Ty_Any) of
+                                                                                                                                                  { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                  (case ((let sem_PatExpr_Var_6 :: T_PatExpr_6
+                                                                                                                                                              sem_PatExpr_Var_6 =
+                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                     _lhsIinclVarBind
+                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                     _lhsIknTyL
+                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                     _lhsItySigGam ->
+                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                       (_lhsIinclVarBind `seq`
+                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                         (_lhsIknTyL `seq`
+                                                                                                                                                                          (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                           (_lhsItySigGam `seq`
+                                                                                                                                                                            ((case (__tup183) of
+                                                                                                                                                                              { (_,_,_,_lUniq_4_fo) | _lUniq_4_fo `seq` (True) ->
+                                                                                                                                                                              (case (__tup183) of
+                                                                                                                                                                               { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                               (case (tyAsVarMp' tyEnsureNonAnyImpl _lUniq _lhsIknTy) of
+                                                                                                                                                                                { __tup182 | __tup182 `seq` (True) ->
+                                                                                                                                                                                (case (__tup182) of
+                                                                                                                                                                                 { (_ty_kn_ensured,_) | _ty_kn_ensured `seq` (True) ->
+                                                                                                                                                                                 (case (_ty_kn_ensured) of
+                                                                                                                                                                                  { _ty_kn_ | _ty_kn_ `seq` (True) ->
+                                                                                                                                                                                  (case (__tup182) of
+                                                                                                                                                                                   { (_,_patTyVarMpKnTyEns) | _patTyVarMpKnTyEns `seq` (True) ->
+                                                                                                                                                                                   (case (_patTyVarMpKnTyEns `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                    { _patTyVarMpKnTy1 | _patTyVarMpKnTy1 `seq` (True) ->
+                                                                                                                                                                                    (case (valGamLookupTy nm_ _lhsItySigGam) of
+                                                                                                                                                                                     { __tup180 | __tup180 `seq` (True) ->
+                                                                                                                                                                                     (case (__tup180) of
+                                                                                                                                                                                      { (_ty_g_,_) | _ty_g_ `seq` (True) ->
+                                                                                                                                                                                      (case (defaultFIEnv
+                                                                                                                                                                                                 { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                 , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                 , feTyGam = _lhsItyGam
+                                                                                                                                                                                                 , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                 , feRange = _range
+                                                                                                                                                                                                 }) of
+                                                                                                                                                                                       { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                       (case (fitsIn _lhsIfiOpts _fe _lUniq_4_fo _patTyVarMpKnTy1 _ty_kn_ _ty_g_) of
+                                                                                                                                                                                        { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                        (case (tyAsVarMp' tyInst1Exists _lUniq2 (foTy _fo_)) of
+                                                                                                                                                                                         { __tup181 | __tup181 `seq` (True) ->
+                                                                                                                                                                                         (case (__tup181) of
+                                                                                                                                                                                          { (_,_patTyVarMpKnEx) | _patTyVarMpKnEx `seq` (True) ->
+                                                                                                                                                                                          (case (__tup181) of
+                                                                                                                                                                                           { (_ty,_) | _ty `seq` (True) ->
+                                                                                                                                                                                           (case (tyRestrictKiVarMp [_ty] `varUpd` _patTyVarMpKnEx `varUpd` foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                            { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                            (case (_ty) of
+                                                                                                                                                                                             { _varTy | _varTy `seq` (True) ->
+                                                                                                                                                                                             (case (if _lhsIinclVarBind && not (hsnIsWild nm_)
+                                                                                                                                                                                                    then  \g ->  gamAdd nm_
+                                                                                                                                                                                                                   (ValGamInfo _varTy) g
+                                                                                                                                                                                                    else  id) of
+                                                                                                                                                                                              { _addToGam | _addToGam `seq` (True) ->
+                                                                                                                                                                                              (case (_addToGam _lhsIvalGam) of
+                                                                                                                                                                                               { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                               (case ((let sem_PatExpr_Var_7 :: T_PatExpr_7
+                                                                                                                                                                                                           sem_PatExpr_Var_7 =
+                                                                                                                                                                                                               (\ _lhsIchrStore
+                                                                                                                                                                                                                  _lhsIclDfGam
+                                                                                                                                                                                                                  _lhsItvKiVarMp
+                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                  _lhsItyVarMp
+                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                    _lhsIchrStore `seq`
+                                                                                                                                                                                                                    (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                         ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                           { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                           (case (_cpNm) of
+                                                                                                                                                                                                                            { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                            (case (Map.empty) of
+                                                                                                                                                                                                                             { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                             (case (Map.empty) of
+                                                                                                                                                                                                                              { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                              (case (gamSingleton nm_ _lhsIpredScope) of
+                                                                                                                                                                                                                               { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                               (case (_ty) of
+                                                                                                                                                                                                                                { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                 { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                 (case ((let sem_PatExpr_Var_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                             sem_PatExpr_Var_8 =
+                                                                                                                                                                                                                                                 (\ _lhsIcSubst
+                                                                                                                                                                                                                                                    _lhsIceParentNm
+                                                                                                                                                                                                                                                    _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                    _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                    _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                    _lhsIfinValGam
+                                                                                                                                                                                                                                                    _lhsImoduleNm
+                                                                                                                                                                                                                                                    _lhsIrangeMp
+                                                                                                                                                                                                                                                    _lhsIsysfEnv
+                                                                                                                                                                                                                                                    _lhsItr
+                                                                                                                                                                                                                                                    _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                      _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                      (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                       (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                        (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                         (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                          (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                           (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                            (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                             (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                              (_lhsItr `seq`
+                                                                                                                                                                                                                                                               (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                ((case (Seq.empty) of
+                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                                                   { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (pp nm_) of
+                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                      { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                       { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (Seq.empty) of
+                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case ([]) of
+                                                                                                                                                                                                                                                                         { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (Map.empty) of
+                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (emptyVarMp) of
+                                                                                                                                                                                                                                                                           { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (False) of
+                                                                                                                                                                                                                                                                            { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (CPatRest_Var nm_) of
+                                                                                                                                                                                                                                                                             { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_pp) of
+                                                                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                               { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                                { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                 { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                  { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (RPat_Var _cpNm _acorety False) of
+                                                                                                                                                                                                                                                                                   { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_rpat) of
+                                                                                                                                                                                                                                                                                    { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (trppEmpty) of
+                                                                                                                                                                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case ([]) of
+                                                                                                                                                                                                                                                                                      { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                         in  sem_PatExpr_Var_8)) of
+                                                                                                                                                                                                                                  { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                  ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                       in  sem_PatExpr_Var_7)) of
+                                                                                                                                                                                                { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                          in  sem_PatExpr_Var_6)) of
+                                                                                                                                                   { ( sem_PatExpr_6) | True ->
+                                                                                                                                                   ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                in  sem_PatExpr_Var_5)) of
+                                                                                                                         { ( sem_PatExpr_5) | True ->
+                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
+                                                                                                  in  sem_PatExpr_Var_4)) of
+                                                                                           { ( sem_PatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) })))))))))))
+                                                               in  sem_PatExpr_Var_3)) of
+                                                        { ( sem_PatExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
+                                      in  sem_PatExpr_Var_2)) of
+                               { ( sem_PatExpr_2) | True ->
+                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
+              in  sem_PatExpr_Var_1)) of
+       { ( sem_PatExpr_1) | True ->
+       ( _lhsOrange,sem_PatExpr_1) }) }) })
+
+sem_PatExpr_VarAs :: Range ->
+                     HsName ->
+                     T_PatExpr ->
+                     T_PatExpr
+
+sem_PatExpr_VarAs hsrange_ nm_ patExpr_ | hsrange_ `seq` (nm_ `seq` (patExpr_ `seq` (True))) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_VarAs_1 :: T_PatExpr_1
+                       sem_PatExpr_VarAs_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_4_fo) -> (__cont,lUniq,lUniq2,lUniq_4_fo)}}} )) of
+                                  { __tup186 | __tup186 `seq` (True) ->
+                                  (case (__tup186) of
+                                   { (_patExprOgUniq,_,_,_) | _patExprOgUniq `seq` (True) ->
+                                   (case (patExpr_1 _patExprOgUniq) of
+                                    { ( _patExprIgUniq,patExpr_2) | True ->
+                                        (case (_patExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_VarAs_2 :: T_PatExpr_2
+                                                     sem_PatExpr_VarAs_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                         (case (_patExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_VarAs_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_VarAs_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                      (case (_patExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_patExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_patExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_VarAs_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_VarAs_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (__tup186) of
+                                                                                                                                                                 { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                 (case (if hsnIsWild nm_ then uidHNm _lUniq else nm_) of
+                                                                                                                                                                  { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                  (case (_topNm) of
+                                                                                                                                                                   { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                   (case ((let sem_PatExpr_VarAs_5 :: T_PatExpr_5
+                                                                                                                                                                               sem_PatExpr_VarAs_5 =
+                                                                                                                                                                                   (\ _lhsIvalGam ->
+                                                                                                                                                                                        _lhsIvalGam `seq`
+                                                                                                                                                                                        ((case (_lhsIvalGam) of
+                                                                                                                                                                                          { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                          (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                           { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                               (case (_patExprIarity) of
+                                                                                                                                                                                                { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                                (case (if hsnIsWild nm_ then Nothing else Just nm_) of
+                                                                                                                                                                                                 { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                                 (case (_mbTopNm) of
+                                                                                                                                                                                                  { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                  (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                   { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                   (case ((let sem_PatExpr_VarAs_6 :: T_PatExpr_6
+                                                                                                                                                                                                               sem_PatExpr_VarAs_6 =
+                                                                                                                                                                                                                   (\ _lhsIfiOpts
+                                                                                                                                                                                                                      _lhsIinclVarBind
+                                                                                                                                                                                                                      _lhsIknTy
+                                                                                                                                                                                                                      _lhsIknTyL
+                                                                                                                                                                                                                      _lhsIpatTyVarMp
+                                                                                                                                                                                                                      _lhsItySigGam ->
+                                                                                                                                                                                                                        _lhsIfiOpts `seq`
+                                                                                                                                                                                                                        (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                         (_lhsIknTy `seq`
+                                                                                                                                                                                                                          (_lhsIknTyL `seq`
+                                                                                                                                                                                                                           (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                            (_lhsItySigGam `seq`
+                                                                                                                                                                                                                             ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                               { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsIknTyL) of
+                                                                                                                                                                                                                                { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                 { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                  { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                  (case (__tup186) of
+                                                                                                                                                                                                                                   { (_,_,_,_lUniq_4_fo) | _lUniq_4_fo `seq` (True) ->
+                                                                                                                                                                                                                                   (case (__tup186) of
+                                                                                                                                                                                                                                    { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                                                    (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                     { _patTyVarMpKnTy1 | _patTyVarMpKnTy1 `seq` (True) ->
+                                                                                                                                                                                                                                     (case (tyEnsureNonAny _lUniq _lhsIknTy) of
+                                                                                                                                                                                                                                      { _ty_kn_ | _ty_kn_ `seq` (True) ->
+                                                                                                                                                                                                                                      (case (valGamLookupTy nm_ _lhsItySigGam) of
+                                                                                                                                                                                                                                       { __tup184 | __tup184 `seq` (True) ->
+                                                                                                                                                                                                                                       (case (__tup184) of
+                                                                                                                                                                                                                                        { (_ty_g_,_) | _ty_g_ `seq` (True) ->
+                                                                                                                                                                                                                                        (case (defaultFIEnv
+                                                                                                                                                                                                                                                   { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                   , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                   , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                   , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                   , feRange = _range
+                                                                                                                                                                                                                                                   }) of
+                                                                                                                                                                                                                                         { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                         (case (fitsIn _lhsIfiOpts _fe _lUniq_4_fo _patTyVarMpKnTy1 _ty_kn_ _ty_g_) of
+                                                                                                                                                                                                                                          { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                          (case (tyAsVarMp' tyInst1Exists _lUniq2 (foTy _fo_)) of
+                                                                                                                                                                                                                                           { __tup185 | __tup185 `seq` (True) ->
+                                                                                                                                                                                                                                           (case (__tup185) of
+                                                                                                                                                                                                                                            { (_,_patTyVarMpKnEx) | _patTyVarMpKnEx `seq` (True) ->
+                                                                                                                                                                                                                                            (case (__tup185) of
+                                                                                                                                                                                                                                             { (_ty,_) | _ty `seq` (True) ->
+                                                                                                                                                                                                                                             (case (tyRestrictKiVarMp [_ty] `varUpd` _patTyVarMpKnEx `varUpd` foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                              { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                              (case (_ty) of
+                                                                                                                                                                                                                                               { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                               (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                                { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                                    (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                     { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (_ty) of
+                                                                                                                                                                                                                                                      { _varTy | _varTy `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (if _lhsIinclVarBind && not (hsnIsWild nm_)
+                                                                                                                                                                                                                                                             then  \g ->  gamAdd nm_
+                                                                                                                                                                                                                                                                            (ValGamInfo _varTy) g
+                                                                                                                                                                                                                                                             else  id) of
+                                                                                                                                                                                                                                                       { _addToGam | _addToGam `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_addToGam _patExprIvalGam) of
+                                                                                                                                                                                                                                                        { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                        (case ((let sem_PatExpr_VarAs_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                                    sem_PatExpr_VarAs_7 =
+                                                                                                                                                                                                                                                                        (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                           _lhsIclDfGam
+                                                                                                                                                                                                                                                                           _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                           _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                           _lhsItyVarMp
+                                                                                                                                                                                                                                                                           _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                             _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                             (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                              (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                  ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                                                    { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_cpNm) of
+                                                                                                                                                                                                                                                                                     { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                      { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                       { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                        { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                         { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                          { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                           { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                            { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                 { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                  { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                                   { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_ty) of
+                                                                                                                                                                                                                                                                                                    { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case ((let sem_PatExpr_VarAs_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                                 sem_PatExpr_VarAs_8 =
+                                                                                                                                                                                                                                                                                                                     (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                        _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                        _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                        _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                        _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                        _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                        _lhsItr
+                                                                                                                                                                                                                                                                                                                        _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                          _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                          (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                                           (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                            (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                              (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                   (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                    ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                      { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                       { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                        { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                         { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                          { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                           { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                            { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                             { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                              { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                               { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                 { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                     (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                       { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (pp nm_ >|< "@" >|< _patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                          { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_patExprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                               { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (False) of
+                                                                                                                                                                                                                                                                                                                                                                { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                                 { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIrpat {rcpPNm = _cpNm}) of
+                                                                                                                                                                                                                                                                                                                                                                   { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                                    { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                      { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                             in  sem_PatExpr_VarAs_8)) of
+                                                                                                                                                                                                                                                                                                      { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                      ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                in  sem_PatExpr_VarAs_7)) of
+                                                                                                                                                                                                                                                         { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                                         ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                           in  sem_PatExpr_VarAs_6)) of
+                                                                                                                                                                                                    { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                    ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                           in  sem_PatExpr_VarAs_5)) of
+                                                                                                                                                                    { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                    ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_VarAs_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_VarAs_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_VarAs_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_VarAs_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_App :: Range ->
+                   T_PatExpr ->
+                   T_PatExpr ->
+                   T_PatExpr
+
+sem_PatExpr_App hsrange_ func_ arg_ | hsrange_ `seq` (func_ `seq` (arg_ `seq` (True))) =
+    (case (arg_) of
+     { ( _argIrange,arg_1) | True ->
+         (case (func_) of
+          { ( _funcIrange,func_1) | True ->
+              (case (rangeUnions [hsrange_, _funcIrange   , _argIrange   ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_PatExpr_App_1 :: T_PatExpr_1
+                            sem_PatExpr_App_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                       { __tup189 | __tup189 `seq` (True) ->
+                                       (case (__tup189) of
+                                        { (_funcOgUniq,_) | _funcOgUniq `seq` (True) ->
+                                        (case (func_1 _funcOgUniq) of
+                                         { ( _funcIgUniq,func_2) | True ->
+                                             (case (_funcIgUniq) of
+                                              { _argOgUniq | _argOgUniq `seq` (True) ->
+                                              (case (arg_1 _argOgUniq) of
+                                               { ( _argIgUniq,arg_2) | True ->
+                                                   (case (_argIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_PatExpr_App_2 :: T_PatExpr_2
+                                                                sem_PatExpr_App_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _funcOpredSameScopeCounter | _funcOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _funcOlexLev | _funcOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _funcOkiGam | _funcOkiGam `seq` (True) ->
+                                                                               (case (func_2 _funcOkiGam _funcOlexLev _funcOpredSameScopeCounter) of
+                                                                                { ( _funcIpredSameScopeCounter,func_3) | True ->
+                                                                                    (case (_funcIpredSameScopeCounter) of
+                                                                                     { _argOpredSameScopeCounter | _argOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case (_lhsIlexLev) of
+                                                                                      { _argOlexLev | _argOlexLev `seq` (True) ->
+                                                                                      (case (_lhsIkiGam) of
+                                                                                       { _argOkiGam | _argOkiGam `seq` (True) ->
+                                                                                       (case (arg_2 _argOkiGam _argOlexLev _argOpredSameScopeCounter) of
+                                                                                        { ( _argIpredSameScopeCounter,arg_3) | True ->
+                                                                                            (case (_argIpredSameScopeCounter) of
+                                                                                             { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                             (case ((let sem_PatExpr_App_3 :: T_PatExpr_3
+                                                                                                         sem_PatExpr_App_3 =
+                                                                                                             (\ _lhsIgenerDataInfoMp
+                                                                                                                _lhsIkiVarMp
+                                                                                                                _lhsIopts
+                                                                                                                _lhsIpolGam
+                                                                                                                _lhsIpolVarMp
+                                                                                                                _lhsIpredScope
+                                                                                                                _lhsItyGam
+                                                                                                                _lhsItyKiGam
+                                                                                                                _lhsItyKiGlobFreeTvarS ->
+                                                                                                                  _lhsIgenerDataInfoMp `seq`
+                                                                                                                  (_lhsIkiVarMp `seq`
+                                                                                                                   (_lhsIopts `seq`
+                                                                                                                    (_lhsIpolGam `seq`
+                                                                                                                     (_lhsIpolVarMp `seq`
+                                                                                                                      (_lhsIpredScope `seq`
+                                                                                                                       (_lhsItyGam `seq`
+                                                                                                                        (_lhsItyKiGam `seq`
+                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                            { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _funcOtyKiGam | _funcOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyGam) of
+                                                                                                                               { _funcOtyGam | _funcOtyGam `seq` (True) ->
+                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                { _funcOpredScope | _funcOpredScope `seq` (True) ->
+                                                                                                                                (case (_lhsIpolVarMp) of
+                                                                                                                                 { _funcOpolVarMp | _funcOpolVarMp `seq` (True) ->
+                                                                                                                                 (case (_lhsIpolGam) of
+                                                                                                                                  { _funcOpolGam | _funcOpolGam `seq` (True) ->
+                                                                                                                                  (case (_lhsIopts) of
+                                                                                                                                   { _funcOopts | _funcOopts `seq` (True) ->
+                                                                                                                                   (case (_lhsIkiVarMp) of
+                                                                                                                                    { _funcOkiVarMp | _funcOkiVarMp `seq` (True) ->
+                                                                                                                                    (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                     { _funcOgenerDataInfoMp | _funcOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                     (case (func_3 _funcOgenerDataInfoMp _funcOkiVarMp _funcOopts _funcOpolGam _funcOpolVarMp _funcOpredScope _funcOtyGam _funcOtyKiGam _funcOtyKiGlobFreeTvarS) of
+                                                                                                                                      { ( _funcIgenerDataInfoMp,_funcIkiVarMp,_funcIpolVarMp,_funcItyGam,_funcItyKiGam,func_4) | True ->
+                                                                                                                                          (case (_funcItyKiGam) of
+                                                                                                                                           { _argOtyKiGam | _argOtyKiGam `seq` (True) ->
+                                                                                                                                           (case (_funcItyGam) of
+                                                                                                                                            { _argOtyGam | _argOtyGam `seq` (True) ->
+                                                                                                                                            (case (_lhsIpredScope) of
+                                                                                                                                             { _argOpredScope | _argOpredScope `seq` (True) ->
+                                                                                                                                             (case (_funcIpolVarMp) of
+                                                                                                                                              { _argOpolVarMp | _argOpolVarMp `seq` (True) ->
+                                                                                                                                              (case (_lhsIpolGam) of
+                                                                                                                                               { _argOpolGam | _argOpolGam `seq` (True) ->
+                                                                                                                                               (case (_lhsIopts) of
+                                                                                                                                                { _argOopts | _argOopts `seq` (True) ->
+                                                                                                                                                (case (_funcIkiVarMp) of
+                                                                                                                                                 { _argOkiVarMp | _argOkiVarMp `seq` (True) ->
+                                                                                                                                                 (case (_funcIgenerDataInfoMp) of
+                                                                                                                                                  { _argOgenerDataInfoMp | _argOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                  (case (arg_3 _argOgenerDataInfoMp _argOkiVarMp _argOopts _argOpolGam _argOpolVarMp _argOpredScope _argOtyGam _argOtyKiGam _argOtyKiGlobFreeTvarS) of
+                                                                                                                                                   { ( _argIgenerDataInfoMp,_argIkiVarMp,_argIpolVarMp,_argItyGam,_argItyKiGam,arg_4) | True ->
+                                                                                                                                                       (case (_argIgenerDataInfoMp) of
+                                                                                                                                                        { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                        (case (_argIkiVarMp) of
+                                                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                         (case (_argIpolVarMp) of
+                                                                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                          (case (_argItyGam) of
+                                                                                                                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                                                           (case (_argItyKiGam) of
+                                                                                                                                                            { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                            (case ((let sem_PatExpr_App_4 :: T_PatExpr_4
+                                                                                                                                                                        sem_PatExpr_App_4 =
+                                                                                                                                                                            (\ _lhsIclGam
+                                                                                                                                                                               _lhsIdataGam
+                                                                                                                                                                               _lhsIfinKiVarMp
+                                                                                                                                                                               _lhsIfinTyKiGam
+                                                                                                                                                                               _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                 _lhsIclGam `seq`
+                                                                                                                                                                                 (_lhsIdataGam `seq`
+                                                                                                                                                                                  (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                   (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                     ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                       { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                        { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                         { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIdataGam) of
+                                                                                                                                                                                          { _argOdataGam | _argOdataGam `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIclGam) of
+                                                                                                                                                                                           { _argOclGam | _argOclGam `seq` (True) ->
+                                                                                                                                                                                           (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                            { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                             { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                              { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                              (case (_lhsIdataGam) of
+                                                                                                                                                                                               { _funcOdataGam | _funcOdataGam `seq` (True) ->
+                                                                                                                                                                                               (case (_lhsIclGam) of
+                                                                                                                                                                                                { _funcOclGam | _funcOclGam `seq` (True) ->
+                                                                                                                                                                                                (case (arg_4 _argOclGam _argOdataGam _argOfinKiVarMp _argOfinTyKiGam _argOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                 { ( _argIchrInstDeclSq,_argItopNm,arg_5) | True ->
+                                                                                                                                                                                                     (case (func_4 _funcOclGam _funcOdataGam _funcOfinKiVarMp _funcOfinTyKiGam _funcOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                      { ( _funcIchrInstDeclSq,_funcItopNm,func_5) | True ->
+                                                                                                                                                                                                          (case (_funcIchrInstDeclSq `Seq.union` _argIchrInstDeclSq) of
+                                                                                                                                                                                                           { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                           (case (hsnUnknown) of
+                                                                                                                                                                                                            { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                                                            (case ((let sem_PatExpr_App_5 :: T_PatExpr_5
+                                                                                                                                                                                                                        sem_PatExpr_App_5 =
+                                                                                                                                                                                                                            (\ _lhsIvalGam ->
+                                                                                                                                                                                                                                 _lhsIvalGam `seq`
+                                                                                                                                                                                                                                 ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                                   { _funcOvalGam | _funcOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                   (case (func_5 _funcOvalGam) of
+                                                                                                                                                                                                                                    { ( _funcIarity,_funcImbTopNm,_funcIpatFunTy,func_6) | True ->
+                                                                                                                                                                                                                                        (case (_funcIarity + 1) of
+                                                                                                                                                                                                                                         { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                                                                         (case (Nothing) of
+                                                                                                                                                                                                                                          { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                                                                          (case (_mbTopNm) of
+                                                                                                                                                                                                                                           { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                                                           (case (_funcIpatFunTy) of
+                                                                                                                                                                                                                                            { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                                                            (case ((let sem_PatExpr_App_6 :: T_PatExpr_6
+                                                                                                                                                                                                                                                        sem_PatExpr_App_6 =
+                                                                                                                                                                                                                                                            (\ _lhsIfiOpts
+                                                                                                                                                                                                                                                               _lhsIinclVarBind
+                                                                                                                                                                                                                                                               _lhsIknTy
+                                                                                                                                                                                                                                                               _lhsIknTyL
+                                                                                                                                                                                                                                                               _lhsIpatTyVarMp
+                                                                                                                                                                                                                                                               _lhsItySigGam ->
+                                                                                                                                                                                                                                                                 _lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                 (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                                                                  (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                   (_lhsIknTyL `seq`
+                                                                                                                                                                                                                                                                    (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                                                     (_lhsItySigGam `seq`
+                                                                                                                                                                                                                                                                      ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                                        { _funcOtySigGam | _funcOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                                         { _funcOpatTyVarMp | _funcOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (hdAndTl _lhsIknTyL) of
+                                                                                                                                                                                                                                                                          { __tup188 | __tup188 `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (__tup188) of
+                                                                                                                                                                                                                                                                           { (_,_knTyL) | _knTyL `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_knTyL) of
+                                                                                                                                                                                                                                                                            { _funcOknTyL | _funcOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                                                             { _funcOinclVarBind | _funcOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                              { _funcOfiOpts | _funcOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (Ty_Any) of
+                                                                                                                                                                                                                                                                               { _funcOknTy | _funcOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (func_6 _funcOfiOpts _funcOinclVarBind _funcOknTy _funcOknTyL _funcOpatTyVarMp _funcOtySigGam) of
+                                                                                                                                                                                                                                                                                { ( _funcIpatTyVarMp,_funcIvalGam,func_7) | True ->
+                                                                                                                                                                                                                                                                                    (case (_funcIvalGam) of
+                                                                                                                                                                                                                                                                                     { _argOvalGam | _argOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                                                      { _argOtySigGam | _argOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_funcIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                       { _argOpatTyVarMp | _argOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_knTyL) of
+                                                                                                                                                                                                                                                                                        { _argOknTyL | _argOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                                                                         { _argOinclVarBind | _argOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                          { _argOfiOpts | _argOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (__tup188) of
+                                                                                                                                                                                                                                                                                           { (_knArgTy,_) | _knArgTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_knArgTy) of
+                                                                                                                                                                                                                                                                                            { _argOknTy | _argOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (arg_5 _argOvalGam) of
+                                                                                                                                                                                                                                                                                             { ( _argIarity,_argImbTopNm,_argIpatFunTy,arg_6) | True ->
+                                                                                                                                                                                                                                                                                                 (case (arg_6 _argOfiOpts _argOinclVarBind _argOknTy _argOknTyL _argOpatTyVarMp _argOtySigGam) of
+                                                                                                                                                                                                                                                                                                  { ( _argIpatTyVarMp,_argIvalGam,arg_7) | True ->
+                                                                                                                                                                                                                                                                                                      (case (_argIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                                       { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_argIvalGam) of
+                                                                                                                                                                                                                                                                                                        { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case ((let sem_PatExpr_App_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                                                                                    sem_PatExpr_App_7 =
+                                                                                                                                                                                                                                                                                                                        (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                                                                           _lhsIclDfGam
+                                                                                                                                                                                                                                                                                                                           _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                                                                           _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                                           _lhsItyVarMp
+                                                                                                                                                                                                                                                                                                                           _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                                                             _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                                                             (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                                                              (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                                  ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                    { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                     { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                      { _funcOtyVarMp | _funcOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                       { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                        { _funcOtvKiVarMp | _funcOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                                         { _funcOclDfGam | _funcOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                                          { _funcOchrStore | _funcOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (func_7 _funcOchrStore _funcOclDfGam _funcOtvKiVarMp _funcOtyTyGlobFreeTvarS _funcOtyVarMp _funcOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                           { ( _funcIcpNm,_funcIgathCnstrMp,_funcIgathRangeMp,_funcIscopeGam,_funcIty,_funcItyVarMp,func_8) | True ->
+                                                                                                                                                                                                                                                                                                                                               (case (_funcItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                { _argOtyVarMp | _argOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                 { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                  { _argOtvKiVarMp | _argOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                                                   { _argOclDfGam | _argOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                                                    { _argOchrStore | _argOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (arg_7 _argOchrStore _argOclDfGam _argOtvKiVarMp _argOtyTyGlobFreeTvarS _argOtyVarMp _argOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                     { ( _argIcpNm,_argIgathCnstrMp,_argIgathRangeMp,_argIscopeGam,_argIty,_argItyVarMp,arg_8) | True ->
+                                                                                                                                                                                                                                                                                                                                                         (case (_argIcpNm) of
+                                                                                                                                                                                                                                                                                                                                                          { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (_cpNm) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_funcIgathCnstrMp `cnstrMpUnion` _argIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_funcIgathRangeMp `Map.union` _argIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_funcIscopeGam `gamUnion` _argIscopeGam) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_argIty) of
+                                                                                                                                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_argItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case ((let sem_PatExpr_App_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                                                                                            sem_PatExpr_App_8 =
+                                                                                                                                                                                                                                                                                                                                                                                (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsItr
+                                                                                                                                                                                                                                                                                                                                                                                   _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                                                     (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                         (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                                           (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                                                             (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                                                              (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                                               ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _argOrangeMp | _argOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _argOfinValGam | _argOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _funcOsysfEnv | _funcOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { _funcOrangeMp | _funcOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                       { _funcOfinValGam | _funcOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                        { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                         { _argOtySigVarMp | _argOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                                          { _argOtr | _argOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _argOchrScopeBindMp | _argOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                             { _argOchrEvidBindMp | _argOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                              { _funcOchrScopeBindMp | _funcOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                               { _funcOchrEvidBindMp | _funcOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                { _funcOcSubst | _funcOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                 { _funcOtySigVarMp | _funcOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                                                  { _funcOtr | _funcOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                   { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                    { _funcOceParentNm | _funcOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                    (case (func_8 _funcOcSubst _funcOceParentNm _funcOchrEvidBindMp _funcOchrScopeBindMp _funcOfinTyVarMp _funcOfinValGam _funcOmoduleNm _funcOrangeMp _funcOsysfEnv _funcOtr _funcOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                     { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIcSubst,_funcIerrSq,_funcIfsRPatL,_funcIgathMentrelFilterMp,_funcIgathTvKiVarMp,_funcIisBang,_funcIpatCRest,_funcIpp,_funcIrpat,_funcItrpp,_funcIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_funcIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                          { _argOcSubst | _argOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                          (case (rpatNmNm _argIcpNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                           { _argOceParentNm | _argOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                           (case (arg_8 _argOcSubst _argOceParentNm _argOchrEvidBindMp _argOchrScopeBindMp _argOfinTyVarMp _argOfinValGam _argOmoduleNm _argOrangeMp _argOsysfEnv _argOtr _argOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                            { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIcSubst,_argIerrSq,_argIfsRPatL,_argIgathMentrelFilterMp,_argIgathTvKiVarMp,_argIisBang,_argIpatCRest,_argIpp,_argIrpat,_argItrpp,_argIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_funcIallErrSq `Seq.union` _argIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                 (case (mkExtAppPP  (_funcIappFunNm,_funcIappFunPP,_funcIappArgPPL)
+                                                                                                                                                                                                                                                                                                                                                                                                                                                    (_argIappFunNm,_argIappFunPP,_argIappArgPPL,_argIpp)) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                  { __tup187 | __tup187 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                  (case (__tup187) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                   { (_,_lhsOappArgPPL) | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_funcIappFunNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                    (case (__tup187) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                     { (_lhsOappFunPP,_) | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                     (case (_argIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_funcIerrSq `Seq.union` _argIerrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                       (case ((FldImplicitOffset,_argIrpat) : _funcIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_funcIgathTvKiVarMp `varmpUnion` _argIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                          (case (False) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                           (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_funcIpp >#< _argIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                             { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                             (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                              (case (_argIrpat) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                               (case (_funcItrpp >< _argItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                (case (_funcIvalCBindL ++ _argIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                                                                                        in  sem_PatExpr_App_8)) of
+                                                                                                                                                                                                                                                                                                                                                                 { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                                                                 ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                                                                in  sem_PatExpr_App_7)) of
+                                                                                                                                                                                                                                                                                                         { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                         ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                    in  sem_PatExpr_App_6)) of
+                                                                                                                                                                                                                                             { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                                                             ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                                                                    in  sem_PatExpr_App_5)) of
+                                                                                                                                                                                                             { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                                                             ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                    in  sem_PatExpr_App_4)) of
+                                                                                                                                                             { ( sem_PatExpr_4) | True ->
+                                                                                                                                                             ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                     in  sem_PatExpr_App_3)) of
+                                                                                              { ( sem_PatExpr_3) | True ->
+                                                                                              ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) }) }) }) }) })))))
+                                                            in  sem_PatExpr_App_2)) of
+                                                     { ( sem_PatExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) }) }) })))
+                        in  sem_PatExpr_App_1)) of
+                 { ( sem_PatExpr_1) | True ->
+                 ( _lhsOrange,sem_PatExpr_1) }) }) }) }) })
+
+sem_PatExpr_AppTop :: Range ->
+                      T_PatExpr ->
+                      T_PatExpr
+
+sem_PatExpr_AppTop hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_AppTop_1 :: T_PatExpr_1
+                       sem_PatExpr_AppTop_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup192 | __tup192 `seq` (True) ->
+                                  (case (__tup192) of
+                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
+                                   (case (patExpr_1 _patExprOgUniq) of
+                                    { ( _patExprIgUniq,patExpr_2) | True ->
+                                        (case (_patExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_AppTop_2 :: T_PatExpr_2
+                                                     sem_PatExpr_AppTop_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                         (case (_patExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_AppTop_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_AppTop_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                      (case (_patExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_patExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_patExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_AppTop_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_AppTop_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (__tup192) of
+                                                                                                                                                                 { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                                 (case (uidHNm _lUniq) of
+                                                                                                                                                                  { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                  (case (_topNm) of
+                                                                                                                                                                   { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                   (case ((let sem_PatExpr_AppTop_5 :: T_PatExpr_5
+                                                                                                                                                                               sem_PatExpr_AppTop_5 =
+                                                                                                                                                                                   (\ _lhsIvalGam ->
+                                                                                                                                                                                        _lhsIvalGam `seq`
+                                                                                                                                                                                        ((case (0) of
+                                                                                                                                                                                          { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                          (case (Nothing) of
+                                                                                                                                                                                           { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                           (case (_mbTopNm) of
+                                                                                                                                                                                            { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                            (case (_lhsIvalGam) of
+                                                                                                                                                                                             { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                             (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                              { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                                  (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                   { _patFunTy | _patFunTy `seq` (True) ->
+                                                                                                                                                                                                   (case (_patFunTy) of
+                                                                                                                                                                                                    { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                    (case ((let sem_PatExpr_AppTop_6 :: T_PatExpr_6
+                                                                                                                                                                                                                sem_PatExpr_AppTop_6 =
+                                                                                                                                                                                                                    (\ _lhsIfiOpts
+                                                                                                                                                                                                                       _lhsIinclVarBind
+                                                                                                                                                                                                                       _lhsIknTy
+                                                                                                                                                                                                                       _lhsIknTyL
+                                                                                                                                                                                                                       _lhsIpatTyVarMp
+                                                                                                                                                                                                                       _lhsItySigGam ->
+                                                                                                                                                                                                                         _lhsIfiOpts `seq`
+                                                                                                                                                                                                                         (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                          (_lhsIknTy `seq`
+                                                                                                                                                                                                                           (_lhsIknTyL `seq`
+                                                                                                                                                                                                                            (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                             (_lhsItySigGam `seq`
+                                                                                                                                                                                                                              ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                                { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                (case (appUn1Arr _patFunTy) of
+                                                                                                                                                                                                                                 { __tup191 | __tup191 `seq` (True) ->
+                                                                                                                                                                                                                                 (case (__tup191) of
+                                                                                                                                                                                                                                  { (_,_knProdTy) | _knProdTy `seq` (True) ->
+                                                                                                                                                                                                                                  (case (tyProdArgs _knProdTy) of
+                                                                                                                                                                                                                                   { _prodTyL | _prodTyL `seq` (True) ->
+                                                                                                                                                                                                                                   (case (case _prodTyL     of
+                                                                                                                                                                                                                                              tL | _patExprIarity == length tL
+                                                                                                                                                                                                                                                  ->  (reverse tL,[])
+                                                                                                                                                                                                                                              _   ->  (repeat Ty_Any
+                                                                                                                                                                                                                                                      ,  [rngLift _range Err_PatArity2 "type"
+                                                                                                                                                                                                                                                           (ppTy _knProdTy) _patExprIarity])) of
+                                                                                                                                                                                                                                    { __tup190 | __tup190 `seq` (True) ->
+                                                                                                                                                                                                                                    (case (__tup190) of
+                                                                                                                                                                                                                                     { (_knTyL,_) | _knTyL `seq` (True) ->
+                                                                                                                                                                                                                                     (case (_knTyL) of
+                                                                                                                                                                                                                                      { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                      (case (_lhsIknTy) of
+                                                                                                                                                                                                                                       { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                       (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                        { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                        (case (True) of
+                                                                                                                                                                                                                                         { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                         (case (__tup191) of
+                                                                                                                                                                                                                                          { (_knPatTy,_) | _knPatTy `seq` (True) ->
+                                                                                                                                                                                                                                          (case (defaultFIEnv
+                                                                                                                                                                                                                                                     { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                     , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                     , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                     , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                     , feRange = _range
+                                                                                                                                                                                                                                                     }) of
+                                                                                                                                                                                                                                           { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                           (case (fitsIn _lhsIfiOpts _fe _lUniq _lhsIpatTyVarMp _lhsIknTy _knPatTy) of
+                                                                                                                                                                                                                                            { _fo_fitR_ | _fo_fitR_ `seq` (True) ->
+                                                                                                                                                                                                                                            (case (foVarMp _fo_fitR_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                             { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                             (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                              { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                                  (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                   { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                                    { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                    (case ((let sem_PatExpr_AppTop_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                                sem_PatExpr_AppTop_7 =
+                                                                                                                                                                                                                                                                    (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                       _lhsIclDfGam
+                                                                                                                                                                                                                                                                       _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                       _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                       _lhsItyVarMp
+                                                                                                                                                                                                                                                                       _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                         _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                         (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                              ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                                                { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_cpNm) of
+                                                                                                                                                                                                                                                                                 { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                  { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                   { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                    { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                     { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                      { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                       { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                        { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                            (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                             { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                              { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                               { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (foTy _fo_fitR_) of
+                                                                                                                                                                                                                                                                                                { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_ty) of
+                                                                                                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case ((let sem_PatExpr_AppTop_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                              sem_PatExpr_AppTop_8 =
+                                                                                                                                                                                                                                                                                                                  (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                     _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                     _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                     _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                     _lhsItr
+                                                                                                                                                                                                                                                                                                                     _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                       _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                               (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                 ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                   { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                    { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                     { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                      { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                       { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                        { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                         { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                          { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                           { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                            { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                             { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                              { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (ppAppTop  (_patExprIappFunNm,_patExprIappFunPP)
+                                                                                                                                                                                                                                                                                                                                                                      _patExprIappArgPPL _patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                       { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (__tup190) of
+                                                                                                                                                                                                                                                                                                                                                         { (_,_arityErrs) | _arityErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (rngLift _range mkNestErr' _pp [_patExprIerrSq, Seq.fromList _arityErrs, foErrSq _fo_fitR_]) of
+                                                                                                                                                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (False) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                               { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (_patExprIappFunNm) of
+                                                                                                                                                                                                                                                                                                                                                                 { _appFunNm | _appFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                                                                                                                  { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                                                                                                                   { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp `varUpd` _knPatTy) of
+                                                                                                                                                                                                                                                                                                                                                                    { _finKnPatTy | _finKnPatTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_patExprIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                                     { _fsRPatL | _fsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (fsL2PatOffsetL _lhsIopts $ reverse                 $ _fsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                                      { _rpatBinds | _rpatBinds `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                                       { _rest | _rest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (tyConNm $ fst $ appUnApp _finKnPatTy) of
+                                                                                                                                                                                                                                                                                                                                                                        { _tyConNm | _tyConNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (ehcOptFromJust _lhsIopts ("PatExpr.{AppTop,Con}.dgi: " ++ show _tyConNm ++ (showPP $ ppParens _finKnPatTy)) emptyDataGamInfo
+                                                                                                                                                                                                                                                                                                                                                                                   $ dataGamLookup _tyConNm $ _lhsIdataGam) of
+                                                                                                                                                                                                                                                                                                                                                                         { _dgi | _dgi `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (ehcOptFromJust _lhsIopts ("PatExpr.{AppTop,Con}.dti: " ++ show _tyConNm ++ "." ++ show _appFunNm) emptyDataTagInfo
+                                                                                                                                                                                                                                                                                                                                                                                    $ Map.lookup _appFunNm $ dgiConstrTagMp _dgi) of
+                                                                                                                                                                                                                                                                                                                                                                          { _dti | _dti `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (dtiCTag _dti) of
+                                                                                                                                                                                                                                                                                                                                                                           { _tag | _tag `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                                                                                                            { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                                                                                                             { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case (RPat_Con _cpNm _acorety _tag (RPatConBind_One _rest (map fst _rpatBinds))) of
+                                                                                                                                                                                                                                                                                                                                                                              { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                              (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                                               { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                               (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                (case ((emptyRCEEnv _lhsIopts) { rceValGam = _lhsIvalGam, rceDataGam = _lhsIdataGam, rceTyVarMp = _lhsIfinTyVarMp }) of
+                                                                                                                                                                                                                                                                                                                                                                                 { _rceEnv | _rceEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                 (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                  { _valCBindLSub | _valCBindLSub `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                  (case (acoreRPatBindL2BindL _rceEnv (not $ null _valCBindLSub) _lhsIceParentNm _tag (Just (_rest,length _fsRPatL)) _rpatBinds) of
+                                                                                                                                                                                                                                                                                                                                                                                   { _valCBindL | _valCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                   (case (_valCBindL ++ _valCBindLSub) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                          in  sem_PatExpr_AppTop_8)) of
+                                                                                                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                            in  sem_PatExpr_AppTop_7)) of
+                                                                                                                                                                                                                                                     { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                                     ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                            in  sem_PatExpr_AppTop_6)) of
+                                                                                                                                                                                                     { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                     ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) }) })))
+                                                                                                                                                                           in  sem_PatExpr_AppTop_5)) of
+                                                                                                                                                                    { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                    ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_AppTop_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_AppTop_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_AppTop_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_AppTop_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_Parens :: Range ->
+                      T_PatExpr ->
+                      T_PatExpr
+
+sem_PatExpr_Parens hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_Parens_1 :: T_PatExpr_1
+                       sem_PatExpr_Parens_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup193 | __tup193 `seq` (True) ->
+                                  (case (__tup193) of
+                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
+                                   (case (patExpr_1 _patExprOgUniq) of
+                                    { ( _patExprIgUniq,patExpr_2) | True ->
+                                        (case (_patExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_Parens_2 :: T_PatExpr_2
+                                                     sem_PatExpr_Parens_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                         (case (_patExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_Parens_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_Parens_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                      (case (_patExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_patExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_patExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_Parens_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_Parens_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (_patExprItopNm) of
+                                                                                                                                                                 { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                 (case ((let sem_PatExpr_Parens_5 :: T_PatExpr_5
+                                                                                                                                                                             sem_PatExpr_Parens_5 =
+                                                                                                                                                                                 (\ _lhsIvalGam ->
+                                                                                                                                                                                      _lhsIvalGam `seq`
+                                                                                                                                                                                      ((case (_lhsIvalGam) of
+                                                                                                                                                                                        { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                        (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                         { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                             (case (_patExprIarity) of
+                                                                                                                                                                                              { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                              (case (Nothing) of
+                                                                                                                                                                                               { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                               (case (_mbTopNm) of
+                                                                                                                                                                                                { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                 { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                 (case ((let sem_PatExpr_Parens_6 :: T_PatExpr_6
+                                                                                                                                                                                                             sem_PatExpr_Parens_6 =
+                                                                                                                                                                                                                 (\ _lhsIfiOpts
+                                                                                                                                                                                                                    _lhsIinclVarBind
+                                                                                                                                                                                                                    _lhsIknTy
+                                                                                                                                                                                                                    _lhsIknTyL
+                                                                                                                                                                                                                    _lhsIpatTyVarMp
+                                                                                                                                                                                                                    _lhsItySigGam ->
+                                                                                                                                                                                                                      _lhsIfiOpts `seq`
+                                                                                                                                                                                                                      (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                       (_lhsIknTy `seq`
+                                                                                                                                                                                                                        (_lhsIknTyL `seq`
+                                                                                                                                                                                                                         (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                          (_lhsItySigGam `seq`
+                                                                                                                                                                                                                           ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                             { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                             (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                              { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsIknTyL) of
+                                                                                                                                                                                                                               { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsIknTy) of
+                                                                                                                                                                                                                                { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                 { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                  { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                  (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                   { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                       (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                        { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                         { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                         (case ((let sem_PatExpr_Parens_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                     sem_PatExpr_Parens_7 =
+                                                                                                                                                                                                                                                         (\ _lhsIchrStore
+                                                                                                                                                                                                                                                            _lhsIclDfGam
+                                                                                                                                                                                                                                                            _lhsItvKiVarMp
+                                                                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                            _lhsItyVarMp
+                                                                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                              _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                              (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                               (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                 (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                  (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                   ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                     { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                      { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                       { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                        { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                         { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                          { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                           { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                               (case (_patExprIcpNm) of
+                                                                                                                                                                                                                                                                                { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                 { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                  { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                   { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_patExprIty) of
+                                                                                                                                                                                                                                                                                    { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case ((let sem_PatExpr_Parens_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                 sem_PatExpr_Parens_8 =
+                                                                                                                                                                                                                                                                                                     (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                        _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                        _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                        _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                        _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                        _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                        _lhsItr
+                                                                                                                                                                                                                                                                                                        _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                          _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                          (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                           (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                   (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                    ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                      { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                       { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                        { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                         { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                          { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                           { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                            { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                             { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                              { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                               { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                 { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                     (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                                                                                                                       { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (ppParens _patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_patExprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                                                                                                             { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (False) of
+                                                                                                                                                                                                                                                                                                                                                { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                 { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIrpat) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                             in  sem_PatExpr_Parens_8)) of
+                                                                                                                                                                                                                                                                                      { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                      ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                 in  sem_PatExpr_Parens_7)) of
+                                                                                                                                                                                                                                          { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                          ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                         in  sem_PatExpr_Parens_6)) of
+                                                                                                                                                                                                  { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                  ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                         in  sem_PatExpr_Parens_5)) of
+                                                                                                                                                                  { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                  ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_Parens_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_Parens_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_Parens_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_Parens_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_Ann :: Range ->
+                   T_PatExprAnn ->
+                   T_PatExpr ->
+                   T_PatExpr
+
+sem_PatExpr_Ann hsrange_ ann_ patExpr_ | hsrange_ `seq` (ann_ `seq` (patExpr_ `seq` (True))) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_Ann_1 :: T_PatExpr_1
+                       sem_PatExpr_Ann_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup194 | __tup194 `seq` (True) ->
+                                  (case (__tup194) of
+                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
+                                   (case (patExpr_1 _patExprOgUniq) of
+                                    { ( _patExprIgUniq,patExpr_2) | True ->
+                                        (case (_patExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_Ann_2 :: T_PatExpr_2
+                                                     sem_PatExpr_Ann_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                         (case (_patExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_Ann_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_Ann_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                      (case (_patExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_patExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_patExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_Ann_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_Ann_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (_patExprItopNm) of
+                                                                                                                                                                 { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                 (case ((let sem_PatExpr_Ann_5 :: T_PatExpr_5
+                                                                                                                                                                             sem_PatExpr_Ann_5 =
+                                                                                                                                                                                 (\ _lhsIvalGam ->
+                                                                                                                                                                                      _lhsIvalGam `seq`
+                                                                                                                                                                                      ((case (_lhsIvalGam) of
+                                                                                                                                                                                        { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                        (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                         { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                             (case (_patExprIarity) of
+                                                                                                                                                                                              { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                              (case (Nothing) of
+                                                                                                                                                                                               { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                               (case (_mbTopNm) of
+                                                                                                                                                                                                { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                 { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                 (case ((let sem_PatExpr_Ann_6 :: T_PatExpr_6
+                                                                                                                                                                                                             sem_PatExpr_Ann_6 =
+                                                                                                                                                                                                                 (\ _lhsIfiOpts
+                                                                                                                                                                                                                    _lhsIinclVarBind
+                                                                                                                                                                                                                    _lhsIknTy
+                                                                                                                                                                                                                    _lhsIknTyL
+                                                                                                                                                                                                                    _lhsIpatTyVarMp
+                                                                                                                                                                                                                    _lhsItySigGam ->
+                                                                                                                                                                                                                      _lhsIfiOpts `seq`
+                                                                                                                                                                                                                      (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                       (_lhsIknTy `seq`
+                                                                                                                                                                                                                        (_lhsIknTyL `seq`
+                                                                                                                                                                                                                         (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                          (_lhsItySigGam `seq`
+                                                                                                                                                                                                                           ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                             { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                             (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                              { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsIknTyL) of
+                                                                                                                                                                                                                               { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsIknTy) of
+                                                                                                                                                                                                                                { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                 { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                  { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                  (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                   { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                       (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                        { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                         { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                         (case ((let sem_PatExpr_Ann_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                     sem_PatExpr_Ann_7 =
+                                                                                                                                                                                                                                                         (\ _lhsIchrStore
+                                                                                                                                                                                                                                                            _lhsIclDfGam
+                                                                                                                                                                                                                                                            _lhsItvKiVarMp
+                                                                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                            _lhsItyVarMp
+                                                                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                              _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                              (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                               (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                 (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                  (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                   ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                     { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                      { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                       { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                        { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                         { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                          { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                           { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                               (case (_patExprIcpNm) of
+                                                                                                                                                                                                                                                                                { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                 { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                  { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                   { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_patExprIty) of
+                                                                                                                                                                                                                                                                                    { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case ((let sem_PatExpr_Ann_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                 sem_PatExpr_Ann_8 =
+                                                                                                                                                                                                                                                                                                     (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                        _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                        _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                        _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                        _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                        _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                        _lhsItr
+                                                                                                                                                                                                                                                                                                        _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                          _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                          (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                           (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                   (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                    ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                      { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                       { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                        { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                         { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                          { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                           { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                            { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                             { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                              { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                               { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                 { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                     (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                                                                                                                       { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_patExprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                                                                                                             { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (False) of
+                                                                                                                                                                                                                                                                                                                                                { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                 { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_patExprIrpat) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                             in  sem_PatExpr_Ann_8)) of
+                                                                                                                                                                                                                                                                                      { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                      ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                 in  sem_PatExpr_Ann_7)) of
+                                                                                                                                                                                                                                          { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                          ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                         in  sem_PatExpr_Ann_6)) of
+                                                                                                                                                                                                  { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                  ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                         in  sem_PatExpr_Ann_5)) of
+                                                                                                                                                                  { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                  ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_Ann_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_Ann_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_Ann_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_Ann_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_TypeAs :: Range ->
+                      T_TyExpr ->
+                      T_PatExpr ->
+                      T_PatExpr
+
+sem_PatExpr_TypeAs hsrange_ tyExpr_ patExpr_ | hsrange_ `seq` (tyExpr_ `seq` (patExpr_ `seq` (True))) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (tyExpr_) of
+          { ( _tyExprIrange,tyExpr_1) | True ->
+              (case (rangeUnions [hsrange_, _tyExprIrange , _patExprIrange
+                                                                         ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_PatExpr_TypeAs_1 :: T_PatExpr_1
+                            sem_PatExpr_TypeAs_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_4_fo) -> (__cont,lUniq,lUniq_4_fo)}} )) of
+                                       { __tup195 | __tup195 `seq` (True) ->
+                                       (case (__tup195) of
+                                        { (_tyExprOgUniq,_,_) | _tyExprOgUniq `seq` (True) ->
+                                        (case (tyExpr_1 _tyExprOgUniq) of
+                                         { ( _tyExprIgUniq,tyExpr_2) | True ->
+                                             (case (_tyExprIgUniq) of
+                                              { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
+                                              (case (patExpr_1 _patExprOgUniq) of
+                                               { ( _patExprIgUniq,patExpr_2) | True ->
+                                                   (case (_patExprIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_PatExpr_TypeAs_2 :: T_PatExpr_2
+                                                                sem_PatExpr_TypeAs_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                               (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                                { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                                    (case (_patExprIpredSameScopeCounter) of
+                                                                                     { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case ((let sem_PatExpr_TypeAs_3 :: T_PatExpr_3
+                                                                                                 sem_PatExpr_TypeAs_3 =
+                                                                                                     (\ _lhsIgenerDataInfoMp
+                                                                                                        _lhsIkiVarMp
+                                                                                                        _lhsIopts
+                                                                                                        _lhsIpolGam
+                                                                                                        _lhsIpolVarMp
+                                                                                                        _lhsIpredScope
+                                                                                                        _lhsItyGam
+                                                                                                        _lhsItyKiGam
+                                                                                                        _lhsItyKiGlobFreeTvarS ->
+                                                                                                          _lhsIgenerDataInfoMp `seq`
+                                                                                                          (_lhsIkiVarMp `seq`
+                                                                                                           (_lhsIopts `seq`
+                                                                                                            (_lhsIpolGam `seq`
+                                                                                                             (_lhsIpolVarMp `seq`
+                                                                                                              (_lhsIpredScope `seq`
+                                                                                                               (_lhsItyGam `seq`
+                                                                                                                (_lhsItyKiGam `seq`
+                                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                  ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                    { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                    (case (_lhsItyKiGam) of
+                                                                                                                     { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
+                                                                                                                     (case (_lhsItyGam) of
+                                                                                                                      { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
+                                                                                                                      (case (_lhsIpolVarMp) of
+                                                                                                                       { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
+                                                                                                                       (case (_lhsIpolGam) of
+                                                                                                                        { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
+                                                                                                                        (case (polCovariant) of
+                                                                                                                         { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
+                                                                                                                         (case (tyExpr_2 _tyExprOtyGam) of
+                                                                                                                          { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
+                                                                                                                              (case (tyExpr_3 _tyExprOknPolCtx) of
+                                                                                                                               { ( _tyExprIpolVarL,tyExpr_4) | True ->
+                                                                                                                                   (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
+                                                                                                                                    { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
+                                                                                                                                        (case (tyExpr_5 _tyExprOtyKiGam) of
+                                                                                                                                         { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
+                                                                                                                                             (case (_tyExprItyKiGam) of
+                                                                                                                                              { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                                                              (case (_tyExprItyGam) of
+                                                                                                                                               { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                                { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                                                                (case (_tyExprIpolVarMp) of
+                                                                                                                                                 { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                                                                 (case (_lhsIpolGam) of
+                                                                                                                                                  { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                                                                  (case (_lhsIopts) of
+                                                                                                                                                   { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                                                                   (case (_lhsIkiVarMp) of
+                                                                                                                                                    { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                    (case (tyExpr_6 _tyExprOkiVarMp) of
+                                                                                                                                                     { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
+                                                                                                                                                         (case (_tyExprIkiVarMp) of
+                                                                                                                                                          { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                                           { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                           (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                                                            { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                                                                (case (_patExprIgenerDataInfoMp) of
+                                                                                                                                                                 { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                                 (case (_patExprIkiVarMp) of
+                                                                                                                                                                  { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                  (case (_patExprIpolVarMp) of
+                                                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                                   (case (_patExprItyGam) of
+                                                                                                                                                                    { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                                                                    (case (_patExprItyKiGam) of
+                                                                                                                                                                     { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                     (case ((let sem_PatExpr_TypeAs_4 :: T_PatExpr_4
+                                                                                                                                                                                 sem_PatExpr_TypeAs_4 =
+                                                                                                                                                                                     (\ _lhsIclGam
+                                                                                                                                                                                        _lhsIdataGam
+                                                                                                                                                                                        _lhsIfinKiVarMp
+                                                                                                                                                                                        _lhsIfinTyKiGam
+                                                                                                                                                                                        _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                          _lhsIclGam `seq`
+                                                                                                                                                                                          (_lhsIdataGam `seq`
+                                                                                                                                                                                           (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                              ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                 { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                  { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                  (case (_lhsIdataGam) of
+                                                                                                                                                                                                   { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                                                                   (case (_lhsIclGam) of
+                                                                                                                                                                                                    { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                                                                    (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                     { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                                                                         (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                                                          { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                          (case (_patExprItopNm) of
+                                                                                                                                                                                                           { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                                                           (case ((let sem_PatExpr_TypeAs_5 :: T_PatExpr_5
+                                                                                                                                                                                                                       sem_PatExpr_TypeAs_5 =
+                                                                                                                                                                                                                           (\ _lhsIvalGam ->
+                                                                                                                                                                                                                                _lhsIvalGam `seq`
+                                                                                                                                                                                                                                ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                                  { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                  (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                                                                   { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                                                                       (case (_patExprIarity) of
+                                                                                                                                                                                                                                        { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                                                                        (case (Nothing) of
+                                                                                                                                                                                                                                         { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                                                                         (case (_mbTopNm) of
+                                                                                                                                                                                                                                          { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                                                          (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                                                           { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                                                           (case ((let sem_PatExpr_TypeAs_6 :: T_PatExpr_6
+                                                                                                                                                                                                                                                       sem_PatExpr_TypeAs_6 =
+                                                                                                                                                                                                                                                           (\ _lhsIfiOpts
+                                                                                                                                                                                                                                                              _lhsIinclVarBind
+                                                                                                                                                                                                                                                              _lhsIknTy
+                                                                                                                                                                                                                                                              _lhsIknTyL
+                                                                                                                                                                                                                                                              _lhsIpatTyVarMp
+                                                                                                                                                                                                                                                              _lhsItySigGam ->
+                                                                                                                                                                                                                                                                _lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                                                                 (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                  (_lhsIknTyL `seq`
+                                                                                                                                                                                                                                                                   (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                                                    (_lhsItySigGam `seq`
+                                                                                                                                                                                                                                                                     ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                                       { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIknTyL) of
+                                                                                                                                                                                                                                                                        { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                                                         { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                          { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (__tup195) of
+                                                                                                                                                                                                                                                                           { (_,_,_lUniq_4_fo) | _lUniq_4_fo `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_tyExprIty) of
+                                                                                                                                                                                                                                                                            { _ty_q_ | _ty_q_ `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                       { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                       , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                       , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                       , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                       , feRange = _range
+                                                                                                                                                                                                                                                                                       }) of
+                                                                                                                                                                                                                                                                             { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (fitsIn _lhsIfiOpts _fe _lUniq_4_fo _lhsIpatTyVarMp _lhsIknTy _ty_q_) of
+                                                                                                                                                                                                                                                                              { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (foTy _fo_) of
+                                                                                                                                                                                                                                                                               { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                                                                 { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                                                                     (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                      { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                                                                       { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case ((let sem_PatExpr_TypeAs_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                                                                   sem_PatExpr_TypeAs_7 =
+                                                                                                                                                                                                                                                                                                       (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                                                          _lhsIclDfGam
+                                                                                                                                                                                                                                                                                                          _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                          _lhsItyVarMp
+                                                                                                                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                                            _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                 ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                   { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                                    { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                     { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                      { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                       { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                        { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                         { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                             (case (_patExprIcpNm) of
+                                                                                                                                                                                                                                                                                                                              { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                                                               { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                                { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                                                                 { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_patExprIty) of
+                                                                                                                                                                                                                                                                                                                                  { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                   { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case ((let sem_PatExpr_TypeAs_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                                                               sem_PatExpr_TypeAs_8 =
+                                                                                                                                                                                                                                                                                                                                                   (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                      _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                                                                      _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                      _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                      _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                      _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                      _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                      _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                      _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                      _lhsItr
+                                                                                                                                                                                                                                                                                                                                                      _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                                                        _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                        (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                                                                         (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                          (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                           (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                            (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                             (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                              (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                               (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                                (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                                 (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                  ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                    { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                     { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                      { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                       { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                        { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                         { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                          { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                           { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                            { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                                                             { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                              { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                              (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                               { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                                                                                                                                                                                     { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                          { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                           { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                            { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                             { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                                                                                                { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (_tyExprIallErrSq `Seq.union` _patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                             (case (_patExprIpp >#< "::" >#< _tyExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                               (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                (case (rngLift _range mkNestErr' _pp [ _patExprIerrSq, _tyExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                                                                     , foErrSq _fo_
+                                                                                                                                                                                                                                                                                                                                                                                                                                                     ]) of
+                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                 (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_tyExprIgathMentrelFilterMp `mentrelFilterMpUnion` _patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                    (case (False) of
+                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                     (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_patExprIrpat) of
+                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_tyExprItrpp >< _patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                                                           in  sem_PatExpr_TypeAs_8)) of
+                                                                                                                                                                                                                                                                                                                                    { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                                    ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                                               in  sem_PatExpr_TypeAs_7)) of
+                                                                                                                                                                                                                                                                                        { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                                                                        ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                   in  sem_PatExpr_TypeAs_6)) of
+                                                                                                                                                                                                                                            { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                                                            ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                                                                   in  sem_PatExpr_TypeAs_5)) of
+                                                                                                                                                                                                            { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                                                            ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                             in  sem_PatExpr_TypeAs_4)) of
+                                                                                                                                                                      { ( sem_PatExpr_4) | True ->
+                                                                                                                                                                      ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                             in  sem_PatExpr_TypeAs_3)) of
+                                                                                      { ( sem_PatExpr_3) | True ->
+                                                                                      ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                            in  sem_PatExpr_TypeAs_2)) of
+                                                     { ( sem_PatExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) }) }) })))
+                        in  sem_PatExpr_TypeAs_1)) of
+                 { ( sem_PatExpr_1) | True ->
+                 ( _lhsOrange,sem_PatExpr_1) }) }) }) }) })
+
+sem_PatExpr_SConst :: Range ->
+                      String ->
+                      T_PatExpr
+
+sem_PatExpr_SConst hsrange_ str_ | hsrange_ `seq` (str_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_PatExpr_SConst_1 :: T_PatExpr_1
+                  sem_PatExpr_SConst_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup196 | __tup196 `seq` (True) ->
+                             (case (__tup196) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_PatExpr_SConst_2 :: T_PatExpr_2
+                                          sem_PatExpr_SConst_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_PatExpr_SConst_3 :: T_PatExpr_3
+                                                                   sem_PatExpr_SConst_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_PatExpr_SConst_4 :: T_PatExpr_4
+                                                                                                      sem_PatExpr_SConst_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                   ((case (Seq.empty) of
+                                                                                                                     { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                     (case (__tup196) of
+                                                                                                                      { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                      (case (uidHNm _lUniq) of
+                                                                                                                       { _topNm | _topNm `seq` (True) ->
+                                                                                                                       (case (_topNm) of
+                                                                                                                        { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                        (case ((let sem_PatExpr_SConst_5 :: T_PatExpr_5
+                                                                                                                                    sem_PatExpr_SConst_5 =
+                                                                                                                                        (\ _lhsIvalGam ->
+                                                                                                                                             _lhsIvalGam `seq`
+                                                                                                                                             ((case (0) of
+                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                               (case (Nothing) of
+                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                 (case (Ty_Any) of
+                                                                                                                                                  { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                  (case ((let sem_PatExpr_SConst_6 :: T_PatExpr_6
+                                                                                                                                                              sem_PatExpr_SConst_6 =
+                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                     _lhsIinclVarBind
+                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                     _lhsIknTyL
+                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                     _lhsItySigGam ->
+                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                       (_lhsIinclVarBind `seq`
+                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                         (_lhsIknTyL `seq`
+                                                                                                                                                                          (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                           (_lhsItySigGam `seq`
+                                                                                                                                                                            ((case (tyString _lhsIopts) of
+                                                                                                                                                                              { _constTy | _constTy `seq` (True) ->
+                                                                                                                                                                              (case (defaultFIEnv
+                                                                                                                                                                                         { feEHCOpts = _lhsIopts
+                                                                                                                                                                                         , fePredScope = _lhsIpredScope
+                                                                                                                                                                                         , feTyGam = _lhsItyGam
+                                                                                                                                                                                         , fePolGam = _lhsIpolGam
+                                                                                                                                                                                         , feRange = _range
+                                                                                                                                                                                         }) of
+                                                                                                                                                                               { _fe | _fe `seq` (True) ->
+                                                                                                                                                                               (case (fitsIn _lhsIfiOpts _fe _lUniq _lhsIpatTyVarMp _lhsIknTy _constTy) of
+                                                                                                                                                                                { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                 { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                 (case (_lhsIvalGam) of
+                                                                                                                                                                                  { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                  (case ((let sem_PatExpr_SConst_7 :: T_PatExpr_7
+                                                                                                                                                                                              sem_PatExpr_SConst_7 =
+                                                                                                                                                                                                  (\ _lhsIchrStore
+                                                                                                                                                                                                     _lhsIclDfGam
+                                                                                                                                                                                                     _lhsItvKiVarMp
+                                                                                                                                                                                                     _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                     _lhsItyVarMp
+                                                                                                                                                                                                     _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                       _lhsIchrStore `seq`
+                                                                                                                                                                                                       (_lhsIclDfGam `seq`
+                                                                                                                                                                                                        (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                         (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                          (_lhsItyVarMp `seq`
+                                                                                                                                                                                                           (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                            ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                              { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                              (case (_cpNm) of
+                                                                                                                                                                                                               { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                               (case (Map.empty) of
+                                                                                                                                                                                                                { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                (case (Map.empty) of
+                                                                                                                                                                                                                 { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                 (case (emptyGam) of
+                                                                                                                                                                                                                  { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                  (case (_constTy) of
+                                                                                                                                                                                                                   { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                   (case (_ty) of
+                                                                                                                                                                                                                    { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                    (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                     { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                     (case ((let sem_PatExpr_SConst_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                 sem_PatExpr_SConst_8 =
+                                                                                                                                                                                                                                     (\ _lhsIcSubst
+                                                                                                                                                                                                                                        _lhsIceParentNm
+                                                                                                                                                                                                                                        _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                        _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                        _lhsIfinTyVarMp
+                                                                                                                                                                                                                                        _lhsIfinValGam
+                                                                                                                                                                                                                                        _lhsImoduleNm
+                                                                                                                                                                                                                                        _lhsIrangeMp
+                                                                                                                                                                                                                                        _lhsIsysfEnv
+                                                                                                                                                                                                                                        _lhsItr
+                                                                                                                                                                                                                                        _lhsItySigVarMp ->
+                                                                                                                                                                                                                                          _lhsIcSubst `seq`
+                                                                                                                                                                                                                                          (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                           (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                            (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                              (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                   (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                    ((case (Seq.empty) of
+                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                                       { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (hsnUnknown) of
+                                                                                                                                                                                                                                                        { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (pp (show str_)) of
+                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_pp) of
+                                                                                                                                                                                                                                                          { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (Seq.empty) of
+                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                             { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (Map.empty) of
+                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (emptyVarMp) of
+                                                                                                                                                                                                                                                               { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (False) of
+                                                                                                                                                                                                                                                                { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                 { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                   { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                    { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                     { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                      { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (RPat_Int _cpNm _acorety (-1)) of
+                                                                                                                                                                                                                                                                       { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_rpat) of
+                                                                                                                                                                                                                                                                        { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (trppEmpty) of
+                                                                                                                                                                                                                                                                         { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                                          { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                             in  sem_PatExpr_SConst_8)) of
+                                                                                                                                                                                                                      { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                      ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                          in  sem_PatExpr_SConst_7)) of
+                                                                                                                                                                                   { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                   ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }))))))))
+                                                                                                                                                          in  sem_PatExpr_SConst_6)) of
+                                                                                                                                                   { ( sem_PatExpr_6) | True ->
+                                                                                                                                                   ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                in  sem_PatExpr_SConst_5)) of
+                                                                                                                         { ( sem_PatExpr_5) | True ->
+                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) })))))))
+                                                                                                  in  sem_PatExpr_SConst_4)) of
+                                                                                           { ( sem_PatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) })))))))))))
+                                                               in  sem_PatExpr_SConst_3)) of
+                                                        { ( sem_PatExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) })))))
+                                      in  sem_PatExpr_SConst_2)) of
+                               { ( sem_PatExpr_2) | True ->
+                               ( _lhsOgUniq,sem_PatExpr_2) }) }) })))
+              in  sem_PatExpr_SConst_1)) of
+       { ( sem_PatExpr_1) | True ->
+       ( _lhsOrange,sem_PatExpr_1) }) }) })
+
+sem_PatExpr_Rec :: Range ->
+                   T_RecPatExpr ->
+                   T_PatExpr
+
+sem_PatExpr_Rec hsrange_ recPatExpr_ | hsrange_ `seq` (recPatExpr_ `seq` (True)) =
+    (case (recPatExpr_) of
+     { ( _recPatExprIrange,recPatExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _recPatExprIrange
+                                                     , _recPatExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_Rec_1 :: T_PatExpr_1
+                       sem_PatExpr_Rec_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup197 | __tup197 `seq` (True) ->
+                                  (case (__tup197) of
+                                   { (_recPatExprOgUniq,_) | _recPatExprOgUniq `seq` (True) ->
+                                   (case (recPatExpr_1 _recPatExprOgUniq) of
+                                    { ( _recPatExprIgUniq,recPatExpr_2) | True ->
+                                        (case (_recPatExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_Rec_2 :: T_PatExpr_2
+                                                     sem_PatExpr_Rec_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _recPatExprOpredSameScopeCounter | _recPatExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _recPatExprOlexLev | _recPatExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _recPatExprOkiGam | _recPatExprOkiGam `seq` (True) ->
+                                                                    (case (recPatExpr_2 _recPatExprOkiGam _recPatExprOlexLev _recPatExprOpredSameScopeCounter) of
+                                                                     { ( _recPatExprIpredSameScopeCounter,recPatExpr_3) | True ->
+                                                                         (case (_recPatExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_Rec_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_Rec_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _recPatExprOtyKiGlobFreeTvarS | _recPatExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _recPatExprOtyKiGam | _recPatExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _recPatExprOtyGam | _recPatExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _recPatExprOpredScope | _recPatExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _recPatExprOpolVarMp | _recPatExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _recPatExprOpolGam | _recPatExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _recPatExprOopts | _recPatExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _recPatExprOkiVarMp | _recPatExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _recPatExprOgenerDataInfoMp | _recPatExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (recPatExpr_3 _recPatExprOgenerDataInfoMp _recPatExprOkiVarMp _recPatExprOopts _recPatExprOpolGam _recPatExprOpolVarMp _recPatExprOpredScope _recPatExprOtyGam _recPatExprOtyKiGam _recPatExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _recPatExprIgenerDataInfoMp,_recPatExprIkiVarMp,_recPatExprIpolVarMp,_recPatExprItyGam,_recPatExprItyKiGam,recPatExpr_4) | True ->
+                                                                                                                      (case (_recPatExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_recPatExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_recPatExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_recPatExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_recPatExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_Rec_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_Rec_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _recPatExprOtyTyTySigFreeTvarS | _recPatExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _recPatExprOfinTyKiGam | _recPatExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _recPatExprOfinKiVarMp | _recPatExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _recPatExprOdataGam | _recPatExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _recPatExprOclGam | _recPatExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (positionalFldNames) of
+                                                                                                                                                           { _recPatExprOpositionalFldNmL | _recPatExprOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                           (case (recPatExpr_4 _recPatExprOclGam _recPatExprOdataGam _recPatExprOfinKiVarMp _recPatExprOfinTyKiGam _recPatExprOpositionalFldNmL _recPatExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                            { ( _recPatExprIchrInstDeclSq,_recPatExprIhasAFldRef,_recPatExprIpositionalFldNmL,recPatExpr_5) | True ->
+                                                                                                                                                                (case (_recPatExprIchrInstDeclSq) of
+                                                                                                                                                                 { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                 (case (__tup197) of
+                                                                                                                                                                  { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                                  (case (uidHNm _lUniq) of
+                                                                                                                                                                   { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                   (case (_topNm) of
+                                                                                                                                                                    { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                    (case ((let sem_PatExpr_Rec_5 :: T_PatExpr_5
+                                                                                                                                                                                sem_PatExpr_Rec_5 =
+                                                                                                                                                                                    (\ _lhsIvalGam ->
+                                                                                                                                                                                         _lhsIvalGam `seq`
+                                                                                                                                                                                         ((case (0) of
+                                                                                                                                                                                           { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                           (case (Nothing) of
+                                                                                                                                                                                            { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                            (case (_mbTopNm) of
+                                                                                                                                                                                             { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                             (case (Ty_Any) of
+                                                                                                                                                                                              { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                              (case ((let sem_PatExpr_Rec_6 :: T_PatExpr_6
+                                                                                                                                                                                                          sem_PatExpr_Rec_6 =
+                                                                                                                                                                                                              (\ _lhsIfiOpts
+                                                                                                                                                                                                                 _lhsIinclVarBind
+                                                                                                                                                                                                                 _lhsIknTy
+                                                                                                                                                                                                                 _lhsIknTyL
+                                                                                                                                                                                                                 _lhsIpatTyVarMp
+                                                                                                                                                                                                                 _lhsItySigGam ->
+                                                                                                                                                                                                                   _lhsIfiOpts `seq`
+                                                                                                                                                                                                                   (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                    (_lhsIknTy `seq`
+                                                                                                                                                                                                                     (_lhsIknTyL `seq`
+                                                                                                                                                                                                                      (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                       (_lhsItySigGam `seq`
+                                                                                                                                                                                                                        ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                          { _recPatExprOvalGam | _recPatExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                          (case (_lhsItySigGam) of
+                                                                                                                                                                                                                           { _recPatExprOtySigGam | _recPatExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                           (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                            { _recPatExprOpatTyVarMp | _recPatExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                            (case (_lhsIknTy) of
+                                                                                                                                                                                                                             { _recPatExprOknTy | _recPatExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                             (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                              { _recPatExprOfiOpts | _recPatExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                              (case (_recPatExprIhasAFldRef) of
+                                                                                                                                                                                                                               { _recPatExprOmatchOnFld | _recPatExprOmatchOnFld `seq` (True) ->
+                                                                                                                                                                                                                               (case (recPatExpr_5 _recPatExprOfiOpts _recPatExprOknTy _recPatExprOmatchOnFld _recPatExprOpatTyVarMp _recPatExprOtySigGam _recPatExprOvalGam) of
+                                                                                                                                                                                                                                { ( _recPatExprIpatTyVarMp,_recPatExprIvalGam,recPatExpr_6) | True ->
+                                                                                                                                                                                                                                    (case (_recPatExprIpatTyVarMp) of
+                                                                                                                                                                                                                                     { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                     (case (_recPatExprIvalGam) of
+                                                                                                                                                                                                                                      { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                      (case ((let sem_PatExpr_Rec_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                  sem_PatExpr_Rec_7 =
+                                                                                                                                                                                                                                                      (\ _lhsIchrStore
+                                                                                                                                                                                                                                                         _lhsIclDfGam
+                                                                                                                                                                                                                                                         _lhsItvKiVarMp
+                                                                                                                                                                                                                                                         _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                         _lhsItyVarMp
+                                                                                                                                                                                                                                                         _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                           _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                           (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                            (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                              (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                                  { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_cpNm) of
+                                                                                                                                                                                                                                                                   { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _recPatExprOvalTyGlobFreeTvarS | _recPatExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                     { _recPatExprOtyVarMp | _recPatExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                      { _recPatExprOtyTyGlobFreeTvarS | _recPatExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                       { _recPatExprOtvKiVarMp | _recPatExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                        { _recPatExprOclDfGam | _recPatExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                         { _recPatExprOchrStore | _recPatExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (recPatExpr_6 _recPatExprOchrStore _recPatExprOclDfGam _recPatExprOtvKiVarMp _recPatExprOtyTyGlobFreeTvarS _recPatExprOtyVarMp _recPatExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                          { ( _recPatExprIgathCnstrMp,_recPatExprIgathRangeMp,_recPatExprIscopeGam,_recPatExprIty,_recPatExprItyVarMp,recPatExpr_7) | True ->
+                                                                                                                                                                                                                                                                              (case (_recPatExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                               { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_recPatExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_recPatExprIscopeGam) of
+                                                                                                                                                                                                                                                                                 { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_recPatExprIty) of
+                                                                                                                                                                                                                                                                                  { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_ty) of
+                                                                                                                                                                                                                                                                                   { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_recPatExprItyVarMp) of
+                                                                                                                                                                                                                                                                                    { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case ((let sem_PatExpr_Rec_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                sem_PatExpr_Rec_8 =
+                                                                                                                                                                                                                                                                                                    (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                       _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                       _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                       _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                       _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                       _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                       _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                       _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                       _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                       _lhsItr
+                                                                                                                                                                                                                                                                                                       _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                         _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                         (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                          (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                           (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                   ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                     { _recPatExprOsysfEnv | _recPatExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                      { _recPatExprOrangeMp | _recPatExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                       { _recPatExprOfinValGam | _recPatExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                        { _recPatExprOfinTyVarMp | _recPatExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                         { _recPatExprOtySigVarMp | _recPatExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                          { _recPatExprOtr | _recPatExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                           { _recPatExprOmoduleNm | _recPatExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                            { _recPatExprOchrScopeBindMp | _recPatExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                             { _recPatExprOchrEvidBindMp | _recPatExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                              { _recPatExprOceParentNm | _recPatExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                               { _recPatExprOcSubst | _recPatExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (recPatExpr_7 _recPatExprOcSubst _recPatExprOceParentNm _recPatExprOchrEvidBindMp _recPatExprOchrScopeBindMp _recPatExprOfinTyVarMp _recPatExprOfinValGam _recPatExprOmoduleNm _recPatExprOrangeMp _recPatExprOsysfEnv _recPatExprOtr _recPatExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                { ( _recPatExprIallErrSq,_recPatExprIcSubst,_recPatExprIerrSq,_recPatExprIextNm,_recPatExprIfsRPatL,_recPatExprIgathMentrelFilterMp,_recPatExprIgathTvKiVarMp,_recPatExprIpatCRest,_recPatExprIpp,_recPatExprIppL,_recPatExprItrpp,_recPatExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                    (case (_recPatExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (reverse _recPatExprIppL) of
+                                                                                                                                                                                                                                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_recPatExprIpp) of
+                                                                                                                                                                                                                                                                                                                                        { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_recPatExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                         { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_recPatExprIextNm) of
+                                                                                                                                                                                                                                                                                                                                          { _appFunNm | _appFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (ppAppTop  (hsnRec,mkPPAppFun _appFunNm _recPatExprIpp)
+                                                                                                                                                                                                                                                                                                                                                           (reverse _recPatExprIppL) _recPatExprIpp) of
+                                                                                                                                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (rngLift _range mkNestErr' _pp [_recPatExprIerrSq]) of
+                                                                                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_recPatExprIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                                             { _fsRPatL | _fsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_fsRPatL) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_recPatExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_recPatExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (False) of
+                                                                                                                                                                                                                                                                                                                                                 { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                  { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                                                                                                    { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                                                                                               { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                                                                                               , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                                                                                               , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                                                                                               , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                                                                                               , feRange = _range
+                                                                                                                                                                                                                                                                                                                                                               }) of
+                                                                                                                                                                                                                                                                                                                                                     { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                                                                                                      { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (fsL2PatOffsetL _lhsIopts $ rowCanonOrderBy compare $ _fsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                       { _rpatBinds | _rpatBinds `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_recPatExprIpatCRest) of
+                                                                                                                                                                                                                                                                                                                                                        { _rest | _rest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (CTagRec) of
+                                                                                                                                                                                                                                                                                                                                                         { _tag | _tag `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                                                                                          { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                                                                                           { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (case _rest of
+                                                                                                                                                                                                                                                                                                                                                                      CPatRest_Empty
+                                                                                                                                                                                                                                                                                                                                                                        ->  RPat_Con _cpNm _acorety _tag (RPatConBind_One _rest (map fst _rpatBinds))
+                                                                                                                                                                                                                                                                                                                                                                      CPatRest_Var r
+                                                                                                                                                                                                                                                                                                                                                                        ->  RPat_Con _cpNm _acorety _tag (RPatConBind_One _rest pbL)
+                                                                                                                                                                                                                                                                                                                                                                            where  pbL = map fst $ fsL2PatOffsetL _lhsIopts $ fsLReorder _lhsIopts $ reverse $ _fsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                            { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_recPatExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case ((emptyRCEEnv _lhsIopts) { rceValGam = _lhsIvalGam, rceDataGam = _lhsIdataGam, rceTyVarMp = _lhsIfinTyVarMp }) of
+                                                                                                                                                                                                                                                                                                                                                               { _rceEnv | _rceEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_recPatExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                { _valCBindLSub | _valCBindLSub `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (acoreRPatBindL2BindL _rceEnv (not $ null _valCBindLSub) _lhsIceParentNm _tag (Just (_rest,length _fsRPatL)) _rpatBinds) of
+                                                                                                                                                                                                                                                                                                                                                                 { _valCBindL | _valCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_valCBindL ++ _valCBindLSub) of
+                                                                                                                                                                                                                                                                                                                                                                  { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                            in  sem_PatExpr_Rec_8)) of
+                                                                                                                                                                                                                                                                                     { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                     ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                              in  sem_PatExpr_Rec_7)) of
+                                                                                                                                                                                                                                       { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                       ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                      in  sem_PatExpr_Rec_6)) of
+                                                                                                                                                                                               { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                               ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                                                            in  sem_PatExpr_Rec_5)) of
+                                                                                                                                                                     { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                     ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_Rec_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_Rec_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_Rec_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_Rec_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_DataFields :: Range ->
+                          T_DataFieldPatExpr ->
+                          T_PatExpr
+
+sem_PatExpr_DataFields hsrange_ dataFieldPatExpr_ | hsrange_ `seq` (dataFieldPatExpr_ `seq` (True)) =
+    (case (dataFieldPatExpr_) of
+     { ( _dataFieldPatExprIrange,dataFieldPatExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _dataFieldPatExprIrange
+                                                     , _dataFieldPatExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_DataFields_1 :: T_PatExpr_1
+                       sem_PatExpr_DataFields_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup199 | __tup199 `seq` (True) ->
+                                  (case (__tup199) of
+                                   { (_dataFieldPatExprOgUniq,_) | _dataFieldPatExprOgUniq `seq` (True) ->
+                                   (case (dataFieldPatExpr_1 _dataFieldPatExprOgUniq) of
+                                    { ( _dataFieldPatExprIgUniq,dataFieldPatExpr_2) | True ->
+                                        (case (_dataFieldPatExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_DataFields_2 :: T_PatExpr_2
+                                                     sem_PatExpr_DataFields_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _dataFieldPatExprOpredSameScopeCounter | _dataFieldPatExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _dataFieldPatExprOlexLev | _dataFieldPatExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _dataFieldPatExprOkiGam | _dataFieldPatExprOkiGam `seq` (True) ->
+                                                                    (case (dataFieldPatExpr_2 _dataFieldPatExprOkiGam _dataFieldPatExprOlexLev _dataFieldPatExprOpredSameScopeCounter) of
+                                                                     { ( _dataFieldPatExprIpredSameScopeCounter,dataFieldPatExpr_3) | True ->
+                                                                         (case (_dataFieldPatExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_DataFields_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_DataFields_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _dataFieldPatExprOtyKiGlobFreeTvarS | _dataFieldPatExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _dataFieldPatExprOtyKiGam | _dataFieldPatExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _dataFieldPatExprOtyGam | _dataFieldPatExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _dataFieldPatExprOpredScope | _dataFieldPatExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _dataFieldPatExprOpolVarMp | _dataFieldPatExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _dataFieldPatExprOpolGam | _dataFieldPatExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _dataFieldPatExprOopts | _dataFieldPatExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _dataFieldPatExprOkiVarMp | _dataFieldPatExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _dataFieldPatExprOgenerDataInfoMp | _dataFieldPatExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (dataFieldPatExpr_3 _dataFieldPatExprOgenerDataInfoMp _dataFieldPatExprOkiVarMp _dataFieldPatExprOopts _dataFieldPatExprOpolGam _dataFieldPatExprOpolVarMp _dataFieldPatExprOpredScope _dataFieldPatExprOtyGam _dataFieldPatExprOtyKiGam _dataFieldPatExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _dataFieldPatExprIgenerDataInfoMp,_dataFieldPatExprIkiVarMp,_dataFieldPatExprIpolVarMp,_dataFieldPatExprItyGam,_dataFieldPatExprItyKiGam,dataFieldPatExpr_4) | True ->
+                                                                                                                      (case (_dataFieldPatExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_dataFieldPatExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_dataFieldPatExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_dataFieldPatExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_dataFieldPatExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_DataFields_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_DataFields_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _dataFieldPatExprOtyTyTySigFreeTvarS | _dataFieldPatExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _dataFieldPatExprOfinTyKiGam | _dataFieldPatExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _dataFieldPatExprOfinKiVarMp | _dataFieldPatExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _dataFieldPatExprOdataGam | _dataFieldPatExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _dataFieldPatExprOclGam | _dataFieldPatExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (dataFieldPatExpr_4 _dataFieldPatExprOclGam _dataFieldPatExprOdataGam _dataFieldPatExprOfinKiVarMp _dataFieldPatExprOfinTyKiGam _dataFieldPatExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _dataFieldPatExprIchrInstDeclSq,dataFieldPatExpr_5) | True ->
+                                                                                                                                                               (case (_dataFieldPatExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (__tup199) of
+                                                                                                                                                                 { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                                 (case (uidHNm _lUniq) of
+                                                                                                                                                                  { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                  (case (_topNm) of
+                                                                                                                                                                   { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                   (case ((let sem_PatExpr_DataFields_5 :: T_PatExpr_5
+                                                                                                                                                                               sem_PatExpr_DataFields_5 =
+                                                                                                                                                                                   (\ _lhsIvalGam ->
+                                                                                                                                                                                        _lhsIvalGam `seq`
+                                                                                                                                                                                        ((case (0) of
+                                                                                                                                                                                          { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                          (case (Nothing) of
+                                                                                                                                                                                           { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                           (case (_mbTopNm) of
+                                                                                                                                                                                            { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                            (case (Ty_Any) of
+                                                                                                                                                                                             { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                             (case ((let sem_PatExpr_DataFields_6 :: T_PatExpr_6
+                                                                                                                                                                                                         sem_PatExpr_DataFields_6 =
+                                                                                                                                                                                                             (\ _lhsIfiOpts
+                                                                                                                                                                                                                _lhsIinclVarBind
+                                                                                                                                                                                                                _lhsIknTy
+                                                                                                                                                                                                                _lhsIknTyL
+                                                                                                                                                                                                                _lhsIpatTyVarMp
+                                                                                                                                                                                                                _lhsItySigGam ->
+                                                                                                                                                                                                                  _lhsIfiOpts `seq`
+                                                                                                                                                                                                                  (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                   (_lhsIknTy `seq`
+                                                                                                                                                                                                                    (_lhsIknTyL `seq`
+                                                                                                                                                                                                                     (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                      (_lhsItySigGam `seq`
+                                                                                                                                                                                                                       ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                         { _dataFieldPatExprOvalGam | _dataFieldPatExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                         (case (_lhsItySigGam) of
+                                                                                                                                                                                                                          { _dataFieldPatExprOtySigGam | _dataFieldPatExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                          (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                           { _dataFieldPatExprOpatTyVarMp | _dataFieldPatExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                           (case (_lhsIknTy) of
+                                                                                                                                                                                                                            { _dataFieldPatExprOknTy | _dataFieldPatExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                            (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                             { _dataFieldPatExprOfiOpts | _dataFieldPatExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                             (case (dataFieldPatExpr_5 _dataFieldPatExprOfiOpts _dataFieldPatExprOknTy _dataFieldPatExprOpatTyVarMp _dataFieldPatExprOtySigGam _dataFieldPatExprOvalGam) of
+                                                                                                                                                                                                                              { ( _dataFieldPatExprIpatTyVarMp,_dataFieldPatExprIvalGam,dataFieldPatExpr_6) | True ->
+                                                                                                                                                                                                                                  (case (_dataFieldPatExprIpatTyVarMp) of
+                                                                                                                                                                                                                                   { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                   (case (_dataFieldPatExprIvalGam) of
+                                                                                                                                                                                                                                    { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                    (case ((let sem_PatExpr_DataFields_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                sem_PatExpr_DataFields_7 =
+                                                                                                                                                                                                                                                    (\ _lhsIchrStore
+                                                                                                                                                                                                                                                       _lhsIclDfGam
+                                                                                                                                                                                                                                                       _lhsItvKiVarMp
+                                                                                                                                                                                                                                                       _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                       _lhsItyVarMp
+                                                                                                                                                                                                                                                       _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                         _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                         (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                              ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                                { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_cpNm) of
+                                                                                                                                                                                                                                                                 { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                  { _dataFieldPatExprOvalTyGlobFreeTvarS | _dataFieldPatExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                   { _dataFieldPatExprOtyVarMp | _dataFieldPatExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _dataFieldPatExprOtyTyGlobFreeTvarS | _dataFieldPatExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                     { _dataFieldPatExprOtvKiVarMp | _dataFieldPatExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                      { _dataFieldPatExprOclDfGam | _dataFieldPatExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                       { _dataFieldPatExprOchrStore | _dataFieldPatExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (dataFieldPatExpr_6 _dataFieldPatExprOchrStore _dataFieldPatExprOclDfGam _dataFieldPatExprOtvKiVarMp _dataFieldPatExprOtyTyGlobFreeTvarS _dataFieldPatExprOtyVarMp _dataFieldPatExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                        { ( _dataFieldPatExprIgathCnstrMp,_dataFieldPatExprIgathRangeMp,_dataFieldPatExprIscopeGam,_dataFieldPatExprIty,_dataFieldPatExprItyVarMp,dataFieldPatExpr_7) | True ->
+                                                                                                                                                                                                                                                                            (case (_dataFieldPatExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                             { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_dataFieldPatExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                              { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_dataFieldPatExprIscopeGam) of
+                                                                                                                                                                                                                                                                               { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_dataFieldPatExprIty) of
+                                                                                                                                                                                                                                                                                { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_ty) of
+                                                                                                                                                                                                                                                                                 { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_dataFieldPatExprItyVarMp) of
+                                                                                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case ((let sem_PatExpr_DataFields_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                              sem_PatExpr_DataFields_8 =
+                                                                                                                                                                                                                                                                                                  (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                     _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                     _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                     _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                     _lhsItr
+                                                                                                                                                                                                                                                                                                     _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                       _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                       (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                        (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                         (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                          (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                           (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                 ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                   { _dataFieldPatExprOsysfEnv | _dataFieldPatExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                    { _dataFieldPatExprOrangeMp | _dataFieldPatExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                     { _dataFieldPatExprOfinValGam | _dataFieldPatExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                      { _dataFieldPatExprOfinTyVarMp | _dataFieldPatExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                       { _dataFieldPatExprOtySigVarMp | _dataFieldPatExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                        { _dataFieldPatExprOtr | _dataFieldPatExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                         { _dataFieldPatExprOmoduleNm | _dataFieldPatExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                          { _dataFieldPatExprOchrScopeBindMp | _dataFieldPatExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                           { _dataFieldPatExprOchrEvidBindMp | _dataFieldPatExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                            { _dataFieldPatExprOceParentNm | _dataFieldPatExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                             { _dataFieldPatExprOcSubst | _dataFieldPatExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (dataFieldPatExpr_7 _dataFieldPatExprOcSubst _dataFieldPatExprOceParentNm _dataFieldPatExprOchrEvidBindMp _dataFieldPatExprOchrScopeBindMp _dataFieldPatExprOfinTyVarMp _dataFieldPatExprOfinValGam _dataFieldPatExprOmoduleNm _dataFieldPatExprOrangeMp _dataFieldPatExprOsysfEnv _dataFieldPatExprOtr _dataFieldPatExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                              { ( _dataFieldPatExprIallErrSq,_dataFieldPatExprIcSubst,_dataFieldPatExprIdti,_dataFieldPatExprIerrSq,_dataFieldPatExprIfldL,_dataFieldPatExprIfsRPatL,_dataFieldPatExprIgathMentrelFilterMp,_dataFieldPatExprIgathTvKiVarMp,_dataFieldPatExprIpatCRest,_dataFieldPatExprIpp,_dataFieldPatExprIppL,_dataFieldPatExprItrpp,_dataFieldPatExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldPatExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                                                                                                                    { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                     { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_dataFieldPatExprIpp >#< ppCurlysCommas' (reverse _dataFieldPatExprIppL)) of
+                                                                                                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                       { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_dataFieldPatExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_dataFieldPatExprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_dataFieldPatExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_dataFieldPatExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (False) of
+                                                                                                                                                                                                                                                                                                                                             { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                                                                                                { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                                                                                           { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                                                                                           , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                                                                                           , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                                                                                           , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                                                                                           , feRange = _range
+                                                                                                                                                                                                                                                                                                                                                           }) of
+                                                                                                                                                                                                                                                                                                                                                 { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                                                                                                  { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_dataFieldPatExprIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                   { _fsRPatL | _fsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (dtiCTag _dataFieldPatExprIdti) of
+                                                                                                                                                                                                                                                                                                                                                    { _tag | _tag `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (let fsL = reverse _fsRPatL
+                                                                                                                                                                                                                                                                                                                                                               grp = groupByOn (\o1 o2 -> (foffOffset o1 `compare` foffOffset o2) /= GT) fst
+                                                                                                                                                                                                                                                                                                                                                               max = ctagArity _tag - 1
+                                                                                                                                                                                                                                                                                                                                                               sat =
+                                                                                                                                                                                                                                                                                                                                                                     listSaturateWith 0 max (foffOffset . fst) $
+                                                                                                                                                                                                                                                                                                                                                                       (map (\(n,o) -> (fldInt o, (FldKnownOffset n (fldInt o),RPat_Var (RPatNmOrig n) (acoreTyErr $ "EH.ToCore.PatExpr.DataFields: " ++ show n) False))) (refGen 0 1 $ take (max+1) hsnLclSupply))
+                                                                                                                                                                                                                                                                                                                                                           in  ( map (fsL2PatOffsetL _lhsIopts . sat) $ grp fsL
+                                                                                                                                                                                                                                                                                                                                                               , fsL2PatOffsetL _lhsIopts fsL
+                                                                                                                                                                                                                                                                                                                                                               , fsL2PatOffsetL _lhsIopts $ sat []
+                                                                                                                                                                                                                                                                                                                                                               )) of
+                                                                                                                                                                                                                                                                                                                                                     { __tup198 | __tup198 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (__tup198) of
+                                                                                                                                                                                                                                                                                                                                                      { (_,_,_rpatBind0) | _rpatBind0 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (__tup198) of
+                                                                                                                                                                                                                                                                                                                                                       { (_rpatBindss,_,_) | _rpatBindss `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_dataFieldPatExprIpatCRest) of
+                                                                                                                                                                                                                                                                                                                                                        { _rest | _rest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                                                                                         { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                                                                                          { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (RPat_Con _cpNm _acorety _tag
+                                                                                                                                                                                                                                                                                                                                                                     (rpatConBindUnFlatten (RPatConBind_One _rest $ map fst _rpatBind0)
+                                                                                                                                                                                                                                                                                                                                                                      $ map (RPatConBind_One _rest . map fst)
+                                                                                                                                                                                                                                                                                                                                                                            _rpatBindss
+                                                                                                                                                                                                                                                                                                                                                                     )) of
+                                                                                                                                                                                                                                                                                                                                                           { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_dataFieldPatExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case ((emptyRCEEnv _lhsIopts) { rceValGam = _lhsIvalGam, rceDataGam = _lhsIdataGam, rceTyVarMp = _lhsIfinTyVarMp }) of
+                                                                                                                                                                                                                                                                                                                                                              { _rceEnv | _rceEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_dataFieldPatExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                               { _valCBindLSub | _valCBindLSub `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (__tup198) of
+                                                                                                                                                                                                                                                                                                                                                                { (_,_rpatBindsNonSat,_) | _rpatBindsNonSat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (acoreRPatBindL2BindL _rceEnv (not $ null _valCBindLSub) _lhsIceParentNm _tag (Just (_rest,ctagArity _tag)) _rpatBindsNonSat) of
+                                                                                                                                                                                                                                                                                                                                                                 { _valCBindL | _valCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_valCBindL ++ _valCBindLSub) of
+                                                                                                                                                                                                                                                                                                                                                                  { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                          in  sem_PatExpr_DataFields_8)) of
+                                                                                                                                                                                                                                                                                   { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                   ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                            in  sem_PatExpr_DataFields_7)) of
+                                                                                                                                                                                                                                     { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                     ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                     in  sem_PatExpr_DataFields_6)) of
+                                                                                                                                                                                              { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                              ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                                                           in  sem_PatExpr_DataFields_5)) of
+                                                                                                                                                                    { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                    ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_DataFields_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_DataFields_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_DataFields_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_DataFields_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_Irrefutable :: Range ->
+                           T_PatExpr ->
+                           T_PatExpr
+
+sem_PatExpr_Irrefutable hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_Irrefutable_1 :: T_PatExpr_1
+                       sem_PatExpr_Irrefutable_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup200 | __tup200 `seq` (True) ->
+                                  (case (__tup200) of
+                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
+                                   (case (patExpr_1 _patExprOgUniq) of
+                                    { ( _patExprIgUniq,patExpr_2) | True ->
+                                        (case (_patExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_Irrefutable_2 :: T_PatExpr_2
+                                                     sem_PatExpr_Irrefutable_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                         (case (_patExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_Irrefutable_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_Irrefutable_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                      (case (_patExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_patExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_patExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_Irrefutable_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_Irrefutable_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (_patExprItopNm) of
+                                                                                                                                                                 { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                 (case (_topNm) of
+                                                                                                                                                                  { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                  (case ((let sem_PatExpr_Irrefutable_5 :: T_PatExpr_5
+                                                                                                                                                                              sem_PatExpr_Irrefutable_5 =
+                                                                                                                                                                                  (\ _lhsIvalGam ->
+                                                                                                                                                                                       _lhsIvalGam `seq`
+                                                                                                                                                                                       ((case (_lhsIvalGam) of
+                                                                                                                                                                                         { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                         (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                          { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                              (case (_patExprIarity) of
+                                                                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                               (case (_patExprImbTopNm) of
+                                                                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                 (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                  { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                  (case ((let sem_PatExpr_Irrefutable_6 :: T_PatExpr_6
+                                                                                                                                                                                                              sem_PatExpr_Irrefutable_6 =
+                                                                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                                                                     _lhsIinclVarBind
+                                                                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                                                                     _lhsIknTyL
+                                                                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                                                                     _lhsItySigGam ->
+                                                                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                                                                       (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                                                                         (_lhsIknTyL `seq`
+                                                                                                                                                                                                                          (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                           (_lhsItySigGam `seq`
+                                                                                                                                                                                                                            ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                              { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                               { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsIknTyL) of
+                                                                                                                                                                                                                                { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIknTy) of
+                                                                                                                                                                                                                                 { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                  { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                   { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                   (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                    { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                        (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                         { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                         (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                          { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                          (case ((let sem_PatExpr_Irrefutable_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                      sem_PatExpr_Irrefutable_7 =
+                                                                                                                                                                                                                                                          (\ _lhsIchrStore
+                                                                                                                                                                                                                                                             _lhsIclDfGam
+                                                                                                                                                                                                                                                             _lhsItvKiVarMp
+                                                                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                             _lhsItyVarMp
+                                                                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                               _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                               (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                  (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                    ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                                      { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_cpNm) of
+                                                                                                                                                                                                                                                                       { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                        { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                         { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                          { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                           { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                            { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                             { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                              { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                  (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                   { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                    { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                     { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_patExprIty) of
+                                                                                                                                                                                                                                                                                      { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_ty) of
+                                                                                                                                                                                                                                                                                       { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                        { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case ((let sem_PatExpr_Irrefutable_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                    sem_PatExpr_Irrefutable_8 =
+                                                                                                                                                                                                                                                                                                        (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                           _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                           _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                           _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                           _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                           _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                           _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                           _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                           _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                           _lhsItr
+                                                                                                                                                                                                                                                                                                           _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                             _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                   (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                     (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                      (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                       ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                         { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                          { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                           { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                            { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                             { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                              { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                               { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                 { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                  { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                   { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                    { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                        (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case ("~" >|< _patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_patExprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (False) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp `varUpd` _ty) of
+                                                                                                                                                                                                                                                                                                                                                      { _finalTy | _finalTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                                                                                                 { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                                                                                                 , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                                                                                                 , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                                                                                                 , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                                                                                                 , feRange = _range
+                                                                                                                                                                                                                                                                                                                                                                 }) of
+                                                                                                                                                                                                                                                                                                                                                       { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (tyCanonicFFI (emptyTyBetaRedEnv' _fe) _finalTy) of
+                                                                                                                                                                                                                                                                                                                                                        { _finalTyExpanded | _finalTyExpanded `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case ((appDbg "{Expr,PatExpr,Decl,DataFieldExpr}.sysfty not implemented" :: SysfTy)) of
+                                                                                                                                                                                                                                                                                                                                                         { _sysfty | _sysfty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (mkCTy _lhsIopts _finalTyExpanded _sysfty) of
+                                                                                                                                                                                                                                                                                                                                                          { _acorety | _acorety `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (RPat_Irrefutable _cpNm _acorety _patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                           { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                in  sem_PatExpr_Irrefutable_8)) of
+                                                                                                                                                                                                                                                                                         { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                         ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                  in  sem_PatExpr_Irrefutable_7)) of
+                                                                                                                                                                                                                                           { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                           ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                          in  sem_PatExpr_Irrefutable_6)) of
+                                                                                                                                                                                                   { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                   ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                          in  sem_PatExpr_Irrefutable_5)) of
+                                                                                                                                                                   { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                   ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_Irrefutable_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_Irrefutable_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_Irrefutable_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_Irrefutable_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_Bang :: Range ->
+                    T_PatExpr ->
+                    T_PatExpr
+
+sem_PatExpr_Bang hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_Bang_1 :: T_PatExpr_1
+                       sem_PatExpr_Bang_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                                  { __tup201 | __tup201 `seq` (True) ->
+                                  (case (__tup201) of
+                                   { (_patExprOgUniq,_) | _patExprOgUniq `seq` (True) ->
+                                   (case (patExpr_1 _patExprOgUniq) of
+                                    { ( _patExprIgUniq,patExpr_2) | True ->
+                                        (case (_patExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_Bang_2 :: T_PatExpr_2
+                                                     sem_PatExpr_Bang_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                    (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                     { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                         (case (_patExprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_PatExpr_Bang_3 :: T_PatExpr_3
+                                                                                      sem_PatExpr_Bang_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                      (case (_patExprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_patExprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case (_patExprItyGam) of
+                                                                                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                          (case (_patExprItyKiGam) of
+                                                                                                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                           (case ((let sem_PatExpr_Bang_4 :: T_PatExpr_4
+                                                                                                                                       sem_PatExpr_Bang_4 =
+                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                              _lhsIdataGam
+                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                (_lhsIdataGam `seq`
+                                                                                                                                                 (_lhsIfinKiVarMp `seq`
+                                                                                                                                                  (_lhsIfinTyKiGam `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (_patExprItopNm) of
+                                                                                                                                                                 { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                 (case (_topNm) of
+                                                                                                                                                                  { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                  (case ((let sem_PatExpr_Bang_5 :: T_PatExpr_5
+                                                                                                                                                                              sem_PatExpr_Bang_5 =
+                                                                                                                                                                                  (\ _lhsIvalGam ->
+                                                                                                                                                                                       _lhsIvalGam `seq`
+                                                                                                                                                                                       ((case (_lhsIvalGam) of
+                                                                                                                                                                                         { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                         (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                          { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                              (case (_patExprIarity) of
+                                                                                                                                                                                               { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                               (case (_patExprImbTopNm) of
+                                                                                                                                                                                                { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                                (case (_mbTopNm) of
+                                                                                                                                                                                                 { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                 (case (_patExprIpatFunTy) of
+                                                                                                                                                                                                  { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                  (case ((let sem_PatExpr_Bang_6 :: T_PatExpr_6
+                                                                                                                                                                                                              sem_PatExpr_Bang_6 =
+                                                                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                                                                     _lhsIinclVarBind
+                                                                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                                                                     _lhsIknTyL
+                                                                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                                                                     _lhsItySigGam ->
+                                                                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                                                                       (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                                                                         (_lhsIknTyL `seq`
+                                                                                                                                                                                                                          (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                           (_lhsItySigGam `seq`
+                                                                                                                                                                                                                            ((case (_lhsItySigGam) of
+                                                                                                                                                                                                                              { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                               { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsIknTyL) of
+                                                                                                                                                                                                                                { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIknTy) of
+                                                                                                                                                                                                                                 { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIinclVarBind) of
+                                                                                                                                                                                                                                  { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                   { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                   (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                    { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                        (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                         { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                         (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                          { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                          (case ((let sem_PatExpr_Bang_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                                      sem_PatExpr_Bang_7 =
+                                                                                                                                                                                                                                                          (\ _lhsIchrStore
+                                                                                                                                                                                                                                                             _lhsIclDfGam
+                                                                                                                                                                                                                                                             _lhsItvKiVarMp
+                                                                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                             _lhsItyVarMp
+                                                                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                               _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                               (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                  (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                    ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                                      { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_cpNm) of
+                                                                                                                                                                                                                                                                       { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                        { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                         { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                          { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                           { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                            { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                             { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                              { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                  (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                                                   { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                    { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                     { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_patExprIty) of
+                                                                                                                                                                                                                                                                                      { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_ty) of
+                                                                                                                                                                                                                                                                                       { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                        { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case ((let sem_PatExpr_Bang_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                    sem_PatExpr_Bang_8 =
+                                                                                                                                                                                                                                                                                                        (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                           _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                           _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                           _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                           _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                           _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                           _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                           _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                           _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                           _lhsItr
+                                                                                                                                                                                                                                                                                                           _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                             _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                   (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                     (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                      (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                       ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                         { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                          { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                           { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                            { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                             { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                              { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                               { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                 { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                  { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                   { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                    { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                        (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case ("!" >|< _patExprIpp) of
+                                                                                                                                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_patExprIerrSq) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                  { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (True) of
+                                                                                                                                                                                                                                                                                                                                                   { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (case _patExprIrpat of
+                                                                                                                                                                                                                                                                                                                                                              r@(RPat_Var _ _ _) -> r {rcpMustEval = True}
+                                                                                                                                                                                                                                                                                                                                                              r                  -> r) of
+                                                                                                                                                                                                                                                                                                                                                      { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                       { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                         { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                in  sem_PatExpr_Bang_8)) of
+                                                                                                                                                                                                                                                                                         { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                         ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                  in  sem_PatExpr_Bang_7)) of
+                                                                                                                                                                                                                                           { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                           ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                          in  sem_PatExpr_Bang_6)) of
+                                                                                                                                                                                                   { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                   ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                          in  sem_PatExpr_Bang_5)) of
+                                                                                                                                                                   { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                   ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                   in  sem_PatExpr_Bang_4)) of
+                                                                                                                            { ( sem_PatExpr_4) | True ->
+                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                  in  sem_PatExpr_Bang_3)) of
+                                                                           { ( sem_PatExpr_3) | True ->
+                                                                           ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) })))))
+                                                 in  sem_PatExpr_Bang_2)) of
+                                          { ( sem_PatExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_PatExpr_2) }) }) }) }) })))
+                   in  sem_PatExpr_Bang_1)) of
+            { ( sem_PatExpr_1) | True ->
+            ( _lhsOrange,sem_PatExpr_1) }) }) }) })
+
+sem_PatExpr_Expr :: Range ->
+                    T_Expr ->
+                    (Maybe SrcConst) ->
+                    T_PatExpr
+
+sem_PatExpr_Expr hsrange_ expr_ mbConst_ | hsrange_ `seq` (expr_ `seq` (mbConst_ `seq` (True))) =
+    (case (expr_) of
+     { ( _exprIrange,expr_1) | True ->
+         (case (rangeUnions [hsrange_, _exprIrange   , _exprIrange  ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_PatExpr_Expr_1 :: T_PatExpr_1
+                       sem_PatExpr_Expr_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_97_fitsIn_ty) -> case nextUnique __cont of { (__cont, lUniq_cexpr) -> (__cont,lUniq,lUniq_97_fitsIn_ty,lUniq_cexpr)}}} )) of
+                                  { __tup204 | __tup204 `seq` (True) ->
+                                  (case (__tup204) of
+                                   { (_exprOgUniq,_,_,_) | _exprOgUniq `seq` (True) ->
+                                   (case (expr_1 _exprOgUniq) of
+                                    { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
+                                        (case (_exprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_PatExpr_Expr_2 :: T_PatExpr_2
+                                                     sem_PatExpr_Expr_2 =
+                                                         (\ _lhsIkiGam
+                                                            _lhsIlexLev
+                                                            _lhsIpredSameScopeCounter ->
+                                                              _lhsIkiGam `seq`
+                                                              (_lhsIlexLev `seq`
+                                                               (_lhsIpredSameScopeCounter `seq`
+                                                                ((case (_lhsIpredSameScopeCounter) of
+                                                                  { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
+                                                                  (case (_lhsIlexLev) of
+                                                                   { _exprOlexLev | _exprOlexLev `seq` (True) ->
+                                                                   (case (_lhsIkiGam) of
+                                                                    { _exprOkiGam | _exprOkiGam `seq` (True) ->
+                                                                    (case (True) of
+                                                                     { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
+                                                                     (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
+                                                                      { ( _exprIpredSameScopeCounter,expr_3) | True ->
+                                                                          (case (_exprIpredSameScopeCounter) of
+                                                                           { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                           (case ((let sem_PatExpr_Expr_3 :: T_PatExpr_3
+                                                                                       sem_PatExpr_Expr_3 =
+                                                                                           (\ _lhsIgenerDataInfoMp
+                                                                                              _lhsIkiVarMp
+                                                                                              _lhsIopts
+                                                                                              _lhsIpolGam
+                                                                                              _lhsIpolVarMp
+                                                                                              _lhsIpredScope
+                                                                                              _lhsItyGam
+                                                                                              _lhsItyKiGam
+                                                                                              _lhsItyKiGlobFreeTvarS ->
+                                                                                                _lhsIgenerDataInfoMp `seq`
+                                                                                                (_lhsIkiVarMp `seq`
+                                                                                                 (_lhsIopts `seq`
+                                                                                                  (_lhsIpolGam `seq`
+                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                    (_lhsIpredScope `seq`
+                                                                                                     (_lhsItyGam `seq`
+                                                                                                      (_lhsItyKiGam `seq`
+                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                        ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                          { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                          (case (_lhsItyKiGam) of
+                                                                                                           { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                           (case (_lhsItyGam) of
+                                                                                                            { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                            (case (_lhsIpredScope) of
+                                                                                                             { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                             (case (_lhsIpolVarMp) of
+                                                                                                              { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                              (case (_lhsIpolGam) of
+                                                                                                               { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                               (case (_lhsIopts) of
+                                                                                                                { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                                (case (_lhsIkiVarMp) of
+                                                                                                                 { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                 (case (_lhsIgenerDataInfoMp) of
+                                                                                                                  { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                  (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                   { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                       (case (_exprIgenerDataInfoMp) of
+                                                                                                                        { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                        (case (_exprIkiVarMp) of
+                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                         (case (_exprIpolVarMp) of
+                                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                          (case (_lhsItyGam) of
+                                                                                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                           (case (_lhsItyKiGam) of
+                                                                                                                            { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                            (case ((let sem_PatExpr_Expr_4 :: T_PatExpr_4
+                                                                                                                                        sem_PatExpr_Expr_4 =
+                                                                                                                                            (\ _lhsIclGam
+                                                                                                                                               _lhsIdataGam
+                                                                                                                                               _lhsIfinKiVarMp
+                                                                                                                                               _lhsIfinTyKiGam
+                                                                                                                                               _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                 _lhsIclGam `seq`
+                                                                                                                                                 (_lhsIdataGam `seq`
+                                                                                                                                                  (_lhsIfinKiVarMp `seq`
+                                                                                                                                                   (_lhsIfinTyKiGam `seq`
+                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                     ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                       { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinTyKiGam) of
+                                                                                                                                                        { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                        (case (_lhsIfinKiVarMp) of
+                                                                                                                                                         { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                         (case (_lhsIdataGam) of
+                                                                                                                                                          { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                          (case (_lhsIclGam) of
+                                                                                                                                                           { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                           (case (emptyGam) of
+                                                                                                                                                            { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                            (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                             { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                                 (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                  { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                      (case (_exprIchrInstDeclSq) of
+                                                                                                                                                                       { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                       (case (__tup204) of
+                                                                                                                                                                        { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                        (case (uidHNm _lUniq) of
+                                                                                                                                                                         { _topNm | _topNm `seq` (True) ->
+                                                                                                                                                                         (case (_topNm) of
+                                                                                                                                                                          { _lhsOtopNm | _lhsOtopNm `seq` (True) ->
+                                                                                                                                                                          (case ((let sem_PatExpr_Expr_5 :: T_PatExpr_5
+                                                                                                                                                                                      sem_PatExpr_Expr_5 =
+                                                                                                                                                                                          (\ _lhsIvalGam ->
+                                                                                                                                                                                               _lhsIvalGam `seq`
+                                                                                                                                                                                               ((case (0) of
+                                                                                                                                                                                                 { _lhsOarity | _lhsOarity `seq` (True) ->
+                                                                                                                                                                                                 (case (Nothing) of
+                                                                                                                                                                                                  { _mbTopNm | _mbTopNm `seq` (True) ->
+                                                                                                                                                                                                  (case (_mbTopNm) of
+                                                                                                                                                                                                   { _lhsOmbTopNm | _lhsOmbTopNm `seq` (True) ->
+                                                                                                                                                                                                   (case (Ty_Any) of
+                                                                                                                                                                                                    { _lhsOpatFunTy | _lhsOpatFunTy `seq` (True) ->
+                                                                                                                                                                                                    (case ((let sem_PatExpr_Expr_6 :: T_PatExpr_6
+                                                                                                                                                                                                                sem_PatExpr_Expr_6 =
+                                                                                                                                                                                                                    (\ _lhsIfiOpts
+                                                                                                                                                                                                                       _lhsIinclVarBind
+                                                                                                                                                                                                                       _lhsIknTy
+                                                                                                                                                                                                                       _lhsIknTyL
+                                                                                                                                                                                                                       _lhsIpatTyVarMp
+                                                                                                                                                                                                                       _lhsItySigGam ->
+                                                                                                                                                                                                                         _lhsIfiOpts `seq`
+                                                                                                                                                                                                                         (_lhsIinclVarBind `seq`
+                                                                                                                                                                                                                          (_lhsIknTy `seq`
+                                                                                                                                                                                                                           (_lhsIknTyL `seq`
+                                                                                                                                                                                                                            (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                             (_lhsItySigGam `seq`
+                                                                                                                                                                                                                              ((case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                 { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                 (case ((let sem_PatExpr_Expr_7 :: T_PatExpr_7
+                                                                                                                                                                                                                                             sem_PatExpr_Expr_7 =
+                                                                                                                                                                                                                                                 (\ _lhsIchrStore
+                                                                                                                                                                                                                                                    _lhsIclDfGam
+                                                                                                                                                                                                                                                    _lhsItvKiVarMp
+                                                                                                                                                                                                                                                    _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                    _lhsItyVarMp
+                                                                                                                                                                                                                                                    _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                      _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                      (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                       (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                         (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                           ((case (maybe (RPatNmUniq _topNm) RPatNmOrig _mbTopNm) of
+                                                                                                                                                                                                                                                             { _cpNm | _cpNm `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (_cpNm) of
+                                                                                                                                                                                                                                                              { _lhsOcpNm | _lhsOcpNm `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                               { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                  { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                   { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                    { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                     { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (__tup204) of
+                                                                                                                                                                                                                                                                      { (_,_,_lUniq_97_fitsIn_ty,_) | _lUniq_97_fitsIn_ty `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (mkTyVar _lUniq) of
+                                                                                                                                                                                                                                                                       { _knExprTy | _knExprTy `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (ehcOptBuiltin _lhsIopts ehbnClassEqFldEq) of
+                                                                                                                                                                                                                                                                        { _eqFldNm | _eqFldNm `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (valGamLookupTy _eqFldNm _lhsIvalGam) of
+                                                                                                                                                                                                                                                                         { __tup203 | __tup203 `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (__tup203) of
+                                                                                                                                                                                                                                                                          { (_eqTy,_) | _eqTy `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                     { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                     , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                     , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                     , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                     , feRange = _range
+                                                                                                                                                                                                                                                                                     }) of
+                                                                                                                                                                                                                                                                           { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (fitsIn strongFIOpts _fe _lUniq_97_fitsIn_ty _lhsItyVarMp
+                                                                                                                                                                                                                                                                                      _eqTy
+                                                                                                                                                                                                                                                                                      ([_knExprTy,_lhsIknTy] `appArr` (appCon $ ehcOptBuiltin _lhsIopts ehbnDataBool))) of
+                                                                                                                                                                                                                                                                            { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
+                                                                                                                                                                                                                                                                             { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_knExprTy) of
+                                                                                                                                                                                                                                                                              { _exprOknTy | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (foGathCnstrMp _fo_) of
+                                                                                                                                                                                                                                                                               { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                                                                    (case (cnstrMpUnions [_hereCnstrMp, _exprIgathCnstrMp]) of
+                                                                                                                                                                                                                                                                                     { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_exprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                      { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (emptyGam) of
+                                                                                                                                                                                                                                                                                       { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_exprIty) of
+                                                                                                                                                                                                                                                                                        { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                                                                         { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case ((let sem_PatExpr_Expr_8 :: T_PatExpr_8
+                                                                                                                                                                                                                                                                                                     sem_PatExpr_Expr_8 =
+                                                                                                                                                                                                                                                                                                         (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                            _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                            _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                            _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                            _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                            _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                            _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                            _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                            _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                            _lhsItr
+                                                                                                                                                                                                                                                                                                            _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                              _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                   (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                    (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                     (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                      (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                       (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                        ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                          { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                           { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                            { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                             { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                              { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                               { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                 { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                  { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                                                                   { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                                                                    { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                        (case (_exprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case ("`" >|< _exprIpp >|< "`") of
+                                                                                                                                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (__tup204) of
+                                                                                                                                                                                                                                                                                                                                              { (_,_,_,_lUniq_cexpr) | _lUniq_cexpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (acoreVar _eqFldNm) of
+                                                                                                                                                                                                                                                                                                                                               { _cexprBaseEq | _cexprBaseEq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (let (e,s) = foAppLRCoeAsSubst _lhsIopts _lUniq_cexpr _fo_ _lhsIfinTyVarMp _exprIcSubst _cexprBaseEq
+                                                                                                                                                                                                                                                                                                                                                      in  (acoreApp e [_exprIcexpr], s)) of
+                                                                                                                                                                                                                                                                                                                                                { __tup202 | __tup202 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (__tup202) of
+                                                                                                                                                                                                                                                                                                                                                 { (_,_cexprpatCSubst) | _cexprpatCSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (cSubstApp _exprIcSubst _cexprpatCSubst) of
+                                                                                                                                                                                                                                                                                                                                                  { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (__tup203) of
+                                                                                                                                                                                                                                                                                                                                                   { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (rngLift _range mkNestErr' _pp [ _exprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                        , Seq.fromList _nmErrs, foErrSq _fo_
+                                                                                                                                                                                                                                                                                                                                                                                        ]) of
+                                                                                                                                                                                                                                                                                                                                                    { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Val _eqFldNm
+                                                                                                                                                                                                                                                                                                                                                            `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                                                                                                                                            tyUsedNames _lhsImoduleNm _eqTy) of
+                                                                                                                                                                                                                                                                                                                                                      { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (False) of
+                                                                                                                                                                                                                                                                                                                                                         { _lhsOisBang | _lhsOisBang `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                                                                                                                                          { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (__tup202) of
+                                                                                                                                                                                                                                                                                                                                                            { (_cexpr,_) | _cexpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (RPat_BoolExpr _cpNm (acoreTyErr "EH.ToCore.PatExpr.Expr") _cexpr mbConst_) of
+                                                                                                                                                                                                                                                                                                                                                             { _rpat | _rpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_rpat) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOrpat | _lhsOrpat `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_exprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                               { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                                                                                                                                                { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOcSubst,_lhsOerrSq,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisBang,_lhsOpatCRest,_lhsOpp,_lhsOrpat,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                 in  sem_PatExpr_Expr_8)) of
+                                                                                                                                                                                                                                                                                          { ( sem_PatExpr_8) | True ->
+                                                                                                                                                                                                                                                                                          ( _lhsOcpNm,_lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_PatExpr_8) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                         in  sem_PatExpr_Expr_7)) of
+                                                                                                                                                                                                                                  { ( sem_PatExpr_7) | True ->
+                                                                                                                                                                                                                                  ( _lhsOpatTyVarMp,_lhsOvalGam,sem_PatExpr_7) }) }) }))))))))
+                                                                                                                                                                                                            in  sem_PatExpr_Expr_6)) of
+                                                                                                                                                                                                     { ( sem_PatExpr_6) | True ->
+                                                                                                                                                                                                     ( _lhsOarity,_lhsOmbTopNm,_lhsOpatFunTy,sem_PatExpr_6) }) }) }) }) })))
+                                                                                                                                                                                  in  sem_PatExpr_Expr_5)) of
+                                                                                                                                                                           { ( sem_PatExpr_5) | True ->
+                                                                                                                                                                           ( _lhsOchrInstDeclSq,_lhsOtopNm,sem_PatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                    in  sem_PatExpr_Expr_4)) of
+                                                                                                                             { ( sem_PatExpr_4) | True ->
+                                                                                                                             ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_PatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                    in  sem_PatExpr_Expr_3)) of
                                                                             { ( sem_PatExpr_3) | True ->
                                                                             ( _lhsOpredSameScopeCounter,sem_PatExpr_3) }) }) }) }) }) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_PatExprAnn.hs b/src/UHC/Light/Compiler/EH/MainAG_PatExprAnn.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_PatExprAnn.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_PatExprAnn.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/EH/MainAG_PrExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_PrExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_PrExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_PrExpr.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -133,6 +133,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -145,6 +146,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          pp                   : PP_Doc
          pr                   : Pred
+         trpp                 : TrPP
    alternatives:
       alternative Class:
          child hsrange        : {Range}
@@ -153,35 +155,35 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup201     : _
+            local _tup207     : _
             intra range       : {Range}
          visit 2:
             local pr          : {Pred}
             local ty          : {Ty}
             local prTy        : _
-            intra _tup201     : _
+            intra _tup207     : _
             intra range       : {Range}
          visit 3:
-            intra _tup201     : _
+            intra _tup207     : _
             intra ty          : {Ty}
             intra range       : {Range}
             intra pr          : {Pred}
          visit 4:
-            intra _tup201     : _
+            intra _tup207     : _
             intra ty          : {Ty}
             intra range       : {Range}
             intra pr          : {Pred}
          visit 5:
-            intra _tup201     : _
+            intra _tup207     : _
             intra ty          : {Ty}
             intra range       : {Range}
             intra pr          : {Pred}
          visit 6:
             local lUniq       : {UID}
-            local _tup200     : _
+            local _tup206     : _
             local tkgi_       : {TyKiGamInfo}
             local fo_         : {FIOut}
-            intra _tup201     : _
+            intra _tup207     : _
             intra ty          : {Ty}
             intra range       : {Range}
             intra pr          : {Pred}
@@ -189,11 +191,11 @@
             local lUniq3      : {UID}
             local lUniq2      : {UID}
             local fe2         : _
-            local _tup199     : _
+            local _tup205     : _
             local clgi        : {ClGamInfo}
-            intra _tup201     : _
+            intra _tup207     : _
             intra ty          : {Ty}
-            intra _tup200     : _
+            intra _tup206     : _
             intra range       : {Range}
             intra fo_         : {FIOut}
             intra pr          : {Pred}
@@ -204,8 +206,9 @@
             local nmErrs      : {ErrL}
             local pp          : _
             local gathMentrelFilterMp : _
-            intra _tup199     : _
-            intra _tup200     : _
+            local trpp        : _
+            intra _tup205     : _
+            intra _tup206     : _
             intra range       : {Range}
             intra fo_         : {FIOut}
             intra pr          : {Pred}
@@ -239,29 +242,29 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup203     : _
+            local _tup209     : _
          visit 2:
             local lUniq_ki    : {UID}
             local lUniq       : {UID}
-            local _tup202     : _
+            local _tup208     : _
             local tgi_        : {TyGamInfo}
             local tv          : {UID}
             local prTy        : _
             local pr          : {Pred}
             local ty          : {Ty}
-            intra _tup203     : _
+            intra _tup209     : _
          visit 3:
-            intra _tup202     : _
+            intra _tup208     : _
             intra tgi_        : {TyGamInfo}
             intra pr          : {Pred}
          visit 4:
-            intra _tup202     : _
+            intra _tup208     : _
             intra tgi_        : {TyGamInfo}
             intra pr          : {Pred}
          visit 5:
             local tkgi_       : {TyKiGamInfo}
             local tyKiGamNew  : _
-            intra _tup202     : _
+            intra _tup208     : _
             intra tgi_        : {TyGamInfo}
             intra pr          : {Pred}
          visit 6:
@@ -324,25 +327,25 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup204     : _
+            local _tup210     : _
          visit 2:
             local pr          : {Pred}
             local ty          : {Ty}
             local prTy        : _
-            intra _tup204     : _
+            intra _tup210     : _
          visit 3:
-            intra _tup204     : _
+            intra _tup210     : _
             intra pr          : {Pred}
          visit 4:
-            intra _tup204     : _
+            intra _tup210     : _
             intra pr          : {Pred}
          visit 5:
-            intra _tup204     : _
+            intra _tup210     : _
             intra pr          : {Pred}
          visit 6:
             local lUniq       : {UID}
             local fo_         : {FIOut}
-            intra _tup204     : _
+            intra _tup210     : _
             intra pr          : {Pred}
          visit 7:
             intra pr          : {Pred}
@@ -368,8 +371,8 @@
                            (\ _lhsIgUniq ->
                                 _lhsIgUniq `seq`
                                 ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
-                                  { __tup201 | __tup201 `seq` (True) ->
-                                  (case (__tup201) of
+                                  { __tup207 | __tup207 `seq` (True) ->
+                                  (case (__tup207) of
                                    { (_tyExprsOgUniq,_,_,_) | _tyExprsOgUniq `seq` (True) ->
                                    (case (tyExprs_1 _tyExprsOgUniq) of
                                     { ( _tyExprsIgUniq,tyExprs_2) | True ->
@@ -439,11 +442,11 @@
                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
                                                                                                                                                                                             (case (kiStar) of
                                                                                                                                                                                              { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                             (case (__tup201) of
+                                                                                                                                                                                             (case (__tup207) of
                                                                                                                                                                                               { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
                                                                                                                                                                                               (case (tyKiGamLookupByNameErr (hsnClass2Kind nm_) _lhsItyKiGam) of
-                                                                                                                                                                                               { __tup200 | __tup200 `seq` (True) ->
-                                                                                                                                                                                               (case (__tup200) of
+                                                                                                                                                                                               { __tup206 | __tup206 `seq` (True) ->
+                                                                                                                                                                                               (case (__tup206) of
                                                                                                                                                                                                 { (_tkgi_,_) | _tkgi_ `seq` (True) ->
                                                                                                                                                                                                 (case (fitsIn weakFIOpts defaultFIEnv _lUniq _tyExprsIkiVarMp
                                                                                                                                                                                                          (_tyExprsIkiL `appArr` kiStar) (tkgiKi _tkgi_)) of
@@ -456,9 +459,9 @@
                                                                                                                                                                                                                sem_PrExpr_Class_7 =
                                                                                                                                                                                                                    (\ _lhsIclGam ->
                                                                                                                                                                                                                         _lhsIclGam `seq`
-                                                                                                                                                                                                                        ((case (__tup201) of
+                                                                                                                                                                                                                        ((case (__tup207) of
                                                                                                                                                                                                                           { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
-                                                                                                                                                                                                                          (case (__tup201) of
+                                                                                                                                                                                                                          (case (__tup207) of
                                                                                                                                                                                                                            { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
                                                                                                                                                                                                                            (case (defaultFIEnv
                                                                                                                                                                                                                                       { feTyGam = _lhsItyGam
@@ -468,11 +471,11 @@
                                                                                                                                                                                                                             (case (case gamLookup nm_ _lhsIclGam of
                                                                                                                                                                                                                                        Just p   -> (p          ,Set.singleton nm_  ,Set.empty          )
                                                                                                                                                                                                                                        Nothing  -> (emptyCLGI  ,Set.empty          ,Set.singleton nm_  )) of
-                                                                                                                                                                                                                             { __tup199 | __tup199 `seq` (True) ->
-                                                                                                                                                                                                                             (case (__tup199) of
+                                                                                                                                                                                                                             { __tup205 | __tup205 `seq` (True) ->
+                                                                                                                                                                                                                             (case (__tup205) of
                                                                                                                                                                                                                               { (_clgi,_,_) | _clgi `seq` (True) ->
                                                                                                                                                                                                                               (case (let  fo = fitsIn  (predFIOpts {fioDontBind = varFreeSet _ty}) _fe2 _lUniq3 (emptyVarMp :: VarMp)
-                                                                                                                                                                                                                                                       (clgiPrToEvidTy _clgi) ([_ty] `appArr` mkNewTyVar _lUniq2)
+                                                                                                                                                                                                                                                       (clgiPrToEvidRecTy _clgi) ([_ty] `appArr` mkNewTyVar _lUniq2)
                                                                                                                                                                                                                                      in   appUnArrRes $ foVarMp fo `varUpd` foTy fo) of
                                                                                                                                                                                                                                { _lhsOevTy | _lhsOevTy `seq` (True) ->
                                                                                                                                                                                                                                (case ((let sem_PrExpr_Class_8 :: T_PrExpr_8
@@ -484,6 +487,7 @@
                                                                                                                                                                                                                                                   _lhsImoduleNm
                                                                                                                                                                                                                                                   _lhsIopts
                                                                                                                                                                                                                                                   _lhsIsysfEnv
+                                                                                                                                                                                                                                                  _lhsItr
                                                                                                                                                                                                                                                   _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                                   _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                                   _lhsItyTyTySigFreeTvarS
@@ -495,71 +499,79 @@
                                                                                                                                                                                                                                                        (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                         (_lhsIopts `seq`
                                                                                                                                                                                                                                                          (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                { _tyExprsOvalTyGlobFreeTvarS | _tyExprsOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _tyExprsOtyTyTySigFreeTvarS | _tyExprsOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _tyExprsOtyTyGlobFreeTvarS | _tyExprsOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _tyExprsOtyKiGlobFreeTvarS | _tyExprsOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                    { _tyExprsOsysfEnv | _tyExprsOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                     { _tyExprsOopts | _tyExprsOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                      { _tyExprsOmoduleNm | _tyExprsOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIknPolCtx) of
-                                                                                                                                                                                                                                                                       { _tyExprsOknPolCtx | _tyExprsOknPolCtx `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                        { _tyExprsOkiGam | _tyExprsOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                         { _tyExprsOfinTyVarMp | _tyExprsOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                          { _tyExprsOfinTyKiGam | _tyExprsOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                           { _tyExprsOfinKiVarMp | _tyExprsOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                            { _tyExprsOclGam | _tyExprsOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (tyExprs_6 _tyExprsOclGam _tyExprsOfinKiVarMp _tyExprsOfinTyKiGam _tyExprsOfinTyVarMp _tyExprsOkiGam _tyExprsOknPolCtx _tyExprsOmoduleNm _tyExprsOopts _tyExprsOsysfEnv _tyExprsOtyKiGlobFreeTvarS _tyExprsOtyTyGlobFreeTvarS _tyExprsOtyTyTySigFreeTvarS _tyExprsOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { ( _tyExprsIallErrSq,_tyExprsIclMissNmS,_tyExprsIclNmS,_tyExprsIerrSq,_tyExprsIgathMentrelFilterMp,_tyExprsIpp,_tyExprsIppL) | True ->
-                                                                                                                                                                                                                                                                                 (case (_tyExprsIallErrSq) of
-                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (__tup199) of
-                                                                                                                                                                                                                                                                                   { (_,_,_clMissNmS) | _clMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_clMissNmS  `Set.union`  _tyExprsIclMissNmS) of
-                                                                                                                                                                                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (__tup199) of
-                                                                                                                                                                                                                                                                                     { (_,_clNmS,_) | _clNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_clNmS      `Set.union`  _tyExprsIclNmS) of
-                                                                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (__tup200) of
-                                                                                                                                                                                                                                                                                       { (_,_clKiNmErrs) | _clKiNmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (if ehcOptHsChecksInEH _lhsIopts
-                                                                                                                                                                                                                                                                                              then rngLift _range checkClNms _clMissNmS
-                                                                                                                                                                                                                                                                                              else []) of
-                                                                                                                                                                                                                                                                                        { _nmErrs | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (ppSpaced (pp nm_ : _tyExprsIppL)) of
-                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (rngLift _range mkNestErr' _pp [ _tyExprsIerrSq
-                                                                                                                                                                                                                                                                                                                              , Seq.fromList $ firstNotEmpty [_nmErrs,_clKiNmErrs], foErrSq _fo_
-                                                                                                                                                                                                                                                                                                                              ]) of
-                                                                                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Type                   nm_
-                                                                                                                                                                                                                                                                                                 `mentrelFilterMpUnion`
-                                                                                                                                                                                                                                                                                                 _tyExprsIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                           { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_pp) of
-                                                                                                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_pr) of
-                                                                                                                                                                                                                                                                                              { _lhsOpr | _lhsOpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                          (_lhsItr `seq`
+                                                                                                                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                               ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _tyExprsOvalTyGlobFreeTvarS | _tyExprsOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                  { _tyExprsOtyTyTySigFreeTvarS | _tyExprsOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                   { _tyExprsOtyTyGlobFreeTvarS | _tyExprsOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _tyExprsOtyKiGlobFreeTvarS | _tyExprsOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItr) of
+                                                                                                                                                                                                                                                                     { _tyExprsOtr | _tyExprsOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                      { _tyExprsOsysfEnv | _tyExprsOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                       { _tyExprsOopts | _tyExprsOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                        { _tyExprsOmoduleNm | _tyExprsOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIknPolCtx) of
+                                                                                                                                                                                                                                                                         { _tyExprsOknPolCtx | _tyExprsOknPolCtx `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                          { _tyExprsOkiGam | _tyExprsOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                           { _tyExprsOfinTyVarMp | _tyExprsOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                            { _tyExprsOfinTyKiGam | _tyExprsOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                             { _tyExprsOfinKiVarMp | _tyExprsOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                              { _tyExprsOclGam | _tyExprsOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (tyExprs_6 _tyExprsOclGam _tyExprsOfinKiVarMp _tyExprsOfinTyKiGam _tyExprsOfinTyVarMp _tyExprsOkiGam _tyExprsOknPolCtx _tyExprsOmoduleNm _tyExprsOopts _tyExprsOsysfEnv _tyExprsOtr _tyExprsOtyKiGlobFreeTvarS _tyExprsOtyTyGlobFreeTvarS _tyExprsOtyTyTySigFreeTvarS _tyExprsOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                               { ( _tyExprsIallErrSq,_tyExprsIclMissNmS,_tyExprsIclNmS,_tyExprsIerrSq,_tyExprsIgathMentrelFilterMp,_tyExprsIpp,_tyExprsIppL,_tyExprsItrpp) | True ->
+                                                                                                                                                                                                                                                                                   (case (_tyExprsIallErrSq) of
+                                                                                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (__tup205) of
+                                                                                                                                                                                                                                                                                     { (_,_,_clMissNmS) | _clMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_clMissNmS  `Set.union`  _tyExprsIclMissNmS) of
+                                                                                                                                                                                                                                                                                      { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (__tup205) of
+                                                                                                                                                                                                                                                                                       { (_,_clNmS,_) | _clNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_clNmS      `Set.union`  _tyExprsIclNmS) of
+                                                                                                                                                                                                                                                                                        { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (__tup206) of
+                                                                                                                                                                                                                                                                                         { (_,_clKiNmErrs) | _clKiNmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (if ehcOptHsChecksInEH _lhsIopts
+                                                                                                                                                                                                                                                                                                then rngLift _range checkClNms _clMissNmS
+                                                                                                                                                                                                                                                                                                else []) of
+                                                                                                                                                                                                                                                                                          { _nmErrs | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (ppSpaced (pp nm_ : _tyExprsIppL)) of
+                                                                                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (rngLift _range mkNestErr' _pp [ _tyExprsIerrSq
+                                                                                                                                                                                                                                                                                                                                , Seq.fromList $ firstNotEmpty [_nmErrs,_clKiNmErrs], foErrSq _fo_
+                                                                                                                                                                                                                                                                                                                                ]) of
+                                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Type                   nm_
+                                                                                                                                                                                                                                                                                                   `mentrelFilterMpUnion`
+                                                                                                                                                                                                                                                                                                   _tyExprsIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                             { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_pr) of
+                                                                                                                                                                                                                                                                                                { _lhsOpr | _lhsOpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case ((_lhsItr TraceOn_EhClsGam $ ["Class" >#< nm_] ++ [ "clGam=" >#< ppGam _lhsIclGam ])
+                                                                                                                                                                                                                                                                                                       >< _tyExprsItrpp) of
+                                                                                                                                                                                                                                                                                                 { _trpp | _trpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_trpp) of
+                                                                                                                                                                                                                                                                                                  { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                        in  sem_PrExpr_Class_8)) of
                                                                                                                                                                                                                                 { ( sem_PrExpr_8) | True ->
                                                                                                                                                                                                                                 ( _lhsOevTy,sem_PrExpr_8) }) }) }) }) }) }) })))
@@ -730,6 +742,7 @@
                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
                                                                                                                                                                                                                                                                                                     _lhsIopts
                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                    _lhsItr
                                                                                                                                                                                                                                                                                                     _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                                                                                     _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                                                                                     _lhsItyTyTySigFreeTvarS
@@ -741,75 +754,82 @@
                                                                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                                                                           (_lhsIopts `seq`
                                                                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                  { _resOvalTyGlobFreeTvarS | _resOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                   { _resOtyTyTySigFreeTvarS | _resOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                    { _resOtyTyGlobFreeTvarS | _resOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                     { _resOtyKiGlobFreeTvarS | _resOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                      { _resOsysfEnv | _resOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                       { _resOopts | _resOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                        { _resOmoduleNm | _resOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                         { _resOkiGam | _resOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                          { _resOfinTyVarMp | _resOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                           { _resOfinTyKiGam | _resOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                            { _resOfinKiVarMp | _resOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (res_8 _resOfinKiVarMp _resOfinTyKiGam _resOfinTyVarMp _resOkiGam _resOmoduleNm _resOopts _resOsysfEnv _resOtyKiGlobFreeTvarS _resOtyTyGlobFreeTvarS _resOtyTyTySigFreeTvarS _resOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                             { ( _resIallErrSq,_resIclMissNmS,_resIclNmS,_resIerrSq,_resIgathMentrelFilterMp,_resIpp,_resIpr) | True ->
-                                                                                                                                                                                                                                                                                                                                 (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                  { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                   { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                    { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                     { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                      { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                                       { _argOopts | _argOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                        { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                                         { _argOkiGam | _argOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                          { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                           { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                            { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (arg_8 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOkiGam _argOmoduleNm _argOopts _argOsysfEnv _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                             { ( _argIallErrSq,_argIclMissNmS,_argIclNmS,_argIerrSq,_argIgathMentrelFilterMp,_argIpp,_argIpr) | True ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_argIallErrSq `Seq.union` _resIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_argIclMissNmS `Set.union` _resIclMissNmS) of
-                                                                                                                                                                                                                                                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (_argIclNmS `Set.union` _resIclNmS) of
-                                                                                                                                                                                                                                                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (_argIerrSq `Seq.union` _resIerrSq) of
-                                                                                                                                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_argIgathMentrelFilterMp `mentrelFilterMpUnion` _resIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_argIpp >#< hsnPrArrow >#< _resIpp) of
-                                                                                                                                                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_pr) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOpr | _lhsOpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                 ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                   { _resOvalTyGlobFreeTvarS | _resOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                    { _resOtyTyTySigFreeTvarS | _resOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                     { _resOtyTyGlobFreeTvarS | _resOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                      { _resOtyKiGlobFreeTvarS | _resOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                       { _resOtr | _resOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                        { _resOsysfEnv | _resOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                         { _resOopts | _resOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                          { _resOmoduleNm | _resOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                           { _resOkiGam | _resOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                            { _resOfinTyVarMp | _resOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                             { _resOfinTyKiGam | _resOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                              { _resOfinKiVarMp | _resOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (res_8 _resOfinKiVarMp _resOfinTyKiGam _resOfinTyVarMp _resOkiGam _resOmoduleNm _resOopts _resOsysfEnv _resOtr _resOtyKiGlobFreeTvarS _resOtyTyGlobFreeTvarS _resOtyTyTySigFreeTvarS _resOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                               { ( _resIallErrSq,_resIclMissNmS,_resIclNmS,_resIerrSq,_resIgathMentrelFilterMp,_resIpp,_resIpr,_resItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                   (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                    { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                     { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                      { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                       { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                        { _argOtr | _argOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                         { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                                          { _argOopts | _argOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                           { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                                            { _argOkiGam | _argOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                             { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                              { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                               { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (arg_8 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOkiGam _argOmoduleNm _argOopts _argOsysfEnv _argOtr _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                { ( _argIallErrSq,_argIclMissNmS,_argIclNmS,_argIerrSq,_argIgathMentrelFilterMp,_argIpp,_argIpr,_argItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_argIallErrSq `Seq.union` _resIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (_argIclMissNmS `Set.union` _resIclMissNmS) of
+                                                                                                                                                                                                                                                                                                                                                      { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_argIclNmS `Set.union` _resIclNmS) of
+                                                                                                                                                                                                                                                                                                                                                       { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_argIerrSq `Seq.union` _resIerrSq) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (_argIgathMentrelFilterMp `mentrelFilterMpUnion` _resIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (_argIpp >#< hsnPrArrow >#< _resIpp) of
+                                                                                                                                                                                                                                                                                                                                                          { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_pr) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOpr | _lhsOpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_argItrpp >< _resItrpp) of
+                                                                                                                                                                                                                                                                                                                                                             { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                                                                          in  sem_PrExpr_Arrow_8)) of
                                                                                                                                                                                                                                                                                   { ( sem_PrExpr_8) | True ->
                                                                                                                                                                                                                                                                                   ( _lhsOevTy,sem_PrExpr_8) }) }) }) }) }) })))
@@ -852,8 +872,8 @@
                            (\ _lhsIgUniq ->
                                 _lhsIgUniq `seq`
                                 ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_ki)}} )) of
-                                  { __tup203 | __tup203 `seq` (True) ->
-                                  (case (__tup203) of
+                                  { __tup209 | __tup209 `seq` (True) ->
+                                  (case (__tup209) of
                                    { (_prExprOgUniq,_,_) | _prExprOgUniq `seq` (True) ->
                                    (case (prExpr_1 _prExprOgUniq) of
                                     { ( _prExprIgUniq,prExpr_2) | True ->
@@ -863,18 +883,18 @@
                                                      sem_PrExpr_Forall_2 =
                                                          (\ _lhsItyGam ->
                                                               _lhsItyGam `seq`
-                                                              ((case (__tup203) of
+                                                              ((case (__tup209) of
                                                                 { (_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
-                                                                (case (__tup203) of
+                                                                (case (__tup209) of
                                                                  { (_,_lUniq,_) | _lUniq `seq` (True) ->
                                                                  (case (let  t = mkTyVar _lUniq
                                                                         in   (_lUniq,mkTGI t,TyKiGamInfo (mkNewTyVar _lUniq_ki))) of
-                                                                  { __tup202 | __tup202 `seq` (True) ->
-                                                                  (case (__tup202) of
+                                                                  { __tup208 | __tup208 `seq` (True) ->
+                                                                  (case (__tup208) of
                                                                    { (_,_tgi_,_) | _tgi_ `seq` (True) ->
                                                                    (case (tvGathFlowIn  (tyVar_ `gamSingleton` _tgi_) _lhsItyGam) of
                                                                     { _prExprOtyGam | _prExprOtyGam `seq` (True) ->
-                                                                    (case (__tup202) of
+                                                                    (case (__tup208) of
                                                                      { (_tv,_,_) | _tv `seq` (True) ->
                                                                      (case (prExpr_2 _prExprOtyGam) of
                                                                       { ( _prExprIprTy,_prExprIty,_prExprItyGam,prExpr_3) | True ->
@@ -918,7 +938,7 @@
                                                                                                                                                         sem_PrExpr_Forall_5 =
                                                                                                                                                             (\ _lhsItyKiGam ->
                                                                                                                                                                  _lhsItyKiGam `seq`
-                                                                                                                                                                 ((case (__tup202) of
+                                                                                                                                                                 ((case (__tup208) of
                                                                                                                                                                    { (_,_,_tkgi_) | _tkgi_ `seq` (True) ->
                                                                                                                                                                    (case (tgiTy _tgi_ `tyKiGamSingleton` _tkgi_) of
                                                                                                                                                                     { _tyKiGamNew | _tyKiGamNew `seq` (True) ->
@@ -965,6 +985,7 @@
                                                                                                                                                                                                                                                             _lhsImoduleNm
                                                                                                                                                                                                                                                             _lhsIopts
                                                                                                                                                                                                                                                             _lhsIsysfEnv
+                                                                                                                                                                                                                                                            _lhsItr
                                                                                                                                                                                                                                                             _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                                             _lhsItyTyTySigFreeTvarS
@@ -976,51 +997,56 @@
                                                                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                                   (_lhsIopts `seq`
                                                                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                      (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                        ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                          { _prExprOvalTyGlobFreeTvarS | _prExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                           { _prExprOtyTyTySigFreeTvarS | _prExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                            { _prExprOtyTyGlobFreeTvarS | _prExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { _prExprOtyKiGlobFreeTvarS | _prExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                              { _prExprOsysfEnv | _prExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                               { _prExprOopts | _prExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                { _prExprOmoduleNm | _prExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                 { _prExprOkiGam | _prExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                  { _prExprOfinTyVarMp | _prExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                   { _prExprOfinTyKiGam | _prExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                    { _prExprOfinKiVarMp | _prExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (prExpr_8 _prExprOfinKiVarMp _prExprOfinTyKiGam _prExprOfinTyVarMp _prExprOkiGam _prExprOmoduleNm _prExprOopts _prExprOsysfEnv _prExprOtyKiGlobFreeTvarS _prExprOtyTyGlobFreeTvarS _prExprOtyTyTySigFreeTvarS _prExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                     { ( _prExprIallErrSq,_prExprIclMissNmS,_prExprIclNmS,_prExprIerrSq,_prExprIgathMentrelFilterMp,_prExprIpp,_prExprIpr) | True ->
-                                                                                                                                                                                                                                                                                         (case (_prExprIallErrSq) of
-                                                                                                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_prExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                           { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_prExprIclNmS) of
-                                                                                                                                                                                                                                                                                            { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_prExprIerrSq) of
-                                                                                                                                                                                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_prExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case ("forall" >#< tyVar_ >#< "." >#< _prExprIpp) of
-                                                                                                                                                                                                                                                                                               { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_pp) of
-                                                                                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_pr) of
-                                                                                                                                                                                                                                                                                                 { _lhsOpr | _lhsOpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                    (_lhsItr `seq`
+                                                                                                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                         ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                           { _prExprOvalTyGlobFreeTvarS | _prExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                            { _prExprOtyTyTySigFreeTvarS | _prExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { _prExprOtyTyGlobFreeTvarS | _prExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                              { _prExprOtyKiGlobFreeTvarS | _prExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsItr) of
+                                                                                                                                                                                                                                                                               { _prExprOtr | _prExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                { _prExprOsysfEnv | _prExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                 { _prExprOopts | _prExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                  { _prExprOmoduleNm | _prExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                   { _prExprOkiGam | _prExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                    { _prExprOfinTyVarMp | _prExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                     { _prExprOfinTyKiGam | _prExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                      { _prExprOfinKiVarMp | _prExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (prExpr_8 _prExprOfinKiVarMp _prExprOfinTyKiGam _prExprOfinTyVarMp _prExprOkiGam _prExprOmoduleNm _prExprOopts _prExprOsysfEnv _prExprOtr _prExprOtyKiGlobFreeTvarS _prExprOtyTyGlobFreeTvarS _prExprOtyTyTySigFreeTvarS _prExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                       { ( _prExprIallErrSq,_prExprIclMissNmS,_prExprIclNmS,_prExprIerrSq,_prExprIgathMentrelFilterMp,_prExprIpp,_prExprIpr,_prExprItrpp) | True ->
+                                                                                                                                                                                                                                                                                           (case (_prExprIallErrSq) of
+                                                                                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_prExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_prExprIclNmS) of
+                                                                                                                                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_prExprIerrSq) of
+                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_prExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case ("forall" >#< tyVar_ >#< "." >#< _prExprIpp) of
+                                                                                                                                                                                                                                                                                                 { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_pr) of
+                                                                                                                                                                                                                                                                                                   { _lhsOpr | _lhsOpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_prExprItrpp) of
+                                                                                                                                                                                                                                                                                                    { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                                  in  sem_PrExpr_Forall_8)) of
                                                                                                                                                                                                                                           { ( sem_PrExpr_8) | True ->
                                                                                                                                                                                                                                           ( _lhsOevTy,sem_PrExpr_8) }) }) }) })))
@@ -1157,6 +1183,7 @@
                                                                                                                                                                                                                                           _lhsImoduleNm
                                                                                                                                                                                                                                           _lhsIopts
                                                                                                                                                                                                                                           _lhsIsysfEnv
+                                                                                                                                                                                                                                          _lhsItr
                                                                                                                                                                                                                                           _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                           _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                           _lhsItyTyTySigFreeTvarS
@@ -1168,53 +1195,58 @@
                                                                                                                                                                                                                                                (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                 (_lhsIopts `seq`
                                                                                                                                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                      ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                        { _rowTyExprOvalTyGlobFreeTvarS | _rowTyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                         { _rowTyExprOtyTyTySigFreeTvarS | _rowTyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                          { _rowTyExprOtyTyGlobFreeTvarS | _rowTyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                           { _rowTyExprOtyKiGlobFreeTvarS | _rowTyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                            { _rowTyExprOsysfEnv | _rowTyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIopts) of
-                                                                                                                                                                                                                                                             { _rowTyExprOopts | _rowTyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                              { _rowTyExprOmoduleNm | _rowTyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                               { _rowTyExprOkiGam | _rowTyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                { _rowTyExprOfinTyVarMp | _rowTyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                 { _rowTyExprOfinTyKiGam | _rowTyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                  { _rowTyExprOfinKiVarMp | _rowTyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                   { _rowTyExprOclGam | _rowTyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (rowTyExpr_6 _rowTyExprOclGam _rowTyExprOfinKiVarMp _rowTyExprOfinTyKiGam _rowTyExprOfinTyVarMp _rowTyExprOkiGam _rowTyExprOmoduleNm _rowTyExprOopts _rowTyExprOsysfEnv _rowTyExprOtyKiGlobFreeTvarS _rowTyExprOtyTyGlobFreeTvarS _rowTyExprOtyTyTySigFreeTvarS _rowTyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                    { ( _rowTyExprIallErrSq,_rowTyExprIclMissNmS,_rowTyExprIclNmS,_rowTyExprIerrSq,_rowTyExprIextNm,_rowTyExprIgathMentrelFilterMp,_rowTyExprIpp,_rowTyExprIppL) | True ->
-                                                                                                                                                                                                                                                                        (case (_rowTyExprIallErrSq) of
-                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_rowTyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                          { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_rowTyExprIclNmS) of
-                                                                                                                                                                                                                                                                           { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_rowTyExprIerrSq) of
-                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_rowTyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_rowTyExprIpp >|< "\\" >|< pp nm_) of
-                                                                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_pp) of
-                                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_pr) of
-                                                                                                                                                                                                                                                                                { _lhsOpr | _lhsOpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                       ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                         { _rowTyExprOvalTyGlobFreeTvarS | _rowTyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                          { _rowTyExprOtyTyTySigFreeTvarS | _rowTyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                           { _rowTyExprOtyTyGlobFreeTvarS | _rowTyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                            { _rowTyExprOtyKiGlobFreeTvarS | _rowTyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (_lhsItr) of
+                                                                                                                                                                                                                                                             { _rowTyExprOtr | _rowTyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                              { _rowTyExprOsysfEnv | _rowTyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_lhsIopts) of
+                                                                                                                                                                                                                                                               { _rowTyExprOopts | _rowTyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                { _rowTyExprOmoduleNm | _rowTyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                 { _rowTyExprOkiGam | _rowTyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                  { _rowTyExprOfinTyVarMp | _rowTyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                   { _rowTyExprOfinTyKiGam | _rowTyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                    { _rowTyExprOfinKiVarMp | _rowTyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                     { _rowTyExprOclGam | _rowTyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (rowTyExpr_6 _rowTyExprOclGam _rowTyExprOfinKiVarMp _rowTyExprOfinTyKiGam _rowTyExprOfinTyVarMp _rowTyExprOkiGam _rowTyExprOmoduleNm _rowTyExprOopts _rowTyExprOsysfEnv _rowTyExprOtr _rowTyExprOtyKiGlobFreeTvarS _rowTyExprOtyTyGlobFreeTvarS _rowTyExprOtyTyTySigFreeTvarS _rowTyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                      { ( _rowTyExprIallErrSq,_rowTyExprIclMissNmS,_rowTyExprIclNmS,_rowTyExprIerrSq,_rowTyExprIextNm,_rowTyExprIgathMentrelFilterMp,_rowTyExprIpp,_rowTyExprIppL,_rowTyExprItrpp) | True ->
+                                                                                                                                                                                                                                                                          (case (_rowTyExprIallErrSq) of
+                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_rowTyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                            { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_rowTyExprIclNmS) of
+                                                                                                                                                                                                                                                                             { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_rowTyExprIerrSq) of
+                                                                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_rowTyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_rowTyExprIpp >|< "\\" >|< pp nm_) of
+                                                                                                                                                                                                                                                                                { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_pp) of
+                                                                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_pr) of
+                                                                                                                                                                                                                                                                                  { _lhsOpr | _lhsOpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_rowTyExprItrpp) of
+                                                                                                                                                                                                                                                                                   { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                in  sem_PrExpr_Lacks_8)) of
                                                                                                                                                                                                                         { ( sem_PrExpr_8) | True ->
                                                                                                                                                                                                                         ( _lhsOevTy,sem_PrExpr_8) }) })))
@@ -1353,6 +1385,7 @@
                                                                                                                                                                                                                                                     _lhsImoduleNm
                                                                                                                                                                                                                                                     _lhsIopts
                                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                                    _lhsItr
                                                                                                                                                                                                                                                     _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                                     _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                                     _lhsItyTyTySigFreeTvarS
@@ -1364,51 +1397,56 @@
                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                           (_lhsIopts `seq`
                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                            (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                    { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                     { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                      { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                       { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                        { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                         { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                          { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                           { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                            { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                                 (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_tyExprIerrSq) of
-                                                                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (hsnDynVar >|< nm_ >#< "::" >#< _tyExprIpp) of
-                                                                                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_pr) of
-                                                                                                                                                                                                                                                                                         { _lhsOpr | _lhsOpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                 ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                   { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                     { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                      { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsItr) of
+                                                                                                                                                                                                                                                                       { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                        { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                         { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                          { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                           { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                            { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                             { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                              { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                               { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                   (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_tyExprIerrSq) of
+                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (hsnDynVar >|< nm_ >#< "::" >#< _tyExprIpp) of
+                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_pp) of
+                                                                                                                                                                                                                                                                                          { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_pr) of
+                                                                                                                                                                                                                                                                                           { _lhsOpr | _lhsOpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                          in  sem_PrExpr_DynVar_8)) of
                                                                                                                                                                                                                                   { ( sem_PrExpr_8) | True ->
                                                                                                                                                                                                                                   ( _lhsOevTy,sem_PrExpr_8) }) }) }) })))
@@ -1454,8 +1492,8 @@
                                 (\ _lhsIgUniq ->
                                      _lhsIgUniq `seq`
                                      ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                       { __tup204 | __tup204 `seq` (True) ->
-                                       (case (__tup204) of
+                                       { __tup210 | __tup210 `seq` (True) ->
+                                       (case (__tup210) of
                                         { (_tyExpr1OgUniq,_) | _tyExpr1OgUniq `seq` (True) ->
                                         (case (tyExpr1_1 _tyExpr1OgUniq) of
                                          { ( _tyExpr1IgUniq,tyExpr1_2) | True ->
@@ -1555,7 +1593,7 @@
                                                                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
                                                                                                                                                                                                                                             (case (_tyExpr2Iki) of
                                                                                                                                                                                                                                              { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                                                                             (case (__tup204) of
+                                                                                                                                                                                                                                             (case (__tup210) of
                                                                                                                                                                                                                                               { (_,_lUniq) | _lUniq `seq` (True) ->
                                                                                                                                                                                                                                               (case (fitsIn unifyFIOpts defaultFIEnv _lUniq _tyExpr2IkiVarMp _tyExpr1Iki _tyExpr2Iki) of
                                                                                                                                                                                                                                                { _fo_ | _fo_ `seq` (True) ->
@@ -1582,6 +1620,7 @@
                                                                                                                                                                                                                                                                                                  _lhsImoduleNm
                                                                                                                                                                                                                                                                                                  _lhsIopts
                                                                                                                                                                                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                 _lhsItr
                                                                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
@@ -1593,79 +1632,86 @@
                                                                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                                                                        (_lhsIopts `seq`
                                                                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                          (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                           (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                            (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                             ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                               { _tyExpr2OvalTyGlobFreeTvarS | _tyExpr2OvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                { _tyExpr2OtyTyTySigFreeTvarS | _tyExpr2OtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                 { _tyExpr2OtyTyGlobFreeTvarS | _tyExpr2OtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                  { _tyExpr2OtyKiGlobFreeTvarS | _tyExpr2OtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                   { _tyExpr2OsysfEnv | _tyExpr2OsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                    { _tyExpr2Oopts | _tyExpr2Oopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                     { _tyExpr2OmoduleNm | _tyExpr2OmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                      { _tyExpr2OkiGam | _tyExpr2OkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                       { _tyExpr2OfinTyVarMp | _tyExpr2OfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                        { _tyExpr2OfinTyKiGam | _tyExpr2OfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                         { _tyExpr2OfinKiVarMp | _tyExpr2OfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (tyExpr2_8 _tyExpr2OfinKiVarMp _tyExpr2OfinTyKiGam _tyExpr2OfinTyVarMp _tyExpr2OkiGam _tyExpr2OmoduleNm _tyExpr2Oopts _tyExpr2OsysfEnv _tyExpr2OtyKiGlobFreeTvarS _tyExpr2OtyTyGlobFreeTvarS _tyExpr2OtyTyTySigFreeTvarS _tyExpr2OvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                          { ( _tyExpr2IallErrSq,_tyExpr2IappArgPPL,_tyExpr2IappFunNm,_tyExpr2IappFunPP,_tyExpr2IclMissNmS,_tyExpr2IclNmS,_tyExpr2IerrSq,_tyExpr2IgathMentrelFilterMp,_tyExpr2Ipp,_tyExpr2ItyWildL) | True ->
-                                                                                                                                                                                                                                                                                                                              (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                                                               { _tyExpr1OclGam | _tyExpr1OclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (tyExpr1_7 _tyExpr1OclGam) of
-                                                                                                                                                                                                                                                                                                                                { ( _tyExpr1IevTy,tyExpr1_8) | True ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                     { _tyExpr1OvalTyGlobFreeTvarS | _tyExpr1OvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                      { _tyExpr1OtyTyTySigFreeTvarS | _tyExpr1OtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                       { _tyExpr1OtyTyGlobFreeTvarS | _tyExpr1OtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                        { _tyExpr1OtyKiGlobFreeTvarS | _tyExpr1OtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                         { _tyExpr1OsysfEnv | _tyExpr1OsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                                          { _tyExpr1Oopts | _tyExpr1Oopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                           { _tyExpr1OmoduleNm | _tyExpr1OmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                                            { _tyExpr1OkiGam | _tyExpr1OkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                             { _tyExpr1OfinTyVarMp | _tyExpr1OfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                              { _tyExpr1OfinTyKiGam | _tyExpr1OfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                               { _tyExpr1OfinKiVarMp | _tyExpr1OfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (tyExpr1_8 _tyExpr1OfinKiVarMp _tyExpr1OfinTyKiGam _tyExpr1OfinTyVarMp _tyExpr1OkiGam _tyExpr1OmoduleNm _tyExpr1Oopts _tyExpr1OsysfEnv _tyExpr1OtyKiGlobFreeTvarS _tyExpr1OtyTyGlobFreeTvarS _tyExpr1OtyTyTySigFreeTvarS _tyExpr1OvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                { ( _tyExpr1IallErrSq,_tyExpr1IappArgPPL,_tyExpr1IappFunNm,_tyExpr1IappFunPP,_tyExpr1IclMissNmS,_tyExpr1IclNmS,_tyExpr1IerrSq,_tyExpr1IgathMentrelFilterMp,_tyExpr1Ipp,_tyExpr1ItyWildL) | True ->
-                                                                                                                                                                                                                                                                                                                                                    (case (_tyExpr1IallErrSq `Seq.union` _tyExpr2IallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_tyExpr1IclMissNmS `Set.union` _tyExpr2IclMissNmS) of
-                                                                                                                                                                                                                                                                                                                                                      { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (_tyExpr1IclNmS `Set.union` _tyExpr2IclNmS) of
-                                                                                                                                                                                                                                                                                                                                                       { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                       (case (_tyExpr1IerrSq `Seq.union` _tyExpr2IerrSq) of
-                                                                                                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                        (case (_tyExpr1IgathMentrelFilterMp `mentrelFilterMpUnion` _tyExpr2IgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                         { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                         (case (_tyExpr1Ipp >#< hsnEqTilde >#< _tyExpr2Ipp) of
-                                                                                                                                                                                                                                                                                                                                                          { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_pr) of
-                                                                                                                                                                                                                                                                                                                                                            { _lhsOpr | _lhsOpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                         (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                { _tyExpr2OvalTyGlobFreeTvarS | _tyExpr2OvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                 { _tyExpr2OtyTyTySigFreeTvarS | _tyExpr2OtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                  { _tyExpr2OtyTyGlobFreeTvarS | _tyExpr2OtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                   { _tyExpr2OtyKiGlobFreeTvarS | _tyExpr2OtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                    { _tyExpr2Otr | _tyExpr2Otr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                     { _tyExpr2OsysfEnv | _tyExpr2OsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                      { _tyExpr2Oopts | _tyExpr2Oopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                       { _tyExpr2OmoduleNm | _tyExpr2OmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                        { _tyExpr2OkiGam | _tyExpr2OkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                         { _tyExpr2OfinTyVarMp | _tyExpr2OfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                          { _tyExpr2OfinTyKiGam | _tyExpr2OfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                          (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                           { _tyExpr2OfinKiVarMp | _tyExpr2OfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                           (case (tyExpr2_8 _tyExpr2OfinKiVarMp _tyExpr2OfinTyKiGam _tyExpr2OfinTyVarMp _tyExpr2OkiGam _tyExpr2OmoduleNm _tyExpr2Oopts _tyExpr2OsysfEnv _tyExpr2Otr _tyExpr2OtyKiGlobFreeTvarS _tyExpr2OtyTyGlobFreeTvarS _tyExpr2OtyTyTySigFreeTvarS _tyExpr2OvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                            { ( _tyExpr2IallErrSq,_tyExpr2IappArgPPL,_tyExpr2IappFunNm,_tyExpr2IappFunPP,_tyExpr2IclMissNmS,_tyExpr2IclNmS,_tyExpr2IerrSq,_tyExpr2IgathMentrelFilterMp,_tyExpr2Ipp,_tyExpr2Itrpp,_tyExpr2ItyWildL) | True ->
+                                                                                                                                                                                                                                                                                                                                (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                                                                 { _tyExpr1OclGam | _tyExpr1OclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (tyExpr1_7 _tyExpr1OclGam) of
+                                                                                                                                                                                                                                                                                                                                  { ( _tyExpr1IevTy,tyExpr1_8) | True ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                       { _tyExpr1OvalTyGlobFreeTvarS | _tyExpr1OvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                        { _tyExpr1OtyTyTySigFreeTvarS | _tyExpr1OtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                         { _tyExpr1OtyTyGlobFreeTvarS | _tyExpr1OtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                          { _tyExpr1OtyKiGlobFreeTvarS | _tyExpr1OtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                           { _tyExpr1Otr | _tyExpr1Otr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                            { _tyExpr1OsysfEnv | _tyExpr1OsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                                             { _tyExpr1Oopts | _tyExpr1Oopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                              { _tyExpr1OmoduleNm | _tyExpr1OmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                                               { _tyExpr1OkiGam | _tyExpr1OkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                { _tyExpr1OfinTyVarMp | _tyExpr1OfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                                 { _tyExpr1OfinTyKiGam | _tyExpr1OfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                  { _tyExpr1OfinKiVarMp | _tyExpr1OfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (tyExpr1_8 _tyExpr1OfinKiVarMp _tyExpr1OfinTyKiGam _tyExpr1OfinTyVarMp _tyExpr1OkiGam _tyExpr1OmoduleNm _tyExpr1Oopts _tyExpr1OsysfEnv _tyExpr1Otr _tyExpr1OtyKiGlobFreeTvarS _tyExpr1OtyTyGlobFreeTvarS _tyExpr1OtyTyTySigFreeTvarS _tyExpr1OvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                   { ( _tyExpr1IallErrSq,_tyExpr1IappArgPPL,_tyExpr1IappFunNm,_tyExpr1IappFunPP,_tyExpr1IclMissNmS,_tyExpr1IclNmS,_tyExpr1IerrSq,_tyExpr1IgathMentrelFilterMp,_tyExpr1Ipp,_tyExpr1Itrpp,_tyExpr1ItyWildL) | True ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_tyExpr1IallErrSq `Seq.union` _tyExpr2IallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (_tyExpr1IclMissNmS `Set.union` _tyExpr2IclMissNmS) of
+                                                                                                                                                                                                                                                                                                                                                         { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (_tyExpr1IclNmS `Set.union` _tyExpr2IclNmS) of
+                                                                                                                                                                                                                                                                                                                                                          { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                          (case (_tyExpr1IerrSq `Seq.union` _tyExpr2IerrSq) of
+                                                                                                                                                                                                                                                                                                                                                           { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                           (case (_tyExpr1IgathMentrelFilterMp `mentrelFilterMpUnion` _tyExpr2IgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                            (case (_tyExpr1Ipp >#< hsnEqTilde >#< _tyExpr2Ipp) of
+                                                                                                                                                                                                                                                                                                                                                             { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                             (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_pr) of
+                                                                                                                                                                                                                                                                                                                                                               { _lhsOpr | _lhsOpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_tyExpr1Itrpp >< _tyExpr2Itrpp) of
+                                                                                                                                                                                                                                                                                                                                                                { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOpr,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                                                                       in  sem_PrExpr_Eq_8)) of
                                                                                                                                                                                                                                                                                { ( sem_PrExpr_8) | True ->
                                                                                                                                                                                                                                                                                ( _lhsOevTy,sem_PrExpr_8) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_PrExprs.hs b/src/UHC/Light/Compiler/EH/MainAG_PrExprs.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_PrExprs.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_PrExprs.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -97,6 +97,7 @@
          opts                 : EHCOpts
          polGam               : PolGam
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -118,6 +119,7 @@
          ppL                  : [PP_Doc]
          prL                  : [Pred]
          range                : Range
+         trpp                 : TrPP
          tyL                  : TyL
          tyVarWildMp          : TyVarWildMp
    alternatives:
@@ -144,6 +146,7 @@
        _lhsIpolGam
        _lhsIpolVarMp
        _lhsIsysfEnv
+       _lhsItr
        _lhsItyGam
        _lhsItyKiGam
        _lhsItyKiGlobFreeTvarS
@@ -163,143 +166,150 @@
                   (_lhsIpolGam `seq`
                    (_lhsIpolVarMp `seq`
                     (_lhsIsysfEnv `seq`
-                     (_lhsItyGam `seq`
-                      (_lhsItyKiGam `seq`
-                       (_lhsItyKiGlobFreeTvarS `seq`
-                        (_lhsItyTyGlobFreeTvarS `seq`
-                         (_lhsItyTyTySigFreeTvarS `seq`
-                          (_lhsIvalTyGlobFreeTvarS `seq`
-                           ((case (_lhsIvalTyGlobFreeTvarS) of
-                             { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                             (case (_lhsItyTyTySigFreeTvarS) of
-                              { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                              (case (_lhsItyTyGlobFreeTvarS) of
-                               { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                               (case (_lhsItyKiGlobFreeTvarS) of
-                                { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                (case (_lhsItyKiGam) of
-                                 { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
-                                 (case (_lhsItyGam) of
-                                  { _hdOtyGam | _hdOtyGam `seq` (True) ->
-                                  (case (_lhsIpolVarMp) of
-                                   { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
-                                   (case (_lhsIpolGam) of
-                                    { _hdOpolGam | _hdOpolGam `seq` (True) ->
-                                    (case (_lhsIknPolCtx) of
-                                     { _hdOknPolCtx | _hdOknPolCtx `seq` (True) ->
-                                     (case (_lhsIgUniq) of
-                                      { _hdOgUniq | _hdOgUniq `seq` (True) ->
-                                      (case (hd_) of
-                                       { ( _hdIrange,hd_1) | True ->
-                                           (case (hd_1 _hdOgUniq) of
-                                            { ( _hdIgUniq,hd_2) | True ->
-                                                (case (hd_2 _hdOtyGam) of
-                                                 { ( _hdIprTy,_hdIty,_hdItyGam,hd_3) | True ->
-                                                     (case (hd_3 _hdOknPolCtx) of
-                                                      { ( _hdIpolVarL,hd_4) | True ->
-                                                          (case (hd_4 _hdOpolGam _hdOpolVarMp) of
-                                                           { ( _hdIpolVarMp,hd_5) | True ->
-                                                               (case (hd_5 _hdOtyKiGam) of
-                                                                { ( _hdIintlTyKiGam,_hdItyKiGam,hd_6) | True ->
-                                                                    (case (_hdItyKiGam) of
-                                                                     { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
-                                                                     (case (_hdItyGam) of
-                                                                      { _tlOtyGam | _tlOtyGam `seq` (True) ->
-                                                                      (case (_lhsIsysfEnv) of
-                                                                       { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                       (case (_hdIpolVarMp) of
-                                                                        { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
-                                                                        (case (_lhsIpolGam) of
-                                                                         { _tlOpolGam | _tlOpolGam `seq` (True) ->
-                                                                         (case (_lhsIopts) of
-                                                                          { _tlOopts | _tlOopts `seq` (True) ->
-                                                                          (case (_lhsImoduleNm) of
-                                                                           { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                           (case (_lhsIknPolCtx) of
-                                                                            { _tlOknPolCtx | _tlOknPolCtx `seq` (True) ->
-                                                                            (case (_lhsIkiVarMp) of
-                                                                             { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
-                                                                             (case (hd_6 _hdOkiVarMp) of
-                                                                              { ( _hdIgathTyVarPolGam,_hdIki,_hdIkiVarMp,_hdItyVarWildMp,hd_7) | True ->
-                                                                                  (case (_hdIkiVarMp) of
-                                                                                   { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
-                                                                                   (case (_lhsIkiGam) of
-                                                                                    { _tlOkiGam | _tlOkiGam `seq` (True) ->
-                                                                                    (case (_hdIgUniq) of
-                                                                                     { _tlOgUniq | _tlOgUniq `seq` (True) ->
-                                                                                     (case (_lhsIfinTyVarMp) of
-                                                                                      { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                      (case (_lhsIfinTyKiGam) of
-                                                                                       { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                       (case (_lhsIfinKiVarMp) of
-                                                                                        { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                        (case (_lhsIclGam) of
-                                                                                         { _tlOclGam | _tlOclGam `seq` (True) ->
-                                                                                         (case (tl_ _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOgUniq _tlOkiGam _tlOkiVarMp _tlOknPolCtx _tlOmoduleNm _tlOopts _tlOpolGam _tlOpolVarMp _tlOsysfEnv _tlOtyGam _tlOtyKiGam _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
-                                                                                          { ( _tlIallErrSq,_tlIclMissNmS,_tlIclNmS,_tlIerrSq,_tlIgUniq,_tlIgathMentrelFilterMp,_tlIintlTyKiGam,_tlIkiVarMp,_tlIpolVarMp,_tlIpp,_tlIppL,_tlIprL,_tlIrange,_tlItyGam,_tlItyKiGam,_tlItyL,_tlItyVarWildMp) | True ->
-                                                                                              (case (_lhsIclGam) of
-                                                                                               { _hdOclGam | _hdOclGam `seq` (True) ->
-                                                                                               (case (hd_7 _hdOclGam) of
-                                                                                                { ( _hdIevTy,hd_8) | True ->
-                                                                                                    (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                     { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                     (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                      { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                      (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                       { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                       (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsIsysfEnv) of
-                                                                                                         { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                         (case (_lhsIopts) of
-                                                                                                          { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                          (case (_lhsImoduleNm) of
-                                                                                                           { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                           (case (_lhsIkiGam) of
-                                                                                                            { _hdOkiGam | _hdOkiGam `seq` (True) ->
-                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                             { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                              { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                               { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                               (case (hd_8 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
-                                                                                                                { ( _hdIallErrSq,_hdIclMissNmS,_hdIclNmS,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIpp,_hdIpr) | True ->
-                                                                                                                    (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                     (case (_hdIclMissNmS `Set.union` _tlIclMissNmS) of
-                                                                                                                      { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                      (case (_hdIclNmS `Set.union` _tlIclNmS) of
-                                                                                                                       { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                       (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                        (case (_tlIgUniq) of
-                                                                                                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                                                                                         (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                          (case (_hdIintlTyKiGam `gamUnion` _tlIintlTyKiGam) of
-                                                                                                                           { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                           (case (_tlIkiVarMp) of
-                                                                                                                            { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                            (case (_tlIpolVarMp) of
-                                                                                                                             { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                             (case (_hdIpp >-< _tlIpp) of
-                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                              (case (_hdIpp : _tlIppL) of
-                                                                                                                               { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                               (case (_hdIpr : _tlIprL) of
-                                                                                                                                { _lhsOprL | _lhsOprL `seq` (True) ->
-                                                                                                                                (case (_hdIrange `rangeUnion` _tlIrange) of
-                                                                                                                                 { _lhsOrange | _lhsOrange `seq` (True) ->
-                                                                                                                                 (case (_tlItyGam) of
-                                                                                                                                  { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                                  (case (_tlItyKiGam) of
-                                                                                                                                   { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                   (case (_hdIty : _tlItyL) of
-                                                                                                                                    { _lhsOtyL | _lhsOtyL `seq` (True) ->
-                                                                                                                                    (case (_hdItyVarWildMp `Map.union` _tlItyVarWildMp) of
-                                                                                                                                     { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                     ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgUniq,_lhsOgathMentrelFilterMp,_lhsOintlTyKiGam,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOpp,_lhsOppL,_lhsOprL,_lhsOrange,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyL,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))
+                     (_lhsItr `seq`
+                      (_lhsItyGam `seq`
+                       (_lhsItyKiGam `seq`
+                        (_lhsItyKiGlobFreeTvarS `seq`
+                         (_lhsItyTyGlobFreeTvarS `seq`
+                          (_lhsItyTyTySigFreeTvarS `seq`
+                           (_lhsIvalTyGlobFreeTvarS `seq`
+                            ((case (_lhsIvalTyGlobFreeTvarS) of
+                              { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                              (case (_lhsItyTyTySigFreeTvarS) of
+                               { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                               (case (_lhsItyTyGlobFreeTvarS) of
+                                { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                (case (_lhsItyKiGlobFreeTvarS) of
+                                 { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                 (case (_lhsItyKiGam) of
+                                  { _hdOtyKiGam | _hdOtyKiGam `seq` (True) ->
+                                  (case (_lhsItyGam) of
+                                   { _hdOtyGam | _hdOtyGam `seq` (True) ->
+                                   (case (_lhsIpolVarMp) of
+                                    { _hdOpolVarMp | _hdOpolVarMp `seq` (True) ->
+                                    (case (_lhsIpolGam) of
+                                     { _hdOpolGam | _hdOpolGam `seq` (True) ->
+                                     (case (_lhsIknPolCtx) of
+                                      { _hdOknPolCtx | _hdOknPolCtx `seq` (True) ->
+                                      (case (_lhsIgUniq) of
+                                       { _hdOgUniq | _hdOgUniq `seq` (True) ->
+                                       (case (hd_) of
+                                        { ( _hdIrange,hd_1) | True ->
+                                            (case (hd_1 _hdOgUniq) of
+                                             { ( _hdIgUniq,hd_2) | True ->
+                                                 (case (hd_2 _hdOtyGam) of
+                                                  { ( _hdIprTy,_hdIty,_hdItyGam,hd_3) | True ->
+                                                      (case (hd_3 _hdOknPolCtx) of
+                                                       { ( _hdIpolVarL,hd_4) | True ->
+                                                           (case (hd_4 _hdOpolGam _hdOpolVarMp) of
+                                                            { ( _hdIpolVarMp,hd_5) | True ->
+                                                                (case (hd_5 _hdOtyKiGam) of
+                                                                 { ( _hdIintlTyKiGam,_hdItyKiGam,hd_6) | True ->
+                                                                     (case (_hdItyKiGam) of
+                                                                      { _tlOtyKiGam | _tlOtyKiGam `seq` (True) ->
+                                                                      (case (_hdItyGam) of
+                                                                       { _tlOtyGam | _tlOtyGam `seq` (True) ->
+                                                                       (case (_lhsItr) of
+                                                                        { _tlOtr | _tlOtr `seq` (True) ->
+                                                                        (case (_lhsIsysfEnv) of
+                                                                         { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                         (case (_hdIpolVarMp) of
+                                                                          { _tlOpolVarMp | _tlOpolVarMp `seq` (True) ->
+                                                                          (case (_lhsIpolGam) of
+                                                                           { _tlOpolGam | _tlOpolGam `seq` (True) ->
+                                                                           (case (_lhsIopts) of
+                                                                            { _tlOopts | _tlOopts `seq` (True) ->
+                                                                            (case (_lhsImoduleNm) of
+                                                                             { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                             (case (_lhsIknPolCtx) of
+                                                                              { _tlOknPolCtx | _tlOknPolCtx `seq` (True) ->
+                                                                              (case (_lhsIkiVarMp) of
+                                                                               { _hdOkiVarMp | _hdOkiVarMp `seq` (True) ->
+                                                                               (case (hd_6 _hdOkiVarMp) of
+                                                                                { ( _hdIgathTyVarPolGam,_hdIki,_hdIkiVarMp,_hdItyVarWildMp,hd_7) | True ->
+                                                                                    (case (_hdIkiVarMp) of
+                                                                                     { _tlOkiVarMp | _tlOkiVarMp `seq` (True) ->
+                                                                                     (case (_lhsIkiGam) of
+                                                                                      { _tlOkiGam | _tlOkiGam `seq` (True) ->
+                                                                                      (case (_hdIgUniq) of
+                                                                                       { _tlOgUniq | _tlOgUniq `seq` (True) ->
+                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                        { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                         { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                          { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                          (case (_lhsIclGam) of
+                                                                                           { _tlOclGam | _tlOclGam `seq` (True) ->
+                                                                                           (case (tl_ _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOgUniq _tlOkiGam _tlOkiVarMp _tlOknPolCtx _tlOmoduleNm _tlOopts _tlOpolGam _tlOpolVarMp _tlOsysfEnv _tlOtr _tlOtyGam _tlOtyKiGam _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
+                                                                                            { ( _tlIallErrSq,_tlIclMissNmS,_tlIclNmS,_tlIerrSq,_tlIgUniq,_tlIgathMentrelFilterMp,_tlIintlTyKiGam,_tlIkiVarMp,_tlIpolVarMp,_tlIpp,_tlIppL,_tlIprL,_tlIrange,_tlItrpp,_tlItyGam,_tlItyKiGam,_tlItyL,_tlItyVarWildMp) | True ->
+                                                                                                (case (_lhsIclGam) of
+                                                                                                 { _hdOclGam | _hdOclGam `seq` (True) ->
+                                                                                                 (case (hd_7 _hdOclGam) of
+                                                                                                  { ( _hdIevTy,hd_8) | True ->
+                                                                                                      (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                       { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                        { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                         { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                          { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                          (case (_lhsItr) of
+                                                                                                           { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                            { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                            (case (_lhsIopts) of
+                                                                                                             { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                             (case (_lhsImoduleNm) of
+                                                                                                              { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                              (case (_lhsIkiGam) of
+                                                                                                               { _hdOkiGam | _hdOkiGam `seq` (True) ->
+                                                                                                               (case (_lhsIfinTyVarMp) of
+                                                                                                                { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIfinTyKiGam) of
+                                                                                                                 { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                 (case (_lhsIfinKiVarMp) of
+                                                                                                                  { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                  (case (hd_8 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtr _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
+                                                                                                                   { ( _hdIallErrSq,_hdIclMissNmS,_hdIclNmS,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIpp,_hdIpr,_hdItrpp) | True ->
+                                                                                                                       (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                        (case (_hdIclMissNmS `Set.union` _tlIclMissNmS) of
+                                                                                                                         { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                         (case (_hdIclNmS `Set.union` _tlIclNmS) of
+                                                                                                                          { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                          (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                           { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                           (case (_tlIgUniq) of
+                                                                                                                            { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                                                                                            (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                             (case (_hdIintlTyKiGam `gamUnion` _tlIintlTyKiGam) of
+                                                                                                                              { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                              (case (_tlIkiVarMp) of
+                                                                                                                               { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                               (case (_tlIpolVarMp) of
+                                                                                                                                { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                 (case (_hdIpp : _tlIppL) of
+                                                                                                                                  { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                  (case (_hdIpr : _tlIprL) of
+                                                                                                                                   { _lhsOprL | _lhsOprL `seq` (True) ->
+                                                                                                                                   (case (_hdIrange `rangeUnion` _tlIrange) of
+                                                                                                                                    { _lhsOrange | _lhsOrange `seq` (True) ->
+                                                                                                                                    (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                     (case (_tlItyGam) of
+                                                                                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                                      (case (_tlItyKiGam) of
+                                                                                                                                       { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                       (case (_hdIty : _tlItyL) of
+                                                                                                                                        { _lhsOtyL | _lhsOtyL `seq` (True) ->
+                                                                                                                                        (case (_hdItyVarWildMp `Map.union` _tlItyVarWildMp) of
+                                                                                                                                         { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                         ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgUniq,_lhsOgathMentrelFilterMp,_lhsOintlTyKiGam,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOpp,_lhsOppL,_lhsOprL,_lhsOrange,_lhsOtrpp,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyL,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))
 
 sem_PrExprs_Nil :: T_PrExprs
 
@@ -317,6 +327,7 @@
        _lhsIpolGam
        _lhsIpolVarMp
        _lhsIsysfEnv
+       _lhsItr
        _lhsItyGam
        _lhsItyKiGam
        _lhsItyKiGlobFreeTvarS
@@ -336,45 +347,48 @@
                   (_lhsIpolGam `seq`
                    (_lhsIpolVarMp `seq`
                     (_lhsIsysfEnv `seq`
-                     (_lhsItyGam `seq`
-                      (_lhsItyKiGam `seq`
-                       (_lhsItyKiGlobFreeTvarS `seq`
-                        (_lhsItyTyGlobFreeTvarS `seq`
-                         (_lhsItyTyTySigFreeTvarS `seq`
-                          (_lhsIvalTyGlobFreeTvarS `seq`
-                           ((case (Seq.empty) of
-                             { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                             (case (Set.empty) of
-                              { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                     (_lhsItr `seq`
+                      (_lhsItyGam `seq`
+                       (_lhsItyKiGam `seq`
+                        (_lhsItyKiGlobFreeTvarS `seq`
+                         (_lhsItyTyGlobFreeTvarS `seq`
+                          (_lhsItyTyTySigFreeTvarS `seq`
+                           (_lhsIvalTyGlobFreeTvarS `seq`
+                            ((case (Seq.empty) of
+                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                               (case (Set.empty) of
-                               { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                               (case (Seq.empty) of
-                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                (case (_lhsIgUniq) of
-                                 { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                 (case (Map.empty) of
-                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                  (case (emptyGam) of
-                                   { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                   (case (_lhsIkiVarMp) of
-                                    { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                    (case (_lhsIpolVarMp) of
-                                     { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                     (case (empty) of
-                                      { _lhsOpp | _lhsOpp `seq` (True) ->
-                                      (case ([]) of
-                                       { _lhsOppL | _lhsOppL `seq` (True) ->
+                               { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                               (case (Set.empty) of
+                                { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                (case (Seq.empty) of
+                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                 (case (_lhsIgUniq) of
+                                  { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                  (case (Map.empty) of
+                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                   (case (emptyGam) of
+                                    { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                    (case (_lhsIkiVarMp) of
+                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                     (case (_lhsIpolVarMp) of
+                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                      (case (empty) of
+                                       { _lhsOpp | _lhsOpp `seq` (True) ->
                                        (case ([]) of
-                                        { _lhsOprL | _lhsOprL `seq` (True) ->
-                                        (case (emptyRange) of
-                                         { _lhsOrange | _lhsOrange `seq` (True) ->
-                                         (case (_lhsItyGam) of
-                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                          (case (_lhsItyKiGam) of
-                                           { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                           (case ([]) of
-                                            { _lhsOtyL | _lhsOtyL `seq` (True) ->
-                                            (case (Map.empty) of
-                                             { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                             ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgUniq,_lhsOgathMentrelFilterMp,_lhsOintlTyKiGam,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOpp,_lhsOppL,_lhsOprL,_lhsOrange,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyL,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))))))))
+                                        { _lhsOppL | _lhsOppL `seq` (True) ->
+                                        (case ([]) of
+                                         { _lhsOprL | _lhsOprL `seq` (True) ->
+                                         (case (emptyRange) of
+                                          { _lhsOrange | _lhsOrange `seq` (True) ->
+                                          (case (trppEmpty) of
+                                           { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                           (case (_lhsItyGam) of
+                                            { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                            (case (_lhsItyKiGam) of
+                                             { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                             (case ([]) of
+                                              { _lhsOtyL | _lhsOtyL `seq` (True) ->
+                                              (case (Map.empty) of
+                                               { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                               ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgUniq,_lhsOgathMentrelFilterMp,_lhsOintlTyKiGam,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOpp,_lhsOppL,_lhsOprL,_lhsOrange,_lhsOtrpp,_lhsOtyGam,_lhsOtyKiGam,_lhsOtyL,_lhsOtyVarWildMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))))))))
 
diff --git a/src/UHC/Light/Compiler/EH/MainAG_RecExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_RecExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_RecExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_RecExpr.hs
@@ -19,1544 +19,1599 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- RecExpr -----------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attribute:
-         gUniq                : UID
-   visit 2:
-      inherited attributes:
-         kiGam                : KiGam
-         lexLev               : Int
-      chained attribute:
-         predSameScopeCounter : Int
-   visit 3:
-      inherited attributes:
-         opts                 : EHCOpts
-         polGam               : PolGam
-         predScope            : PredScope
-         tyGam                : TyGam
-         tyKiGam              : TyKiGam
-         tyKiGlobFreeTvarS    : TyVarIdS
-      chained attributes:
-         kiVarMp              : VarMp
-         polVarMp             : VarMp
-   visit 4:
-      inherited attributes:
-         clGam                : ClGam
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         tyTyTySigFreeTvarS   : TyVarIdS
-      chained attribute:
-         gathDataGam          : DataGam
-   visit 5:
-      inherited attribute:
-         dataGam              : DataGam
-      chained attribute:
-         positionalFldNmL     : [HsName]
-      synthesized attribute:
-         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
-   visit 6:
-      inherited attributes:
-         chrStore             : ScopedPredStore
-         clDfGam              : ClassDefaultGam
-         fiOpts               : FIOpts
-         knTy                 : Ty
-         tvKiVarMp            : VarMp
-         tyTyGlobFreeTvarS    : TyVarIdS
-         valGam               : ValGam
-         valTyGlobFreeTvarS   : TyVarIdS
-      chained attribute:
-         tyVarMp              : VarMp
-      synthesized attributes:
-         gathCnstrMp          : CHRPredOccCnstrMp
-         gathRangeMp          : RangeMp
-         noLetQuantTyVarIdS   : TyVarIdS
-   visit 7:
-      inherited attributes:
-         chrEvidBindMp        : EvidKeyToCBindMap
-         chrScopeBindMp       : PredScopeToCBindMap
-         finTyVarMp           : VarMp
-         finValGam            : ValGam
-         moduleNm             : HsName
-         rangeMp              : RangeMp
-         sysfEnv              : ToSysfEnv
-      chained attribute:
-         cSubst               : CSubst
-      synthesized attributes:
-         allErrSq             : ErrSq
-         errSq                : ErrSq
-         extNm                : HsName
-         fuCExprL             : FieldUpdateL CExpr
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         gathTvKiVarMp        : VarMp
-         isExtFromEmpty       : Bool
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         recCExpr             : CExpr
-         ty                   : Ty
-   alternatives:
-      alternative Empty:
-         child hsrange        : {Range}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup205     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup205     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup205     : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup205     : _
-            intra range       : {Range}
-         visit 5:
-            intra _tup205     : _
-            intra range       : {Range}
-         visit 6:
-            local lUniq       : {UID}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup205     : _
-            intra range       : {Range}
-         visit 7:
-            local pp          : _
-            local recCExpr    : _
-            local ty          : {Ty}
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-      alternative Ext:
-         child hsrange        : {Range}
-         child recExpr        : RecExpr 
-         child mbNm           : {Maybe HsName}
-         child expr           : Expr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup209     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup209     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup209     : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup209     : _
-            intra range       : {Range}
-         visit 5:
-            local _tup208     : _
-            intra _tup209     : _
-            intra range       : {Range}
-         visit 6:
-            local lUniq2      : {UID}
-            local lUniq       : {UID}
-            local positionalNm : {HsName}
-            local nm          : {HsName}
-            local _tup206     : _
-            local knRecTy     : {Ty}
-            local knFIOpts    : {FIOpts}
-            local fe          : {FIEnv}
-            local foKnRec     : {FIOut}
-            local recTyVarMp  : _
-            local knExprTy    : {Ty}
-            local knTailTy    : _
-            local _tup207     : _
-            local recKnTlTy   : {Ty}
-            local lUniq3      : {UID}
-            local knRowTy     : _
-            local prUid       : {PredOccId}
-            local prOccL      : {[PredOcc]}
-            local hereCnstrMp : _
-            intra _tup209     : _
-            intra _tup208     : _
-            intra range       : {Range}
-         visit 7:
-            local pp          : _
-            local knRecHasLab : {Bool}
-            local offset      : _
-            local rcexpr      : _
-            local ty          : {Ty}
-            intra nm          : {HsName}
-            intra positionalNm : {HsName}
-            intra foKnRec     : {FIOut}
-            intra range       : {Range}
-            intra _tup207     : _
-            intra prUid       : {PredOccId}
-      alternative Upd:
-         child hsrange        : {Range}
-         child recExpr        : RecExpr 
-         child nm             : {HsName}
-         child expr           : Expr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup212     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup212     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup212     : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup212     : _
-            intra range       : {Range}
-         visit 5:
-            intra _tup212     : _
-            intra range       : {Range}
-         visit 6:
-            local lUniq3      : {UID}
-            local lUniq2      : {UID}
-            local lUniq       : {UID}
-            local _tup210     : _
-            local knRecTy     : {Ty}
-            local knFIOpts    : {FIOpts}
-            local fe          : {FIEnv}
-            local foKnRec     : {FIOut}
-            local recTyVarMp  : _
-            local knExprTy    : {Ty}
-            local knTailTy    : _
-            local _tup211     : _
-            local recKnTlTy   : {Ty}
-            local lUniq4      : {UID}
-            local knRowTy     : _
-            local prUid       : {PredOccId}
-            local prOccL      : {[PredOcc]}
-            local hereCnstrMp : _
-            intra _tup212     : _
-            intra range       : {Range}
-         visit 7:
-            local pp          : _
-            local knRecHasLab : {Bool}
-            local offset      : _
-            local rcexpr      : _
-            local ty          : {Ty}
-            intra foKnRec     : {FIOut}
-            intra range       : {Range}
-            intra _tup211     : _
-            intra prUid       : {PredOccId}
-      alternative Expr:
-         child hsrange        : {Range}
-         child expr           : Expr 
-         visit 0:
-            local range       : {Range}
-         visit 7:
-            local pp          : _
-            local recCExpr    : _
--}
-sem_RecExpr_Empty :: Range ->
-                     T_RecExpr
-
-sem_RecExpr_Empty hsrange_ | hsrange_ `seq` (True) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_RecExpr_Empty_1 :: T_RecExpr_1
-                  sem_RecExpr_Empty_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup205 | __tup205 `seq` (True) ->
-                             (case (__tup205) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_RecExpr_Empty_2 :: T_RecExpr_2
-                                          sem_RecExpr_Empty_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_RecExpr_Empty_3 :: T_RecExpr_3
-                                                                   sem_RecExpr_Empty_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case ((let sem_RecExpr_Empty_4 :: T_RecExpr_4
-                                                                                                  sem_RecExpr_Empty_4 =
-                                                                                                      (\ _lhsIclGam
-                                                                                                         _lhsIfinKiVarMp
-                                                                                                         _lhsIfinTyKiGam
-                                                                                                         _lhsIgathDataGam
-                                                                                                         _lhsItyTyTySigFreeTvarS ->
-                                                                                                           _lhsIclGam `seq`
-                                                                                                           (_lhsIfinKiVarMp `seq`
-                                                                                                            (_lhsIfinTyKiGam `seq`
-                                                                                                             (_lhsIgathDataGam `seq`
-                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                               ((case (_lhsIgathDataGam) of
-                                                                                                                 { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                 (case ((let sem_RecExpr_Empty_5 :: T_RecExpr_5
-                                                                                                                             sem_RecExpr_Empty_5 =
-                                                                                                                                 (\ _lhsIdataGam
-                                                                                                                                    _lhsIpositionalFldNmL ->
-                                                                                                                                      _lhsIdataGam `seq`
-                                                                                                                                      (_lhsIpositionalFldNmL `seq`
-                                                                                                                                       ((case (Seq.empty) of
-                                                                                                                                         { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                         (case (_lhsIpositionalFldNmL) of
-                                                                                                                                          { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                                          (case ((let sem_RecExpr_Empty_6 :: T_RecExpr_6
-                                                                                                                                                      sem_RecExpr_Empty_6 =
-                                                                                                                                                          (\ _lhsIchrStore
-                                                                                                                                                             _lhsIclDfGam
-                                                                                                                                                             _lhsIfiOpts
-                                                                                                                                                             _lhsIknTy
-                                                                                                                                                             _lhsItvKiVarMp
-                                                                                                                                                             _lhsItyTyGlobFreeTvarS
-                                                                                                                                                             _lhsItyVarMp
-                                                                                                                                                             _lhsIvalGam
-                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                               _lhsIchrStore `seq`
-                                                                                                                                                               (_lhsIclDfGam `seq`
-                                                                                                                                                                (_lhsIfiOpts `seq`
-                                                                                                                                                                 (_lhsIknTy `seq`
-                                                                                                                                                                  (_lhsItvKiVarMp `seq`
-                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                    (_lhsItyVarMp `seq`
-                                                                                                                                                                     (_lhsIvalGam `seq`
-                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                       ((case (Map.empty) of
-                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                         (case (Map.empty) of
-                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                          (case (Set.empty) of
-                                                                                                                                                                           { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                           (case (__tup205) of
-                                                                                                                                                                            { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                                            (case (defaultFIEnv
-                                                                                                                                                                                       { feEHCOpts = _lhsIopts
-                                                                                                                                                                                       , fePredScope = _lhsIpredScope
-                                                                                                                                                                                       , feTyGam = _lhsItyGam
-                                                                                                                                                                                       , fePolGam = _lhsIpolGam
-                                                                                                                                                                                       , feRange = _range
-                                                                                                                                                                                       }) of
-                                                                                                                                                                             { _fe | _fe `seq` (True) ->
-                                                                                                                                                                             (case (fitsIn (_lhsIfiOpts) _fe _lUniq _lhsItyVarMp recRecEmp _lhsIknTy) of
-                                                                                                                                                                              { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                              (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
-                                                                                                                                                                               { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                               (case ((let sem_RecExpr_Empty_7 :: T_RecExpr_7
-                                                                                                                                                                                           sem_RecExpr_Empty_7 =
-                                                                                                                                                                                               (\ _lhsIcSubst
-                                                                                                                                                                                                  _lhsIchrEvidBindMp
-                                                                                                                                                                                                  _lhsIchrScopeBindMp
-                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                  _lhsIfinValGam
-                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                  _lhsIrangeMp
-                                                                                                                                                                                                  _lhsIsysfEnv ->
-                                                                                                                                                                                                    _lhsIcSubst `seq`
-                                                                                                                                                                                                    (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                     (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                      (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                       (_lhsIfinValGam `seq`
-                                                                                                                                                                                                        (_lhsImoduleNm `seq`
-                                                                                                                                                                                                         (_lhsIrangeMp `seq`
-                                                                                                                                                                                                          (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                           ((case (Seq.empty) of
-                                                                                                                                                                                                             { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                             (case (_lhsIcSubst) of
-                                                                                                                                                                                                              { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                              (case (hsnORec >|< hsnCRec) of
-                                                                                                                                                                                                               { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                               (case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
-                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                (case (hsnRowEmpty) of
-                                                                                                                                                                                                                 { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                  { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                  (case (Map.empty) of
-                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                   (case (emptyVarMp) of
-                                                                                                                                                                                                                    { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                    (case (True) of
-                                                                                                                                                                                                                     { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
-                                                                                                                                                                                                                     (case (_pp) of
-                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                       { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                       (case (acoreTagTupTy CTagRec (acoreTyErr "RecExpr.Empty.recCExpr") []) of
-                                                                                                                                                                                                                        { _recCExpr | _recCExpr `seq` (True) ->
-                                                                                                                                                                                                                        (case (_recCExpr) of
-                                                                                                                                                                                                                         { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
-                                                                                                                                                                                                                         (case (foTy _fo_) of
-                                                                                                                                                                                                                          { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                          (case (_ty) of
-                                                                                                                                                                                                                           { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                           ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                       in  sem_RecExpr_Empty_7)) of
-                                                                                                                                                                                { ( sem_RecExpr_7) | True ->
-                                                                                                                                                                                ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                  in  sem_RecExpr_Empty_6)) of
-                                                                                                                                           { ( sem_RecExpr_6) | True ->
-                                                                                                                                           ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }))))
-                                                                                                                         in  sem_RecExpr_Empty_5)) of
-                                                                                                                  { ( sem_RecExpr_5) | True ->
-                                                                                                                  ( _lhsOgathDataGam,sem_RecExpr_5) }) })))))))
-                                                                                              in  sem_RecExpr_Empty_4)) of
-                                                                                       { ( sem_RecExpr_4) | True ->
-                                                                                       ( _lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }))))))))))
-                                                               in  sem_RecExpr_Empty_3)) of
-                                                        { ( sem_RecExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) })))))
-                                      in  sem_RecExpr_Empty_2)) of
-                               { ( sem_RecExpr_2) | True ->
-                               ( _lhsOgUniq,sem_RecExpr_2) }) }) })))
-              in  sem_RecExpr_Empty_1)) of
-       { ( sem_RecExpr_1) | True ->
-       ( _lhsOrange,sem_RecExpr_1) }) }) })
-
-sem_RecExpr_Ext :: Range ->
-                   T_RecExpr ->
-                   (Maybe HsName) ->
-                   T_Expr ->
-                   T_RecExpr
-
-sem_RecExpr_Ext hsrange_ recExpr_ mbNm_ expr_ | hsrange_ `seq` (recExpr_ `seq` (mbNm_ `seq` (expr_ `seq` (True)))) =
-    (case (expr_) of
-     { ( _exprIrange,expr_1) | True ->
-         (case (recExpr_) of
-          { ( _recExprIrange,recExpr_1) | True ->
-              (case (rangeUnions [hsrange_, _recExprIrange, _exprIrange  ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_RecExpr_Ext_1 :: T_RecExpr_1
-                            sem_RecExpr_Ext_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
-                                       { __tup209 | __tup209 `seq` (True) ->
-                                       (case (__tup209) of
-                                        { (_recExprOgUniq,_,_,_) | _recExprOgUniq `seq` (True) ->
-                                        (case (recExpr_1 _recExprOgUniq) of
-                                         { ( _recExprIgUniq,recExpr_2) | True ->
-                                             (case (_recExprIgUniq) of
-                                              { _exprOgUniq | _exprOgUniq `seq` (True) ->
-                                              (case (expr_1 _exprOgUniq) of
-                                               { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
-                                                   (case (_exprIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_RecExpr_Ext_2 :: T_RecExpr_2
-                                                                sem_RecExpr_Ext_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _recExprOpredSameScopeCounter | _recExprOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _recExprOlexLev | _recExprOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _recExprOkiGam | _recExprOkiGam `seq` (True) ->
-                                                                               (case (recExpr_2 _recExprOkiGam _recExprOlexLev _recExprOpredSameScopeCounter) of
-                                                                                { ( _recExprIpredSameScopeCounter,recExpr_3) | True ->
-                                                                                    (case (_recExprIpredSameScopeCounter) of
-                                                                                     { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case (_lhsIlexLev) of
-                                                                                      { _exprOlexLev | _exprOlexLev `seq` (True) ->
-                                                                                      (case (_lhsIkiGam) of
-                                                                                       { _exprOkiGam | _exprOkiGam `seq` (True) ->
-                                                                                       (case (True) of
-                                                                                        { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
-                                                                                        (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
-                                                                                         { ( _exprIpredSameScopeCounter,expr_3) | True ->
-                                                                                             (case (_exprIpredSameScopeCounter) of
-                                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                              (case ((let sem_RecExpr_Ext_3 :: T_RecExpr_3
-                                                                                                          sem_RecExpr_Ext_3 =
-                                                                                                              (\ _lhsIkiVarMp
-                                                                                                                 _lhsIopts
-                                                                                                                 _lhsIpolGam
-                                                                                                                 _lhsIpolVarMp
-                                                                                                                 _lhsIpredScope
-                                                                                                                 _lhsItyGam
-                                                                                                                 _lhsItyKiGam
-                                                                                                                 _lhsItyKiGlobFreeTvarS ->
-                                                                                                                   _lhsIkiVarMp `seq`
-                                                                                                                   (_lhsIopts `seq`
-                                                                                                                    (_lhsIpolGam `seq`
-                                                                                                                     (_lhsIpolVarMp `seq`
-                                                                                                                      (_lhsIpredScope `seq`
-                                                                                                                       (_lhsItyGam `seq`
-                                                                                                                        (_lhsItyKiGam `seq`
-                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsItyGam) of
-                                                                                                                              { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                               { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                { _recExprOtyKiGlobFreeTvarS | _recExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                (case (_lhsItyKiGam) of
-                                                                                                                                 { _recExprOtyKiGam | _recExprOtyKiGam `seq` (True) ->
-                                                                                                                                 (case (_lhsItyGam) of
-                                                                                                                                  { _recExprOtyGam | _recExprOtyGam `seq` (True) ->
-                                                                                                                                  (case (_lhsIpredScope) of
-                                                                                                                                   { _recExprOpredScope | _recExprOpredScope `seq` (True) ->
-                                                                                                                                   (case (_lhsIpolVarMp) of
-                                                                                                                                    { _recExprOpolVarMp | _recExprOpolVarMp `seq` (True) ->
-                                                                                                                                    (case (_lhsIpolGam) of
-                                                                                                                                     { _recExprOpolGam | _recExprOpolGam `seq` (True) ->
-                                                                                                                                     (case (_lhsIopts) of
-                                                                                                                                      { _recExprOopts | _recExprOopts `seq` (True) ->
-                                                                                                                                      (case (_lhsIkiVarMp) of
-                                                                                                                                       { _recExprOkiVarMp | _recExprOkiVarMp `seq` (True) ->
-                                                                                                                                       (case (recExpr_3 _recExprOkiVarMp _recExprOopts _recExprOpolGam _recExprOpolVarMp _recExprOpredScope _recExprOtyGam _recExprOtyKiGam _recExprOtyKiGlobFreeTvarS) of
-                                                                                                                                        { ( _recExprIkiVarMp,_recExprIpolVarMp,recExpr_4) | True ->
-                                                                                                                                            (case (_recExprIpolVarMp) of
-                                                                                                                                             { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                                                             (case (_lhsIpolGam) of
-                                                                                                                                              { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                                                              (case (_lhsIopts) of
-                                                                                                                                               { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                                                               (case (_recExprIkiVarMp) of
-                                                                                                                                                { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                                                                (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                                                 { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                                                     (case (_exprIkiVarMp) of
-                                                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                      (case (_exprIpolVarMp) of
-                                                                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                       (case ((let sem_RecExpr_Ext_4 :: T_RecExpr_4
-                                                                                                                                                                   sem_RecExpr_Ext_4 =
-                                                                                                                                                                       (\ _lhsIclGam
-                                                                                                                                                                          _lhsIfinKiVarMp
-                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                          _lhsIgathDataGam
-                                                                                                                                                                          _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                                                            (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                             (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                              (_lhsIgathDataGam `seq`
-                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                  { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                   { _recExprOtyTyTySigFreeTvarS | _recExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIgathDataGam) of
-                                                                                                                                                                                    { _recExprOgathDataGam | _recExprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                     { _recExprOfinTyKiGam | _recExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                      { _recExprOfinKiVarMp | _recExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                                                       { _recExprOclGam | _recExprOclGam `seq` (True) ->
-                                                                                                                                                                                       (case (recExpr_4 _recExprOclGam _recExprOfinKiVarMp _recExprOfinTyKiGam _recExprOgathDataGam _recExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                        { ( _recExprIgathDataGam,recExpr_5) | True ->
-                                                                                                                                                                                            (case (_recExprIgathDataGam) of
-                                                                                                                                                                                             { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                              { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                               { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                               (case (_lhsIclGam) of
-                                                                                                                                                                                                { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                                                                (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                 { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                                                                     (case (_exprIgathDataGam) of
-                                                                                                                                                                                                      { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                      (case ((let sem_RecExpr_Ext_5 :: T_RecExpr_5
-                                                                                                                                                                                                                  sem_RecExpr_Ext_5 =
-                                                                                                                                                                                                                      (\ _lhsIdataGam
-                                                                                                                                                                                                                         _lhsIpositionalFldNmL ->
-                                                                                                                                                                                                                           _lhsIdataGam `seq`
-                                                                                                                                                                                                                           (_lhsIpositionalFldNmL `seq`
-                                                                                                                                                                                                                            ((case (_lhsIdataGam) of
-                                                                                                                                                                                                                              { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIdataGam) of
-                                                                                                                                                                                                                               { _recExprOdataGam | _recExprOdataGam `seq` (True) ->
-                                                                                                                                                                                                                               (case (expr_5 _exprOdataGam) of
-                                                                                                                                                                                                                                { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                                                                                    (case (_lhsIpositionalFldNmL) of
-                                                                                                                                                                                                                                     { _recExprOpositionalFldNmL | _recExprOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                                                                     (case (recExpr_5 _recExprOdataGam _recExprOpositionalFldNmL) of
-                                                                                                                                                                                                                                      { ( _recExprIchrInstDeclSq,_recExprIpositionalFldNmL,recExpr_6) | True ->
-                                                                                                                                                                                                                                          (case (_recExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
-                                                                                                                                                                                                                                           { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                           (case (hdAndTl _recExprIpositionalFldNmL) of
-                                                                                                                                                                                                                                            { __tup208 | __tup208 `seq` (True) ->
-                                                                                                                                                                                                                                            (case (__tup208) of
-                                                                                                                                                                                                                                             { (_,_lhsOpositionalFldNmL) | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                                                                             (case ((let sem_RecExpr_Ext_6 :: T_RecExpr_6
-                                                                                                                                                                                                                                                         sem_RecExpr_Ext_6 =
-                                                                                                                                                                                                                                                             (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                _lhsIclDfGam
-                                                                                                                                                                                                                                                                _lhsIfiOpts
-                                                                                                                                                                                                                                                                _lhsIknTy
-                                                                                                                                                                                                                                                                _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                _lhsItyVarMp
-                                                                                                                                                                                                                                                                _lhsIvalGam
-                                                                                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                  _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                  (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                   (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                                    (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                       (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                        (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                            { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                             { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                              { _recExprOvalTyGlobFreeTvarS | _recExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                               { _recExprOvalGam | _recExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                { _recExprOtyTyGlobFreeTvarS | _recExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                 { _recExprOtvKiVarMp | _recExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                  { _recExprOclDfGam | _recExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                   { _recExprOchrStore | _recExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (__tup209) of
-                                                                                                                                                                                                                                                                                    { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (__tup209) of
-                                                                                                                                                                                                                                                                                     { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (__tup208) of
-                                                                                                                                                                                                                                                                                      { (_positionalNm,_) | _positionalNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (maybe _positionalNm id mbNm_) of
-                                                                                                                                                                                                                                                                                       { _nm | _nm `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (let  [r,e] = mkNewTyVarL 2 _lUniq
-                                                                                                                                                                                                                                                                                                   tl = hsnRec `appConApp` [r]
-                                                                                                                                                                                                                                                                                              in   (r, tl `recRecExt` [(_nm,e)], tl, e)) of
-                                                                                                                                                                                                                                                                                        { __tup206 | __tup206 `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (__tup206) of
-                                                                                                                                                                                                                                                                                         { (_,_knRecTy,_,_) | _knRecTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                          { _knFIOpts | _knFIOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                                     { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                                     , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                                     , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                                     , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                                     , feRange = _range
-                                                                                                                                                                                                                                                                                                     }) of
-                                                                                                                                                                                                                                                                                           { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (fitsIn _knFIOpts _fe _lUniq2 _lhsItyVarMp _knRecTy _lhsIknTy) of
-                                                                                                                                                                                                                                                                                            { _foKnRec | _foKnRec `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (foVarMp _foKnRec `varUpd` _lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                             { _recTyVarMp | _recTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (__tup206) of
-                                                                                                                                                                                                                                                                                              { (_,_,_,_knExprTy) | _knExprTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (__tup206) of
-                                                                                                                                                                                                                                                                                               { (_,_,_knTailTy,_) | _knTailTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (maybe (False,_knTailTy,_knExprTy) (\(r,e) -> (True,r,e)) $ tyRecExtrWithLkup (varmpTyLookupCyc2 _recTyVarMp) _nm $ foTy _foKnRec) of
-                                                                                                                                                                                                                                                                                                { __tup207 | __tup207 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (__tup207) of
-                                                                                                                                                                                                                                                                                                 { (_,_recKnTlTy,_) | _recKnTlTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_recKnTlTy) of
-                                                                                                                                                                                                                                                                                                  { _recExprOknTy | _recExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (_recTyVarMp) of
-                                                                                                                                                                                                                                                                                                   { _recExprOtyVarMp | _recExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_lhsIfiOpts {fioNoRLabElimFor = _nm : fioNoRLabElimFor _lhsIfiOpts}) of
-                                                                                                                                                                                                                                                                                                    { _recExprOfiOpts | _recExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case (recExpr_6 _recExprOchrStore _recExprOclDfGam _recExprOfiOpts _recExprOknTy _recExprOtvKiVarMp _recExprOtyTyGlobFreeTvarS _recExprOtyVarMp _recExprOvalGam _recExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                     { ( _recExprIgathCnstrMp,_recExprIgathRangeMp,_recExprInoLetQuantTyVarIdS,_recExprItyVarMp,recExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                         (case (_recExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                          { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                           { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                           (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                            { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                            (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                             { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                              { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (__tup209) of
-                                                                                                                                                                                                                                                                                                               { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (__tup207) of
-                                                                                                                                                                                                                                                                                                                { (_,_,_exprOknTy) | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (__tup206) of
-                                                                                                                                                                                                                                                                                                                 { (_knRowTy,_,_,_) | _knRowTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                                                  { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (mkPrIdCHR _lUniq3) of
-                                                                                                                                                                                                                                                                                                                   { _prUid | _prUid `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case ([rngLift _range mkPredOccRng (Pred_Lacks _knRowTy (Label_Lab _nm)) _prUid _lhsIpredScope]) of
-                                                                                                                                                                                                                                                                                                                    { _prOccL | _prOccL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                    (case (gathPredLToProveCnstrMp _prOccL) of
-                                                                                                                                                                                                                                                                                                                     { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                     (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                      { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                                                                                                          (case (cnstrMpUnions [_hereCnstrMp, _recExprIgathCnstrMp, _exprIgathCnstrMp]) of
-                                                                                                                                                                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_recExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_recExprInoLetQuantTyVarIdS `Set.union` _exprInoLetQuantTyVarIdS) of
-                                                                                                                                                                                                                                                                                                                             { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                              { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case ((let sem_RecExpr_Ext_7 :: T_RecExpr_7
-                                                                                                                                                                                                                                                                                                                                          sem_RecExpr_Ext_7 =
-                                                                                                                                                                                                                                                                                                                                              (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                 _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                 _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                 _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                 _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                 _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                 _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                 _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                                                   _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                   (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                    (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                      (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                        (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                          ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                            { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                             { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                              { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                               { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                { _recExprOsysfEnv | _recExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                 { _recExprOrangeMp | _recExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                  { _recExprOfinValGam | _recExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                   { _recExprOfinTyVarMp | _recExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                    { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                     { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                      { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                       { _recExprOchrScopeBindMp | _recExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                        { _recExprOchrEvidBindMp | _recExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                         { _recExprOcSubst | _recExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                          { _recExprOmoduleNm | _recExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                          (case (recExpr_7 _recExprOcSubst _recExprOchrEvidBindMp _recExprOchrScopeBindMp _recExprOfinTyVarMp _recExprOfinValGam _recExprOmoduleNm _recExprOrangeMp _recExprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                           { ( _recExprIallErrSq,_recExprIcSubst,_recExprIerrSq,_recExprIextNm,_recExprIfuCExprL,_recExprIgathMentrelFilterMp,_recExprIgathTvKiVarMp,_recExprIisExtFromEmpty,_recExprIpp,_recExprIppL,_recExprIrecCExpr,_recExprIty) | True ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (_recExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                                                                                                                 { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                 (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                  { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                      (case (_recExprIallErrSq `Seq.union` _exprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                       (case (_exprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                        (case (ppFld "=" (Just _positionalNm) _nm (pp _nm) _exprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (Seq.unions [ _recExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                           , rngLift _range mkNestErr' _pp [_exprIerrSq, foErrSq _foKnRec]
-                                                                                                                                                                                                                                                                                                                                                                                                           ]) of
-                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (_recExprIextNm) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case (__tup207) of
-                                                                                                                                                                                                                                                                                                                                                                                            { (_knRecHasLab,_,_) | _knRecHasLab `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (cSubstApp _exprIcSubst $ acoreNmHolePred _prUid) of
-                                                                                                                                                                                                                                                                                                                                                                                             { _offset | _offset `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (CExpr_TupIns _recExprIrecCExpr CTagRec _nm _offset _exprIcexpr) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _rcexpr | _rcexpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case (if _knRecHasLab
-                                                                                                                                                                                                                                                                                                                                                                                                     then (_nm,(_rcexpr,Nothing)) : _recExprIfuCExprL
-                                                                                                                                                                                                                                                                                                                                                                                                     else _recExprIfuCExprL) of
-                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case (_recExprIgathMentrelFilterMp `mentrelFilterMpUnion` _exprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                (case (_recExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                 (case (_recExprIisExtFromEmpty) of
-                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                  (case (_recExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (_pp : _recExprIppL) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (_recExprIrecCExpr) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     (case (foTy _foKnRec) of
-                                                                                                                                                                                                                                                                                                                                                                                                      { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                      (case (_ty) of
-                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                                                                                                      in  sem_RecExpr_Ext_7)) of
-                                                                                                                                                                                                                                                                                                                               { ( sem_RecExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                                               ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                                                                                                                     in  sem_RecExpr_Ext_6)) of
-                                                                                                                                                                                                                                              { ( sem_RecExpr_6) | True ->
-                                                                                                                                                                                                                                              ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }) }) }) }) }) }) }))))
-                                                                                                                                                                                                              in  sem_RecExpr_Ext_5)) of
-                                                                                                                                                                                                       { ( sem_RecExpr_5) | True ->
-                                                                                                                                                                                                       ( _lhsOgathDataGam,sem_RecExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                               in  sem_RecExpr_Ext_4)) of
-                                                                                                                                                        { ( sem_RecExpr_4) | True ->
-                                                                                                                                                        ( _lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                      in  sem_RecExpr_Ext_3)) of
-                                                                                               { ( sem_RecExpr_3) | True ->
-                                                                                               ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) }) }) }) }) }) }) }) }) }) })))))
-                                                            in  sem_RecExpr_Ext_2)) of
-                                                     { ( sem_RecExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_RecExpr_2) }) }) }) }) }) }) })))
-                        in  sem_RecExpr_Ext_1)) of
-                 { ( sem_RecExpr_1) | True ->
-                 ( _lhsOrange,sem_RecExpr_1) }) }) }) }) })
-
-sem_RecExpr_Upd :: Range ->
-                   T_RecExpr ->
-                   HsName ->
-                   T_Expr ->
-                   T_RecExpr
-
-sem_RecExpr_Upd hsrange_ recExpr_ nm_ expr_ | hsrange_ `seq` (recExpr_ `seq` (nm_ `seq` (expr_ `seq` (True)))) =
-    (case (expr_) of
-     { ( _exprIrange,expr_1) | True ->
-         (case (recExpr_) of
-          { ( _recExprIrange,recExpr_1) | True ->
-              (case (rangeUnions [hsrange_, _recExprIrange, _exprIrange  ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_RecExpr_Upd_1 :: T_RecExpr_1
-                            sem_RecExpr_Upd_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> case nextUnique __cont of { (__cont, lUniq4) -> (__cont,lUniq,lUniq2,lUniq3,lUniq4)}}}} )) of
-                                       { __tup212 | __tup212 `seq` (True) ->
-                                       (case (__tup212) of
-                                        { (_recExprOgUniq,_,_,_,_) | _recExprOgUniq `seq` (True) ->
-                                        (case (recExpr_1 _recExprOgUniq) of
-                                         { ( _recExprIgUniq,recExpr_2) | True ->
-                                             (case (_recExprIgUniq) of
-                                              { _exprOgUniq | _exprOgUniq `seq` (True) ->
-                                              (case (expr_1 _exprOgUniq) of
-                                               { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
-                                                   (case (_exprIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_RecExpr_Upd_2 :: T_RecExpr_2
-                                                                sem_RecExpr_Upd_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _recExprOpredSameScopeCounter | _recExprOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _recExprOlexLev | _recExprOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _recExprOkiGam | _recExprOkiGam `seq` (True) ->
-                                                                               (case (recExpr_2 _recExprOkiGam _recExprOlexLev _recExprOpredSameScopeCounter) of
-                                                                                { ( _recExprIpredSameScopeCounter,recExpr_3) | True ->
-                                                                                    (case (_recExprIpredSameScopeCounter) of
-                                                                                     { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case (_lhsIlexLev) of
-                                                                                      { _exprOlexLev | _exprOlexLev `seq` (True) ->
-                                                                                      (case (_lhsIkiGam) of
-                                                                                       { _exprOkiGam | _exprOkiGam `seq` (True) ->
-                                                                                       (case (True) of
-                                                                                        { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
-                                                                                        (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
-                                                                                         { ( _exprIpredSameScopeCounter,expr_3) | True ->
-                                                                                             (case (_exprIpredSameScopeCounter) of
-                                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                              (case ((let sem_RecExpr_Upd_3 :: T_RecExpr_3
-                                                                                                          sem_RecExpr_Upd_3 =
-                                                                                                              (\ _lhsIkiVarMp
-                                                                                                                 _lhsIopts
-                                                                                                                 _lhsIpolGam
-                                                                                                                 _lhsIpolVarMp
-                                                                                                                 _lhsIpredScope
-                                                                                                                 _lhsItyGam
-                                                                                                                 _lhsItyKiGam
-                                                                                                                 _lhsItyKiGlobFreeTvarS ->
-                                                                                                                   _lhsIkiVarMp `seq`
-                                                                                                                   (_lhsIopts `seq`
-                                                                                                                    (_lhsIpolGam `seq`
-                                                                                                                     (_lhsIpolVarMp `seq`
-                                                                                                                      (_lhsIpredScope `seq`
-                                                                                                                       (_lhsItyGam `seq`
-                                                                                                                        (_lhsItyKiGam `seq`
-                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsItyGam) of
-                                                                                                                              { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                               { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                { _recExprOtyKiGlobFreeTvarS | _recExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                (case (_lhsItyKiGam) of
-                                                                                                                                 { _recExprOtyKiGam | _recExprOtyKiGam `seq` (True) ->
-                                                                                                                                 (case (_lhsItyGam) of
-                                                                                                                                  { _recExprOtyGam | _recExprOtyGam `seq` (True) ->
-                                                                                                                                  (case (_lhsIpredScope) of
-                                                                                                                                   { _recExprOpredScope | _recExprOpredScope `seq` (True) ->
-                                                                                                                                   (case (_lhsIpolVarMp) of
-                                                                                                                                    { _recExprOpolVarMp | _recExprOpolVarMp `seq` (True) ->
-                                                                                                                                    (case (_lhsIpolGam) of
-                                                                                                                                     { _recExprOpolGam | _recExprOpolGam `seq` (True) ->
-                                                                                                                                     (case (_lhsIopts) of
-                                                                                                                                      { _recExprOopts | _recExprOopts `seq` (True) ->
-                                                                                                                                      (case (_lhsIkiVarMp) of
-                                                                                                                                       { _recExprOkiVarMp | _recExprOkiVarMp `seq` (True) ->
-                                                                                                                                       (case (recExpr_3 _recExprOkiVarMp _recExprOopts _recExprOpolGam _recExprOpolVarMp _recExprOpredScope _recExprOtyGam _recExprOtyKiGam _recExprOtyKiGlobFreeTvarS) of
-                                                                                                                                        { ( _recExprIkiVarMp,_recExprIpolVarMp,recExpr_4) | True ->
-                                                                                                                                            (case (_recExprIpolVarMp) of
-                                                                                                                                             { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                                                             (case (_lhsIpolGam) of
-                                                                                                                                              { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                                                              (case (_lhsIopts) of
-                                                                                                                                               { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                                                               (case (_recExprIkiVarMp) of
-                                                                                                                                                { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                                                                (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                                                 { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                                                     (case (_exprIkiVarMp) of
-                                                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                      (case (_exprIpolVarMp) of
-                                                                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                       (case ((let sem_RecExpr_Upd_4 :: T_RecExpr_4
-                                                                                                                                                                   sem_RecExpr_Upd_4 =
-                                                                                                                                                                       (\ _lhsIclGam
-                                                                                                                                                                          _lhsIfinKiVarMp
-                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                          _lhsIgathDataGam
-                                                                                                                                                                          _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                                                            (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                             (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                              (_lhsIgathDataGam `seq`
-                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                  { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                  (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                   { _recExprOtyTyTySigFreeTvarS | _recExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIgathDataGam) of
-                                                                                                                                                                                    { _recExprOgathDataGam | _recExprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                     { _recExprOfinTyKiGam | _recExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                      { _recExprOfinKiVarMp | _recExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                                                       { _recExprOclGam | _recExprOclGam `seq` (True) ->
-                                                                                                                                                                                       (case (recExpr_4 _recExprOclGam _recExprOfinKiVarMp _recExprOfinTyKiGam _recExprOgathDataGam _recExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                        { ( _recExprIgathDataGam,recExpr_5) | True ->
-                                                                                                                                                                                            (case (_recExprIgathDataGam) of
-                                                                                                                                                                                             { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                              { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                               { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                               (case (_lhsIclGam) of
-                                                                                                                                                                                                { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                                                                (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                 { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                                                                     (case (_exprIgathDataGam) of
-                                                                                                                                                                                                      { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                                                                      (case ((let sem_RecExpr_Upd_5 :: T_RecExpr_5
-                                                                                                                                                                                                                  sem_RecExpr_Upd_5 =
-                                                                                                                                                                                                                      (\ _lhsIdataGam
-                                                                                                                                                                                                                         _lhsIpositionalFldNmL ->
-                                                                                                                                                                                                                           _lhsIdataGam `seq`
-                                                                                                                                                                                                                           (_lhsIpositionalFldNmL `seq`
-                                                                                                                                                                                                                            ((case (_lhsIdataGam) of
-                                                                                                                                                                                                                              { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIdataGam) of
-                                                                                                                                                                                                                               { _recExprOdataGam | _recExprOdataGam `seq` (True) ->
-                                                                                                                                                                                                                               (case (expr_5 _exprOdataGam) of
-                                                                                                                                                                                                                                { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                                                                                    (case (_lhsIpositionalFldNmL) of
-                                                                                                                                                                                                                                     { _recExprOpositionalFldNmL | _recExprOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                                                                     (case (recExpr_5 _recExprOdataGam _recExprOpositionalFldNmL) of
-                                                                                                                                                                                                                                      { ( _recExprIchrInstDeclSq,_recExprIpositionalFldNmL,recExpr_6) | True ->
-                                                                                                                                                                                                                                          (case (_recExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
-                                                                                                                                                                                                                                           { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                                                           (case (_recExprIpositionalFldNmL) of
-                                                                                                                                                                                                                                            { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                                                                            (case ((let sem_RecExpr_Upd_6 :: T_RecExpr_6
-                                                                                                                                                                                                                                                        sem_RecExpr_Upd_6 =
-                                                                                                                                                                                                                                                            (\ _lhsIchrStore
-                                                                                                                                                                                                                                                               _lhsIclDfGam
-                                                                                                                                                                                                                                                               _lhsIfiOpts
-                                                                                                                                                                                                                                                               _lhsIknTy
-                                                                                                                                                                                                                                                               _lhsItvKiVarMp
-                                                                                                                                                                                                                                                               _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                               _lhsItyVarMp
-                                                                                                                                                                                                                                                               _lhsIvalGam
-                                                                                                                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                 _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                 (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                  (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                                                                   (_lhsIknTy `seq`
-                                                                                                                                                                                                                                                                    (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                      (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                       (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                         ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                            { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { _recExprOvalTyGlobFreeTvarS | _recExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIvalGam) of
-                                                                                                                                                                                                                                                                              { _recExprOvalGam | _recExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                               { _recExprOtyTyGlobFreeTvarS | _recExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                { _recExprOtvKiVarMp | _recExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                 { _recExprOfiOpts | _recExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                  { _recExprOclDfGam | _recExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                   { _recExprOchrStore | _recExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (__tup212) of
-                                                                                                                                                                                                                                                                                    { (_,_,_,_lUniq3,_) | _lUniq3 `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (__tup212) of
-                                                                                                                                                                                                                                                                                     { (_,_,_lUniq2,_,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (__tup212) of
-                                                                                                                                                                                                                                                                                      { (_,_lUniq,_,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (let  [r,e] = mkNewTyVarL 2 _lUniq
-                                                                                                                                                                                                                                                                                                  tl = hsnRec `appConApp` [r]
-                                                                                                                                                                                                                                                                                             in   (r, tl `recRecExt` [(nm_,e)], tl, e)) of
-                                                                                                                                                                                                                                                                                       { __tup210 | __tup210 `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (__tup210) of
-                                                                                                                                                                                                                                                                                        { (_,_knRecTy,_,_) | _knRecTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                         { _knFIOpts | _knFIOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (defaultFIEnv
-                                                                                                                                                                                                                                                                                                    { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                                                                    , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                                                                    , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                                                                    , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                                                                    , feRange = _range
-                                                                                                                                                                                                                                                                                                    }) of
-                                                                                                                                                                                                                                                                                          { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (fitsIn _knFIOpts _fe _lUniq2 _lhsItyVarMp _knRecTy _lhsIknTy) of
-                                                                                                                                                                                                                                                                                           { _foKnRec | _foKnRec `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (foVarMp _foKnRec `varUpd` _lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                            { _recTyVarMp | _recTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (__tup210) of
-                                                                                                                                                                                                                                                                                             { (_,_,_,_knExprTy) | _knExprTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (__tup210) of
-                                                                                                                                                                                                                                                                                              { (_,_,_knTailTy,_) | _knTailTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (maybe (False,_knTailTy,_knExprTy) (\(r,e) -> (True,r,e)) $ tyRecExtrWithLkup (varmpTyLookupCyc2 _recTyVarMp) nm_ $ foTy _foKnRec) of
-                                                                                                                                                                                                                                                                                               { __tup211 | __tup211 `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (__tup211) of
-                                                                                                                                                                                                                                                                                                { (_,_recKnTlTy,_) | _recKnTlTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_recKnTlTy `recRecExt` [(nm_,mkNewTyVar _lUniq3)]) of
-                                                                                                                                                                                                                                                                                                 { _recExprOknTy | _recExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_recTyVarMp) of
-                                                                                                                                                                                                                                                                                                  { _recExprOtyVarMp | _recExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (recExpr_6 _recExprOchrStore _recExprOclDfGam _recExprOfiOpts _recExprOknTy _recExprOtvKiVarMp _recExprOtyTyGlobFreeTvarS _recExprOtyVarMp _recExprOvalGam _recExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                   { ( _recExprIgathCnstrMp,_recExprIgathRangeMp,_recExprInoLetQuantTyVarIdS,_recExprItyVarMp,recExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                       (case (_recExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                        { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                         { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                         (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                          { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                          (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                           { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                           (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                            { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                            (case (__tup212) of
-                                                                                                                                                                                                                                                                                                             { (_,_,_,_,_lUniq4) | _lUniq4 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (__tup211) of
-                                                                                                                                                                                                                                                                                                              { (_,_,_exprOknTy) | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (__tup210) of
-                                                                                                                                                                                                                                                                                                               { (_knRowTy,_,_,_) | _knRowTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                                                                { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (mkPrIdCHR _lUniq4) of
-                                                                                                                                                                                                                                                                                                                 { _prUid | _prUid `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case ([rngLift _range mkPredOccRng (Pred_Lacks _knRowTy (Label_Lab nm_)) _prUid _lhsIpredScope]) of
-                                                                                                                                                                                                                                                                                                                  { _prOccL | _prOccL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (gathPredLToProveCnstrMp _prOccL) of
-                                                                                                                                                                                                                                                                                                                   { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                   (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                    { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                                                                                                        (case (cnstrMpUnions [_hereCnstrMp, _recExprIgathCnstrMp, _exprIgathCnstrMp]) of
-                                                                                                                                                                                                                                                                                                                         { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_recExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                          { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_recExprInoLetQuantTyVarIdS `Set.union` _exprInoLetQuantTyVarIdS) of
-                                                                                                                                                                                                                                                                                                                           { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                            { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case ((let sem_RecExpr_Upd_7 :: T_RecExpr_7
-                                                                                                                                                                                                                                                                                                                                        sem_RecExpr_Upd_7 =
-                                                                                                                                                                                                                                                                                                                                            (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                               _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                               _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                               _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                               _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                                                                                                                 _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                 (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                  (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                   (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                    (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                     (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                      (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                       (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                        ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                          { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                           { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                            { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                             { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                              { _recExprOsysfEnv | _recExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                               { _recExprOrangeMp | _recExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                { _recExprOfinValGam | _recExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                 { _recExprOfinTyVarMp | _recExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                  { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                   { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                    { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                     { _recExprOchrScopeBindMp | _recExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                      { _recExprOchrEvidBindMp | _recExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                       { _recExprOcSubst | _recExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                        { _recExprOmoduleNm | _recExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                        (case (recExpr_7 _recExprOcSubst _recExprOchrEvidBindMp _recExprOchrScopeBindMp _recExprOfinTyVarMp _recExprOfinValGam _recExprOmoduleNm _recExprOrangeMp _recExprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                         { ( _recExprIallErrSq,_recExprIcSubst,_recExprIerrSq,_recExprIextNm,_recExprIfuCExprL,_recExprIgathMentrelFilterMp,_recExprIgathTvKiVarMp,_recExprIisExtFromEmpty,_recExprIpp,_recExprIppL,_recExprIrecCExpr,_recExprIty) | True ->
-                                                                                                                                                                                                                                                                                                                                                                             (case (_recExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                              { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                              (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                                                                                                               { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                                { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                    (case (_recExprIallErrSq `Seq.union` _exprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                     (case (_exprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                      (case (ppFld ":=" Nothing nm_ (pp nm_) _exprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                       (case (Seq.unions [ _recExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                         , rngLift _range mkNestErr' _pp [_exprIerrSq, foErrSq _foKnRec]
-                                                                                                                                                                                                                                                                                                                                                                                                         ]) of
-                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                        (case (_recExprIextNm) of
-                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (__tup211) of
-                                                                                                                                                                                                                                                                                                                                                                                          { (_knRecHasLab,_,_) | _knRecHasLab `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (cSubstApp _exprIcSubst $ acoreNmHolePred _prUid) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _offset | _offset `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case (CExpr_TupUpd _recExprIrecCExpr CTagRec nm_ _offset _exprIcexpr) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _rcexpr | _rcexpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (if _knRecHasLab
-                                                                                                                                                                                                                                                                                                                                                                                                   then (nm_,(_rcexpr,Nothing)) : _recExprIfuCExprL
-                                                                                                                                                                                                                                                                                                                                                                                                   else _recExprIfuCExprL) of
-                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                             (case (_recExprIgathMentrelFilterMp `mentrelFilterMpUnion` _exprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                              (case (_recExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                               (case (not _knRecHasLab && _recExprIisExtFromEmpty) of
-                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                (case (_recExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                 (case (_pp : _recExprIppL) of
-                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                  (case (_recExprIrecCExpr) of
-                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (foTy _foKnRec) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                    (case (_ty) of
-                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                                                                                                    in  sem_RecExpr_Upd_7)) of
-                                                                                                                                                                                                                                                                                                                             { ( sem_RecExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                                             ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                                                                                                                    in  sem_RecExpr_Upd_6)) of
-                                                                                                                                                                                                                                             { ( sem_RecExpr_6) | True ->
-                                                                                                                                                                                                                                             ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }) }) }) }) }) }))))
-                                                                                                                                                                                                              in  sem_RecExpr_Upd_5)) of
-                                                                                                                                                                                                       { ( sem_RecExpr_5) | True ->
-                                                                                                                                                                                                       ( _lhsOgathDataGam,sem_RecExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
-                                                                                                                                                               in  sem_RecExpr_Upd_4)) of
-                                                                                                                                                        { ( sem_RecExpr_4) | True ->
-                                                                                                                                                        ( _lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                      in  sem_RecExpr_Upd_3)) of
-                                                                                               { ( sem_RecExpr_3) | True ->
-                                                                                               ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) }) }) }) }) }) }) }) }) }) })))))
-                                                            in  sem_RecExpr_Upd_2)) of
-                                                     { ( sem_RecExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_RecExpr_2) }) }) }) }) }) }) })))
-                        in  sem_RecExpr_Upd_1)) of
-                 { ( sem_RecExpr_1) | True ->
-                 ( _lhsOrange,sem_RecExpr_1) }) }) }) }) })
-
-sem_RecExpr_Expr :: Range ->
-                    T_Expr ->
-                    T_RecExpr
-
-sem_RecExpr_Expr hsrange_ expr_ | hsrange_ `seq` (expr_ `seq` (True)) =
-    (case (expr_) of
-     { ( _exprIrange,expr_1) | True ->
-         (case (rangeUnions [hsrange_, _exprIrange   , _exprIrange  ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_RecExpr_Expr_1 :: T_RecExpr_1
-                       sem_RecExpr_Expr_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _exprOgUniq | _exprOgUniq `seq` (True) ->
-                                  (case (expr_1 _exprOgUniq) of
-                                   { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
-                                       (case (_exprIgUniq) of
-                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                        (case ((let sem_RecExpr_Expr_2 :: T_RecExpr_2
-                                                    sem_RecExpr_Expr_2 =
-                                                        (\ _lhsIkiGam
-                                                           _lhsIlexLev
-                                                           _lhsIpredSameScopeCounter ->
-                                                             _lhsIkiGam `seq`
-                                                             (_lhsIlexLev `seq`
-                                                              (_lhsIpredSameScopeCounter `seq`
-                                                               ((case (_lhsIpredSameScopeCounter) of
-                                                                 { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
-                                                                 (case (_lhsIlexLev) of
-                                                                  { _exprOlexLev | _exprOlexLev `seq` (True) ->
-                                                                  (case (_lhsIkiGam) of
-                                                                   { _exprOkiGam | _exprOkiGam `seq` (True) ->
-                                                                   (case (True) of
-                                                                    { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
-                                                                    (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
-                                                                     { ( _exprIpredSameScopeCounter,expr_3) | True ->
-                                                                         (case (_exprIpredSameScopeCounter) of
-                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                          (case ((let sem_RecExpr_Expr_3 :: T_RecExpr_3
-                                                                                      sem_RecExpr_Expr_3 =
-                                                                                          (\ _lhsIkiVarMp
-                                                                                             _lhsIopts
-                                                                                             _lhsIpolGam
-                                                                                             _lhsIpolVarMp
-                                                                                             _lhsIpredScope
-                                                                                             _lhsItyGam
-                                                                                             _lhsItyKiGam
-                                                                                             _lhsItyKiGlobFreeTvarS ->
-                                                                                               _lhsIkiVarMp `seq`
-                                                                                               (_lhsIopts `seq`
-                                                                                                (_lhsIpolGam `seq`
-                                                                                                 (_lhsIpolVarMp `seq`
-                                                                                                  (_lhsIpredScope `seq`
-                                                                                                   (_lhsItyGam `seq`
-                                                                                                    (_lhsItyKiGam `seq`
-                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                        { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                        (case (_lhsItyKiGam) of
-                                                                                                         { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
-                                                                                                         (case (_lhsItyGam) of
-                                                                                                          { _exprOtyGam | _exprOtyGam `seq` (True) ->
-                                                                                                          (case (_lhsIpredScope) of
-                                                                                                           { _exprOpredScope | _exprOpredScope `seq` (True) ->
-                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                            { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
-                                                                                                            (case (_lhsIpolGam) of
-                                                                                                             { _exprOpolGam | _exprOpolGam `seq` (True) ->
-                                                                                                             (case (_lhsIopts) of
-                                                                                                              { _exprOopts | _exprOopts `seq` (True) ->
-                                                                                                              (case (_lhsIkiVarMp) of
-                                                                                                               { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
-                                                                                                               (case (expr_3 _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
-                                                                                                                { ( _exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
-                                                                                                                    (case (_exprIkiVarMp) of
-                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                     (case (_exprIpolVarMp) of
-                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                      (case ((let sem_RecExpr_Expr_4 :: T_RecExpr_4
-                                                                                                                                  sem_RecExpr_Expr_4 =
-                                                                                                                                      (\ _lhsIclGam
-                                                                                                                                         _lhsIfinKiVarMp
-                                                                                                                                         _lhsIfinTyKiGam
-                                                                                                                                         _lhsIgathDataGam
-                                                                                                                                         _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                           _lhsIclGam `seq`
-                                                                                                                                           (_lhsIfinKiVarMp `seq`
-                                                                                                                                            (_lhsIfinTyKiGam `seq`
-                                                                                                                                             (_lhsIgathDataGam `seq`
-                                                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                               ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                 { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                 (case (_lhsIgathDataGam) of
-                                                                                                                                                  { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
-                                                                                                                                                  (case (_lhsIfinTyKiGam) of
-                                                                                                                                                   { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinKiVarMp) of
-                                                                                                                                                    { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                    (case (_lhsIclGam) of
-                                                                                                                                                     { _exprOclGam | _exprOclGam `seq` (True) ->
-                                                                                                                                                     (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
-                                                                                                                                                      { ( _exprIgathDataGam,expr_5) | True ->
-                                                                                                                                                          (case (_exprIgathDataGam) of
-                                                                                                                                                           { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
-                                                                                                                                                           (case ((let sem_RecExpr_Expr_5 :: T_RecExpr_5
-                                                                                                                                                                       sem_RecExpr_Expr_5 =
-                                                                                                                                                                           (\ _lhsIdataGam
-                                                                                                                                                                              _lhsIpositionalFldNmL ->
-                                                                                                                                                                                _lhsIdataGam `seq`
-                                                                                                                                                                                (_lhsIpositionalFldNmL `seq`
-                                                                                                                                                                                 ((case (_lhsIdataGam) of
-                                                                                                                                                                                   { _exprOdataGam | _exprOdataGam `seq` (True) ->
-                                                                                                                                                                                   (case (expr_5 _exprOdataGam) of
-                                                                                                                                                                                    { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
-                                                                                                                                                                                        (case (_exprIchrInstDeclSq) of
-                                                                                                                                                                                         { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIpositionalFldNmL) of
-                                                                                                                                                                                          { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                          (case ((let sem_RecExpr_Expr_6 :: T_RecExpr_6
-                                                                                                                                                                                                      sem_RecExpr_Expr_6 =
-                                                                                                                                                                                                          (\ _lhsIchrStore
-                                                                                                                                                                                                             _lhsIclDfGam
-                                                                                                                                                                                                             _lhsIfiOpts
-                                                                                                                                                                                                             _lhsIknTy
-                                                                                                                                                                                                             _lhsItvKiVarMp
-                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                             _lhsItyVarMp
-                                                                                                                                                                                                             _lhsIvalGam
-                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                               _lhsIchrStore `seq`
-                                                                                                                                                                                                               (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                (_lhsIfiOpts `seq`
-                                                                                                                                                                                                                 (_lhsIknTy `seq`
-                                                                                                                                                                                                                  (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                    (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                     (_lhsIvalGam `seq`
-                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                       ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                         { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                         (case (_lhsIvalGam) of
-                                                                                                                                                                                                                          { _exprOvalGam | _exprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                          (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                           { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                           (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                            { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                            (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                             { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                             (case (_lhsIknTy) of
-                                                                                                                                                                                                                              { _exprOknTy | _exprOknTy `seq` (True) ->
-                                                                                                                                                                                                                              (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                               { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                               (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                 { _exprOchrStore | _exprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                 (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                  { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
-                                                                                                                                                                                                                                      (case (_exprIgathCnstrMp) of
-                                                                                                                                                                                                                                       { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_exprIgathRangeMp) of
-                                                                                                                                                                                                                                        { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                        (case (_exprInoLetQuantTyVarIdS) of
-                                                                                                                                                                                                                                         { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
-                                                                                                                                                                                                                                         (case (_exprItyVarMp) of
-                                                                                                                                                                                                                                          { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                          (case ((let sem_RecExpr_Expr_7 :: T_RecExpr_7
-                                                                                                                                                                                                                                                      sem_RecExpr_Expr_7 =
-                                                                                                                                                                                                                                                          (\ _lhsIcSubst
-                                                                                                                                                                                                                                                             _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                             _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                             _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                             _lhsIfinValGam
-                                                                                                                                                                                                                                                             _lhsImoduleNm
-                                                                                                                                                                                                                                                             _lhsIrangeMp
-                                                                                                                                                                                                                                                             _lhsIsysfEnv ->
-                                                                                                                                                                                                                                                               _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                               (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                 (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                  (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                   (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                    (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                     (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                      ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                        { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                         { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                          { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                           { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                            { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                             { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                              { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                               { _exprOcSubst | _exprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (ExprCtxt_Top) of
-                                                                                                                                                                                                                                                                                { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv) of
-                                                                                                                                                                                                                                                                                 { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp) | True ->
-                                                                                                                                                                                                                                                                                     (case (_exprIallErrSq) of
-                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_exprIcSubst) of
-                                                                                                                                                                                                                                                                                       { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_exprIerrSq) of
-                                                                                                                                                                                                                                                                                        { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                         { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                                                                                                                                          { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_exprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                           { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_exprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                            { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (False) of
-                                                                                                                                                                                                                                                                                             { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_exprIpp) of
-                                                                                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_pp) of
-                                                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                                                                                                { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_exprIcexpr) of
-                                                                                                                                                                                                                                                                                                 { _recCExpr | _recCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_recCExpr) of
-                                                                                                                                                                                                                                                                                                  { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (_exprIty) of
-                                                                                                                                                                                                                                                                                                   { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                                                                                                                                                                  in  sem_RecExpr_Expr_7)) of
-                                                                                                                                                                                                                                           { ( sem_RecExpr_7) | True ->
-                                                                                                                                                                                                                                           ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
-                                                                                                                                                                                                  in  sem_RecExpr_Expr_6)) of
-                                                                                                                                                                                           { ( sem_RecExpr_6) | True ->
-                                                                                                                                                                                           ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }) }) }))))
-                                                                                                                                                                   in  sem_RecExpr_Expr_5)) of
-                                                                                                                                                            { ( sem_RecExpr_5) | True ->
-                                                                                                                                                            ( _lhsOgathDataGam,sem_RecExpr_5) }) }) }) }) }) }) }) })))))))
-                                                                                                                              in  sem_RecExpr_Expr_4)) of
-                                                                                                                       { ( sem_RecExpr_4) | True ->
-                                                                                                                       ( _lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- RecExpr -----------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attribute:
+         gUniq                : UID
+   visit 2:
+      inherited attributes:
+         kiGam                : KiGam
+         lexLev               : Int
+      chained attribute:
+         predSameScopeCounter : Int
+   visit 3:
+      inherited attributes:
+         opts                 : EHCOpts
+         polGam               : PolGam
+         predScope            : PredScope
+         tyGam                : TyGam
+         tyKiGam              : TyKiGam
+         tyKiGlobFreeTvarS    : TyVarIdS
+      chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
+         kiVarMp              : VarMp
+         polVarMp             : VarMp
+   visit 4:
+      inherited attributes:
+         clGam                : ClGam
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         tyTyTySigFreeTvarS   : TyVarIdS
+      chained attribute:
+         gathDataGam          : DataGam
+   visit 5:
+      inherited attribute:
+         dataGam              : DataGam
+      chained attribute:
+         positionalFldNmL     : [HsName]
+      synthesized attribute:
+         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
+   visit 6:
+      inherited attributes:
+         chrStore             : ScopedPredStore
+         clDfGam              : ClassDefaultGam
+         fiOpts               : FIOpts
+         knTy                 : Ty
+         tvKiVarMp            : VarMp
+         tyTyGlobFreeTvarS    : TyVarIdS
+         valGam               : ValGam
+         valTyGlobFreeTvarS   : TyVarIdS
+      chained attribute:
+         tyVarMp              : VarMp
+      synthesized attributes:
+         gathCnstrMp          : CHRPredOccCnstrMp
+         gathRangeMp          : RangeMp
+         noLetQuantTyVarIdS   : TyVarIdS
+   visit 7:
+      inherited attributes:
+         chrEvidBindMp        : EvidKeyToCBindMap
+         chrScopeBindMp       : PredScopeToCBindMap
+         finTyVarMp           : VarMp
+         finValGam            : ValGam
+         moduleNm             : HsName
+         rangeMp              : RangeMp
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attribute:
+         cSubst               : CSubst
+      synthesized attributes:
+         allErrSq             : ErrSq
+         errSq                : ErrSq
+         extNm                : HsName
+         fuCExprL             : FieldUpdateL CExpr
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         gathTvKiVarMp        : VarMp
+         isExtFromEmpty       : Bool
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         recCExpr             : CExpr
+         trpp                 : TrPP
+         ty                   : Ty
+   alternatives:
+      alternative Empty:
+         child hsrange        : {Range}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup211     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup211     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup211     : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup211     : _
+            intra range       : {Range}
+         visit 5:
+            intra _tup211     : _
+            intra range       : {Range}
+         visit 6:
+            local lUniq       : {UID}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup211     : _
+            intra range       : {Range}
+         visit 7:
+            local pp          : _
+            local recCExpr    : _
+            local ty          : {Ty}
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+      alternative Ext:
+         child hsrange        : {Range}
+         child recExpr        : RecExpr 
+         child mbNm           : {Maybe HsName}
+         child expr           : Expr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup215     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup215     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup215     : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup215     : _
+            intra range       : {Range}
+         visit 5:
+            local _tup214     : _
+            intra _tup215     : _
+            intra range       : {Range}
+         visit 6:
+            local lUniq2      : {UID}
+            local lUniq       : {UID}
+            local positionalNm : {HsName}
+            local nm          : {HsName}
+            local _tup212     : _
+            local knRecTy     : {Ty}
+            local knFIOpts    : {FIOpts}
+            local fe          : {FIEnv}
+            local foKnRec     : {FIOut}
+            local recTyVarMp  : _
+            local knExprTy    : {Ty}
+            local knTailTy    : _
+            local _tup213     : _
+            local recKnTlTy   : {Ty}
+            local lUniq3      : {UID}
+            local knRowTy     : _
+            local prUid       : {PredOccId}
+            local prOccL      : {[PredOcc]}
+            local hereCnstrMp : _
+            intra _tup215     : _
+            intra _tup214     : _
+            intra range       : {Range}
+         visit 7:
+            local pp          : _
+            local knRecHasLab : {Bool}
+            local offset      : _
+            local rcexpr      : _
+            local ty          : {Ty}
+            intra nm          : {HsName}
+            intra positionalNm : {HsName}
+            intra foKnRec     : {FIOut}
+            intra range       : {Range}
+            intra _tup213     : _
+            intra prUid       : {PredOccId}
+      alternative Upd:
+         child hsrange        : {Range}
+         child recExpr        : RecExpr 
+         child nm             : {HsName}
+         child expr           : Expr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup218     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup218     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup218     : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup218     : _
+            intra range       : {Range}
+         visit 5:
+            intra _tup218     : _
+            intra range       : {Range}
+         visit 6:
+            local lUniq3      : {UID}
+            local lUniq2      : {UID}
+            local lUniq       : {UID}
+            local _tup216     : _
+            local knRecTy     : {Ty}
+            local knFIOpts    : {FIOpts}
+            local fe          : {FIEnv}
+            local foKnRec     : {FIOut}
+            local recTyVarMp  : _
+            local knExprTy    : {Ty}
+            local knTailTy    : _
+            local _tup217     : _
+            local recKnTlTy   : {Ty}
+            local lUniq4      : {UID}
+            local knRowTy     : _
+            local prUid       : {PredOccId}
+            local prOccL      : {[PredOcc]}
+            local hereCnstrMp : _
+            intra _tup218     : _
+            intra range       : {Range}
+         visit 7:
+            local pp          : _
+            local knRecHasLab : {Bool}
+            local offset      : _
+            local rcexpr      : _
+            local ty          : {Ty}
+            intra foKnRec     : {FIOut}
+            intra range       : {Range}
+            intra _tup217     : _
+            intra prUid       : {PredOccId}
+      alternative Expr:
+         child hsrange        : {Range}
+         child expr           : Expr 
+         visit 0:
+            local range       : {Range}
+         visit 7:
+            local pp          : _
+            local recCExpr    : _
+-}
+sem_RecExpr_Empty :: Range ->
+                     T_RecExpr
+
+sem_RecExpr_Empty hsrange_ | hsrange_ `seq` (True) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_RecExpr_Empty_1 :: T_RecExpr_1
+                  sem_RecExpr_Empty_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup211 | __tup211 `seq` (True) ->
+                             (case (__tup211) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_RecExpr_Empty_2 :: T_RecExpr_2
+                                          sem_RecExpr_Empty_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_RecExpr_Empty_3 :: T_RecExpr_3
+                                                                   sem_RecExpr_Empty_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case ((let sem_RecExpr_Empty_4 :: T_RecExpr_4
+                                                                                                    sem_RecExpr_Empty_4 =
+                                                                                                        (\ _lhsIclGam
+                                                                                                           _lhsIfinKiVarMp
+                                                                                                           _lhsIfinTyKiGam
+                                                                                                           _lhsIgathDataGam
+                                                                                                           _lhsItyTyTySigFreeTvarS ->
+                                                                                                             _lhsIclGam `seq`
+                                                                                                             (_lhsIfinKiVarMp `seq`
+                                                                                                              (_lhsIfinTyKiGam `seq`
+                                                                                                               (_lhsIgathDataGam `seq`
+                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                 ((case (_lhsIgathDataGam) of
+                                                                                                                   { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                   (case ((let sem_RecExpr_Empty_5 :: T_RecExpr_5
+                                                                                                                               sem_RecExpr_Empty_5 =
+                                                                                                                                   (\ _lhsIdataGam
+                                                                                                                                      _lhsIpositionalFldNmL ->
+                                                                                                                                        _lhsIdataGam `seq`
+                                                                                                                                        (_lhsIpositionalFldNmL `seq`
+                                                                                                                                         ((case (Seq.empty) of
+                                                                                                                                           { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                           (case (_lhsIpositionalFldNmL) of
+                                                                                                                                            { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                                            (case ((let sem_RecExpr_Empty_6 :: T_RecExpr_6
+                                                                                                                                                        sem_RecExpr_Empty_6 =
+                                                                                                                                                            (\ _lhsIchrStore
+                                                                                                                                                               _lhsIclDfGam
+                                                                                                                                                               _lhsIfiOpts
+                                                                                                                                                               _lhsIknTy
+                                                                                                                                                               _lhsItvKiVarMp
+                                                                                                                                                               _lhsItyTyGlobFreeTvarS
+                                                                                                                                                               _lhsItyVarMp
+                                                                                                                                                               _lhsIvalGam
+                                                                                                                                                               _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                 _lhsIchrStore `seq`
+                                                                                                                                                                 (_lhsIclDfGam `seq`
+                                                                                                                                                                  (_lhsIfiOpts `seq`
+                                                                                                                                                                   (_lhsIknTy `seq`
+                                                                                                                                                                    (_lhsItvKiVarMp `seq`
+                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                      (_lhsItyVarMp `seq`
+                                                                                                                                                                       (_lhsIvalGam `seq`
+                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                         ((case (Map.empty) of
+                                                                                                                                                                           { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                           (case (Map.empty) of
+                                                                                                                                                                            { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                            (case (Set.empty) of
+                                                                                                                                                                             { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                             (case (__tup211) of
+                                                                                                                                                                              { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                                              (case (defaultFIEnv
+                                                                                                                                                                                         { feEHCOpts = _lhsIopts
+                                                                                                                                                                                         , fePredScope = _lhsIpredScope
+                                                                                                                                                                                         , feTyGam = _lhsItyGam
+                                                                                                                                                                                         , fePolGam = _lhsIpolGam
+                                                                                                                                                                                         , feRange = _range
+                                                                                                                                                                                         }) of
+                                                                                                                                                                               { _fe | _fe `seq` (True) ->
+                                                                                                                                                                               (case (fitsIn (_lhsIfiOpts) _fe _lUniq _lhsItyVarMp recRecEmp _lhsIknTy) of
+                                                                                                                                                                                { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                (case (foVarMp _fo_ `varUpd` _lhsItyVarMp) of
+                                                                                                                                                                                 { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                 (case ((let sem_RecExpr_Empty_7 :: T_RecExpr_7
+                                                                                                                                                                                             sem_RecExpr_Empty_7 =
+                                                                                                                                                                                                 (\ _lhsIcSubst
+                                                                                                                                                                                                    _lhsIchrEvidBindMp
+                                                                                                                                                                                                    _lhsIchrScopeBindMp
+                                                                                                                                                                                                    _lhsIfinTyVarMp
+                                                                                                                                                                                                    _lhsIfinValGam
+                                                                                                                                                                                                    _lhsImoduleNm
+                                                                                                                                                                                                    _lhsIrangeMp
+                                                                                                                                                                                                    _lhsIsysfEnv
+                                                                                                                                                                                                    _lhsItr ->
+                                                                                                                                                                                                      _lhsIcSubst `seq`
+                                                                                                                                                                                                      (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                       (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                         (_lhsIfinValGam `seq`
+                                                                                                                                                                                                          (_lhsImoduleNm `seq`
+                                                                                                                                                                                                           (_lhsIrangeMp `seq`
+                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                             (_lhsItr `seq`
+                                                                                                                                                                                                              ((case (Seq.empty) of
+                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                (case (_lhsIcSubst) of
+                                                                                                                                                                                                                 { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                 (case (hsnORec >|< hsnCRec) of
+                                                                                                                                                                                                                  { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                  (case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
+                                                                                                                                                                                                                   { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                   (case (hsnRowEmpty) of
+                                                                                                                                                                                                                    { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                    (case ([]) of
+                                                                                                                                                                                                                     { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                     (case (Map.empty) of
+                                                                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                      (case (emptyVarMp) of
+                                                                                                                                                                                                                       { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                       (case (True) of
+                                                                                                                                                                                                                        { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
+                                                                                                                                                                                                                        (case (_pp) of
+                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                          { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                          (case (acoreTagTupTy CTagRec (acoreTyErr "RecExpr.Empty.recCExpr") []) of
+                                                                                                                                                                                                                           { _recCExpr | _recCExpr `seq` (True) ->
+                                                                                                                                                                                                                           (case (_recCExpr) of
+                                                                                                                                                                                                                            { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
+                                                                                                                                                                                                                            (case (trppEmpty) of
+                                                                                                                                                                                                                             { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                             (case (foTy _fo_) of
+                                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                              (case (_ty) of
+                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                               ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOtrpp,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                         in  sem_RecExpr_Empty_7)) of
+                                                                                                                                                                                  { ( sem_RecExpr_7) | True ->
+                                                                                                                                                                                  ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                    in  sem_RecExpr_Empty_6)) of
+                                                                                                                                             { ( sem_RecExpr_6) | True ->
+                                                                                                                                             ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }))))
+                                                                                                                           in  sem_RecExpr_Empty_5)) of
+                                                                                                                    { ( sem_RecExpr_5) | True ->
+                                                                                                                    ( _lhsOgathDataGam,sem_RecExpr_5) }) })))))))
+                                                                                                in  sem_RecExpr_Empty_4)) of
+                                                                                         { ( sem_RecExpr_4) | True ->
+                                                                                         ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) })))))))))))
+                                                               in  sem_RecExpr_Empty_3)) of
+                                                        { ( sem_RecExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) })))))
+                                      in  sem_RecExpr_Empty_2)) of
+                               { ( sem_RecExpr_2) | True ->
+                               ( _lhsOgUniq,sem_RecExpr_2) }) }) })))
+              in  sem_RecExpr_Empty_1)) of
+       { ( sem_RecExpr_1) | True ->
+       ( _lhsOrange,sem_RecExpr_1) }) }) })
+
+sem_RecExpr_Ext :: Range ->
+                   T_RecExpr ->
+                   (Maybe HsName) ->
+                   T_Expr ->
+                   T_RecExpr
+
+sem_RecExpr_Ext hsrange_ recExpr_ mbNm_ expr_ | hsrange_ `seq` (recExpr_ `seq` (mbNm_ `seq` (expr_ `seq` (True)))) =
+    (case (expr_) of
+     { ( _exprIrange,expr_1) | True ->
+         (case (recExpr_) of
+          { ( _recExprIrange,recExpr_1) | True ->
+              (case (rangeUnions [hsrange_, _recExprIrange, _exprIrange  ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_RecExpr_Ext_1 :: T_RecExpr_1
+                            sem_RecExpr_Ext_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
+                                       { __tup215 | __tup215 `seq` (True) ->
+                                       (case (__tup215) of
+                                        { (_recExprOgUniq,_,_,_) | _recExprOgUniq `seq` (True) ->
+                                        (case (recExpr_1 _recExprOgUniq) of
+                                         { ( _recExprIgUniq,recExpr_2) | True ->
+                                             (case (_recExprIgUniq) of
+                                              { _exprOgUniq | _exprOgUniq `seq` (True) ->
+                                              (case (expr_1 _exprOgUniq) of
+                                               { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
+                                                   (case (_exprIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_RecExpr_Ext_2 :: T_RecExpr_2
+                                                                sem_RecExpr_Ext_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _recExprOpredSameScopeCounter | _recExprOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _recExprOlexLev | _recExprOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _recExprOkiGam | _recExprOkiGam `seq` (True) ->
+                                                                               (case (recExpr_2 _recExprOkiGam _recExprOlexLev _recExprOpredSameScopeCounter) of
+                                                                                { ( _recExprIpredSameScopeCounter,recExpr_3) | True ->
+                                                                                    (case (_recExprIpredSameScopeCounter) of
+                                                                                     { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case (_lhsIlexLev) of
+                                                                                      { _exprOlexLev | _exprOlexLev `seq` (True) ->
+                                                                                      (case (_lhsIkiGam) of
+                                                                                       { _exprOkiGam | _exprOkiGam `seq` (True) ->
+                                                                                       (case (True) of
+                                                                                        { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
+                                                                                        (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
+                                                                                         { ( _exprIpredSameScopeCounter,expr_3) | True ->
+                                                                                             (case (_exprIpredSameScopeCounter) of
+                                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                              (case ((let sem_RecExpr_Ext_3 :: T_RecExpr_3
+                                                                                                          sem_RecExpr_Ext_3 =
+                                                                                                              (\ _lhsIgenerDataInfoMp
+                                                                                                                 _lhsIkiVarMp
+                                                                                                                 _lhsIopts
+                                                                                                                 _lhsIpolGam
+                                                                                                                 _lhsIpolVarMp
+                                                                                                                 _lhsIpredScope
+                                                                                                                 _lhsItyGam
+                                                                                                                 _lhsItyKiGam
+                                                                                                                 _lhsItyKiGlobFreeTvarS ->
+                                                                                                                   _lhsIgenerDataInfoMp `seq`
+                                                                                                                   (_lhsIkiVarMp `seq`
+                                                                                                                    (_lhsIopts `seq`
+                                                                                                                     (_lhsIpolGam `seq`
+                                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                                       (_lhsIpredScope `seq`
+                                                                                                                        (_lhsItyGam `seq`
+                                                                                                                         (_lhsItyKiGam `seq`
+                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                           ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyGam) of
+                                                                                                                               { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                 { _recExprOtyKiGlobFreeTvarS | _recExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                 (case (_lhsItyKiGam) of
+                                                                                                                                  { _recExprOtyKiGam | _recExprOtyKiGam `seq` (True) ->
+                                                                                                                                  (case (_lhsItyGam) of
+                                                                                                                                   { _recExprOtyGam | _recExprOtyGam `seq` (True) ->
+                                                                                                                                   (case (_lhsIpredScope) of
+                                                                                                                                    { _recExprOpredScope | _recExprOpredScope `seq` (True) ->
+                                                                                                                                    (case (_lhsIpolVarMp) of
+                                                                                                                                     { _recExprOpolVarMp | _recExprOpolVarMp `seq` (True) ->
+                                                                                                                                     (case (_lhsIpolGam) of
+                                                                                                                                      { _recExprOpolGam | _recExprOpolGam `seq` (True) ->
+                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                       { _recExprOopts | _recExprOopts `seq` (True) ->
+                                                                                                                                       (case (_lhsIkiVarMp) of
+                                                                                                                                        { _recExprOkiVarMp | _recExprOkiVarMp `seq` (True) ->
+                                                                                                                                        (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                         { _recExprOgenerDataInfoMp | _recExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                         (case (recExpr_3 _recExprOgenerDataInfoMp _recExprOkiVarMp _recExprOopts _recExprOpolGam _recExprOpolVarMp _recExprOpredScope _recExprOtyGam _recExprOtyKiGam _recExprOtyKiGlobFreeTvarS) of
+                                                                                                                                          { ( _recExprIgenerDataInfoMp,_recExprIkiVarMp,_recExprIpolVarMp,recExpr_4) | True ->
+                                                                                                                                              (case (_recExprIpolVarMp) of
+                                                                                                                                               { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                                                               (case (_lhsIpolGam) of
+                                                                                                                                                { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                                                                (case (_lhsIopts) of
+                                                                                                                                                 { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                                                                 (case (_recExprIkiVarMp) of
+                                                                                                                                                  { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                                                  (case (_recExprIgenerDataInfoMp) of
+                                                                                                                                                   { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                   (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                                                    { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                                                        (case (_exprIgenerDataInfoMp) of
+                                                                                                                                                         { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                         (case (_exprIkiVarMp) of
+                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_exprIpolVarMp) of
+                                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                           (case ((let sem_RecExpr_Ext_4 :: T_RecExpr_4
+                                                                                                                                                                       sem_RecExpr_Ext_4 =
+                                                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                                                              _lhsIgathDataGam
+                                                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                  (_lhsIgathDataGam `seq`
+                                                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                      { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                       { _recExprOtyTyTySigFreeTvarS | _recExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIgathDataGam) of
+                                                                                                                                                                                        { _recExprOgathDataGam | _recExprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                         { _recExprOfinTyKiGam | _recExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                          { _recExprOfinKiVarMp | _recExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIclGam) of
+                                                                                                                                                                                           { _recExprOclGam | _recExprOclGam `seq` (True) ->
+                                                                                                                                                                                           (case (recExpr_4 _recExprOclGam _recExprOfinKiVarMp _recExprOfinTyKiGam _recExprOgathDataGam _recExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                            { ( _recExprIgathDataGam,recExpr_5) | True ->
+                                                                                                                                                                                                (case (_recExprIgathDataGam) of
+                                                                                                                                                                                                 { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                 (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                  { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                  (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                   { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                   (case (_lhsIclGam) of
+                                                                                                                                                                                                    { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                                                                    (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                     { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                                                                         (case (_exprIgathDataGam) of
+                                                                                                                                                                                                          { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                          (case ((let sem_RecExpr_Ext_5 :: T_RecExpr_5
+                                                                                                                                                                                                                      sem_RecExpr_Ext_5 =
+                                                                                                                                                                                                                          (\ _lhsIdataGam
+                                                                                                                                                                                                                             _lhsIpositionalFldNmL ->
+                                                                                                                                                                                                                               _lhsIdataGam `seq`
+                                                                                                                                                                                                                               (_lhsIpositionalFldNmL `seq`
+                                                                                                                                                                                                                                ((case (_lhsIdataGam) of
+                                                                                                                                                                                                                                  { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIdataGam) of
+                                                                                                                                                                                                                                   { _recExprOdataGam | _recExprOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                   (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                                                                                    { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                                                                                        (case (_lhsIpositionalFldNmL) of
+                                                                                                                                                                                                                                         { _recExprOpositionalFldNmL | _recExprOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                                                                         (case (recExpr_5 _recExprOdataGam _recExprOpositionalFldNmL) of
+                                                                                                                                                                                                                                          { ( _recExprIchrInstDeclSq,_recExprIpositionalFldNmL,recExpr_6) | True ->
+                                                                                                                                                                                                                                              (case (_recExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
+                                                                                                                                                                                                                                               { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                               (case (hdAndTl _recExprIpositionalFldNmL) of
+                                                                                                                                                                                                                                                { __tup214 | __tup214 `seq` (True) ->
+                                                                                                                                                                                                                                                (case (__tup214) of
+                                                                                                                                                                                                                                                 { (_,_lhsOpositionalFldNmL) | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                                                                                 (case ((let sem_RecExpr_Ext_6 :: T_RecExpr_6
+                                                                                                                                                                                                                                                             sem_RecExpr_Ext_6 =
+                                                                                                                                                                                                                                                                 (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                    _lhsIclDfGam
+                                                                                                                                                                                                                                                                    _lhsIfiOpts
+                                                                                                                                                                                                                                                                    _lhsIknTy
+                                                                                                                                                                                                                                                                    _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                    _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                    _lhsItyVarMp
+                                                                                                                                                                                                                                                                    _lhsIvalGam
+                                                                                                                                                                                                                                                                    _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                      _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                      (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                       (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                        (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                         (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                          (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                           (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                            (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                 { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                  { _recExprOvalTyGlobFreeTvarS | _recExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                   { _recExprOvalGam | _recExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                    { _recExprOtyTyGlobFreeTvarS | _recExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                     { _recExprOtvKiVarMp | _recExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                      { _recExprOclDfGam | _recExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                       { _recExprOchrStore | _recExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (__tup215) of
+                                                                                                                                                                                                                                                                                        { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (__tup215) of
+                                                                                                                                                                                                                                                                                         { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (__tup214) of
+                                                                                                                                                                                                                                                                                          { (_positionalNm,_) | _positionalNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (maybe _positionalNm id mbNm_) of
+                                                                                                                                                                                                                                                                                           { _nm | _nm `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (let  [r,e] = mkNewTyVarL 2 _lUniq
+                                                                                                                                                                                                                                                                                                       tl = hsnRec `appConApp` [r]
+                                                                                                                                                                                                                                                                                                  in   (r, tl `recRecExt` [(_nm,e)], tl, e)) of
+                                                                                                                                                                                                                                                                                            { __tup212 | __tup212 `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (__tup212) of
+                                                                                                                                                                                                                                                                                             { (_,_knRecTy,_,_) | _knRecTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                              { _knFIOpts | _knFIOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                                         { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                                         , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                                         , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                                         , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                                         , feRange = _range
+                                                                                                                                                                                                                                                                                                         }) of
+                                                                                                                                                                                                                                                                                               { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (fitsIn _knFIOpts _fe _lUniq2 _lhsItyVarMp _knRecTy _lhsIknTy) of
+                                                                                                                                                                                                                                                                                                { _foKnRec | _foKnRec `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (foVarMp _foKnRec `varUpd` _lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                 { _recTyVarMp | _recTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (__tup212) of
+                                                                                                                                                                                                                                                                                                  { (_,_,_,_knExprTy) | _knExprTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (__tup212) of
+                                                                                                                                                                                                                                                                                                   { (_,_,_knTailTy,_) | _knTailTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (maybe (False,_knTailTy,_knExprTy) (\(r,e) -> (True,r,e)) $ tyRecExtrWithLkup (varmpTyLookupCyc2 _recTyVarMp) _nm $ foTy _foKnRec) of
+                                                                                                                                                                                                                                                                                                    { __tup213 | __tup213 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (__tup213) of
+                                                                                                                                                                                                                                                                                                     { (_,_recKnTlTy,_) | _recKnTlTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_recKnTlTy) of
+                                                                                                                                                                                                                                                                                                      { _recExprOknTy | _recExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (_recTyVarMp) of
+                                                                                                                                                                                                                                                                                                       { _recExprOtyVarMp | _recExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_lhsIfiOpts {fioNoRLabElimFor = _nm : fioNoRLabElimFor _lhsIfiOpts}) of
+                                                                                                                                                                                                                                                                                                        { _recExprOfiOpts | _recExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (recExpr_6 _recExprOchrStore _recExprOclDfGam _recExprOfiOpts _recExprOknTy _recExprOtvKiVarMp _recExprOtyTyGlobFreeTvarS _recExprOtyVarMp _recExprOvalGam _recExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                         { ( _recExprIgathCnstrMp,_recExprIgathRangeMp,_recExprInoLetQuantTyVarIdS,_recExprItyVarMp,recExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                             (case (_recExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                              { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                               { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                 { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                  { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (__tup215) of
+                                                                                                                                                                                                                                                                                                                   { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (__tup213) of
+                                                                                                                                                                                                                                                                                                                    { (_,_,_exprOknTy) | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (__tup212) of
+                                                                                                                                                                                                                                                                                                                     { (_knRowTy,_,_,_) | _knRowTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                                                      { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (mkPrIdCHR _lUniq3) of
+                                                                                                                                                                                                                                                                                                                       { _prUid | _prUid `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case ([rngLift _range mkPredOccRng (Pred_Lacks _knRowTy (Label_Lab _nm)) _prUid _lhsIpredScope]) of
+                                                                                                                                                                                                                                                                                                                        { _prOccL | _prOccL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        (case (gathPredLToProveCnstrMp _prOccL) of
+                                                                                                                                                                                                                                                                                                                         { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                         (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                          { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                                                                                                              (case (cnstrMpUnions [_hereCnstrMp, _recExprIgathCnstrMp, _exprIgathCnstrMp]) of
+                                                                                                                                                                                                                                                                                                                               { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_recExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                                { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_recExprInoLetQuantTyVarIdS `Set.union` _exprInoLetQuantTyVarIdS) of
+                                                                                                                                                                                                                                                                                                                                 { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                  { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case ((let sem_RecExpr_Ext_7 :: T_RecExpr_7
+                                                                                                                                                                                                                                                                                                                                              sem_RecExpr_Ext_7 =
+                                                                                                                                                                                                                                                                                                                                                  (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                     _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                     _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                     _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                     _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                     _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                     _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                                       _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                       (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                        (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                         (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                          (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                           (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                            (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                             (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                              (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                               ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                 { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                  { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                   { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                    { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                     { _recExprOsysfEnv | _recExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                      { _recExprOrangeMp | _recExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                       { _recExprOfinValGam | _recExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                        { _recExprOfinTyVarMp | _recExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                         { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                          { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                           { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                            { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                             { _recExprOchrScopeBindMp | _recExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                              { _recExprOchrEvidBindMp | _recExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                               { _recExprOcSubst | _recExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                { _recExprOtr | _recExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                 { _recExprOmoduleNm | _recExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                 (case (recExpr_7 _recExprOcSubst _recExprOchrEvidBindMp _recExprOchrScopeBindMp _recExprOfinTyVarMp _recExprOfinValGam _recExprOmoduleNm _recExprOrangeMp _recExprOsysfEnv _recExprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                  { ( _recExprIallErrSq,_recExprIcSubst,_recExprIerrSq,_recExprIextNm,_recExprIfuCExprL,_recExprIgathMentrelFilterMp,_recExprIgathTvKiVarMp,_recExprIisExtFromEmpty,_recExprIpp,_recExprIppL,_recExprIrecCExpr,_recExprItrpp,_recExprIty) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                      (case (_recExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                       { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                       (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                                                                                                                        { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                        (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                         { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (_recExprIallErrSq `Seq.union` _exprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (_exprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               (case (ppFld "=" (Just _positionalNm) _nm (pp _nm) _exprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (Seq.unions [ _recExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                                  , rngLift _range mkNestErr' _pp [_exprIerrSq, foErrSq _foKnRec]
+                                                                                                                                                                                                                                                                                                                                                                                                                  ]) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (_recExprIextNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (__tup213) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { (_knRecHasLab,_,_) | _knRecHasLab `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (cSubstApp _exprIcSubst $ acoreNmHolePred _prUid) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _offset | _offset `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (CExpr_TupIns _recExprIrecCExpr CTagRec _nm _offset _exprIcexpr) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _rcexpr | _rcexpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (if _knRecHasLab
+                                                                                                                                                                                                                                                                                                                                                                                                            then (_nm,(_rcexpr,Nothing)) : _recExprIfuCExprL
+                                                                                                                                                                                                                                                                                                                                                                                                            else _recExprIfuCExprL) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                      (case (_recExprIgathMentrelFilterMp `mentrelFilterMpUnion` _exprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                       (case (_recExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                        (case (_recExprIisExtFromEmpty) of
+                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                         (case (_recExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (_pp : _recExprIppL) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case (_recExprIrecCExpr) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            (case (_recExprItrpp >< _exprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                             (case (foTy _foKnRec) of
+                                                                                                                                                                                                                                                                                                                                                                                                              { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                              (case (_ty) of
+                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                               ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOtrpp,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                                                                                                          in  sem_RecExpr_Ext_7)) of
+                                                                                                                                                                                                                                                                                                                                   { ( sem_RecExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                                                   ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                         in  sem_RecExpr_Ext_6)) of
+                                                                                                                                                                                                                                                  { ( sem_RecExpr_6) | True ->
+                                                                                                                                                                                                                                                  ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }) }) }) }) }) }) }))))
+                                                                                                                                                                                                                  in  sem_RecExpr_Ext_5)) of
+                                                                                                                                                                                                           { ( sem_RecExpr_5) | True ->
+                                                                                                                                                                                                           ( _lhsOgathDataGam,sem_RecExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                   in  sem_RecExpr_Ext_4)) of
+                                                                                                                                                            { ( sem_RecExpr_4) | True ->
+                                                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                      in  sem_RecExpr_Ext_3)) of
+                                                                                               { ( sem_RecExpr_3) | True ->
+                                                                                               ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) }) }) }) }) }) }) }) }) }) })))))
+                                                            in  sem_RecExpr_Ext_2)) of
+                                                     { ( sem_RecExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_RecExpr_2) }) }) }) }) }) }) })))
+                        in  sem_RecExpr_Ext_1)) of
+                 { ( sem_RecExpr_1) | True ->
+                 ( _lhsOrange,sem_RecExpr_1) }) }) }) }) })
+
+sem_RecExpr_Upd :: Range ->
+                   T_RecExpr ->
+                   HsName ->
+                   T_Expr ->
+                   T_RecExpr
+
+sem_RecExpr_Upd hsrange_ recExpr_ nm_ expr_ | hsrange_ `seq` (recExpr_ `seq` (nm_ `seq` (expr_ `seq` (True)))) =
+    (case (expr_) of
+     { ( _exprIrange,expr_1) | True ->
+         (case (recExpr_) of
+          { ( _recExprIrange,recExpr_1) | True ->
+              (case (rangeUnions [hsrange_, _recExprIrange, _exprIrange  ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_RecExpr_Upd_1 :: T_RecExpr_1
+                            sem_RecExpr_Upd_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> case nextUnique __cont of { (__cont, lUniq4) -> (__cont,lUniq,lUniq2,lUniq3,lUniq4)}}}} )) of
+                                       { __tup218 | __tup218 `seq` (True) ->
+                                       (case (__tup218) of
+                                        { (_recExprOgUniq,_,_,_,_) | _recExprOgUniq `seq` (True) ->
+                                        (case (recExpr_1 _recExprOgUniq) of
+                                         { ( _recExprIgUniq,recExpr_2) | True ->
+                                             (case (_recExprIgUniq) of
+                                              { _exprOgUniq | _exprOgUniq `seq` (True) ->
+                                              (case (expr_1 _exprOgUniq) of
+                                               { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
+                                                   (case (_exprIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_RecExpr_Upd_2 :: T_RecExpr_2
+                                                                sem_RecExpr_Upd_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _recExprOpredSameScopeCounter | _recExprOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _recExprOlexLev | _recExprOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _recExprOkiGam | _recExprOkiGam `seq` (True) ->
+                                                                               (case (recExpr_2 _recExprOkiGam _recExprOlexLev _recExprOpredSameScopeCounter) of
+                                                                                { ( _recExprIpredSameScopeCounter,recExpr_3) | True ->
+                                                                                    (case (_recExprIpredSameScopeCounter) of
+                                                                                     { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case (_lhsIlexLev) of
+                                                                                      { _exprOlexLev | _exprOlexLev `seq` (True) ->
+                                                                                      (case (_lhsIkiGam) of
+                                                                                       { _exprOkiGam | _exprOkiGam `seq` (True) ->
+                                                                                       (case (True) of
+                                                                                        { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
+                                                                                        (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
+                                                                                         { ( _exprIpredSameScopeCounter,expr_3) | True ->
+                                                                                             (case (_exprIpredSameScopeCounter) of
+                                                                                              { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                              (case ((let sem_RecExpr_Upd_3 :: T_RecExpr_3
+                                                                                                          sem_RecExpr_Upd_3 =
+                                                                                                              (\ _lhsIgenerDataInfoMp
+                                                                                                                 _lhsIkiVarMp
+                                                                                                                 _lhsIopts
+                                                                                                                 _lhsIpolGam
+                                                                                                                 _lhsIpolVarMp
+                                                                                                                 _lhsIpredScope
+                                                                                                                 _lhsItyGam
+                                                                                                                 _lhsItyKiGam
+                                                                                                                 _lhsItyKiGlobFreeTvarS ->
+                                                                                                                   _lhsIgenerDataInfoMp `seq`
+                                                                                                                   (_lhsIkiVarMp `seq`
+                                                                                                                    (_lhsIopts `seq`
+                                                                                                                     (_lhsIpolGam `seq`
+                                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                                       (_lhsIpredScope `seq`
+                                                                                                                        (_lhsItyGam `seq`
+                                                                                                                         (_lhsItyKiGam `seq`
+                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                           ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyGam) of
+                                                                                                                               { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                 { _recExprOtyKiGlobFreeTvarS | _recExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                 (case (_lhsItyKiGam) of
+                                                                                                                                  { _recExprOtyKiGam | _recExprOtyKiGam `seq` (True) ->
+                                                                                                                                  (case (_lhsItyGam) of
+                                                                                                                                   { _recExprOtyGam | _recExprOtyGam `seq` (True) ->
+                                                                                                                                   (case (_lhsIpredScope) of
+                                                                                                                                    { _recExprOpredScope | _recExprOpredScope `seq` (True) ->
+                                                                                                                                    (case (_lhsIpolVarMp) of
+                                                                                                                                     { _recExprOpolVarMp | _recExprOpolVarMp `seq` (True) ->
+                                                                                                                                     (case (_lhsIpolGam) of
+                                                                                                                                      { _recExprOpolGam | _recExprOpolGam `seq` (True) ->
+                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                       { _recExprOopts | _recExprOopts `seq` (True) ->
+                                                                                                                                       (case (_lhsIkiVarMp) of
+                                                                                                                                        { _recExprOkiVarMp | _recExprOkiVarMp `seq` (True) ->
+                                                                                                                                        (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                         { _recExprOgenerDataInfoMp | _recExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                         (case (recExpr_3 _recExprOgenerDataInfoMp _recExprOkiVarMp _recExprOopts _recExprOpolGam _recExprOpolVarMp _recExprOpredScope _recExprOtyGam _recExprOtyKiGam _recExprOtyKiGlobFreeTvarS) of
+                                                                                                                                          { ( _recExprIgenerDataInfoMp,_recExprIkiVarMp,_recExprIpolVarMp,recExpr_4) | True ->
+                                                                                                                                              (case (_recExprIpolVarMp) of
+                                                                                                                                               { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                                                               (case (_lhsIpolGam) of
+                                                                                                                                                { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                                                                (case (_lhsIopts) of
+                                                                                                                                                 { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                                                                 (case (_recExprIkiVarMp) of
+                                                                                                                                                  { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                                                  (case (_recExprIgenerDataInfoMp) of
+                                                                                                                                                   { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                   (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                                                    { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                                                        (case (_exprIgenerDataInfoMp) of
+                                                                                                                                                         { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                         (case (_exprIkiVarMp) of
+                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_exprIpolVarMp) of
+                                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                           (case ((let sem_RecExpr_Upd_4 :: T_RecExpr_4
+                                                                                                                                                                       sem_RecExpr_Upd_4 =
+                                                                                                                                                                           (\ _lhsIclGam
+                                                                                                                                                                              _lhsIfinKiVarMp
+                                                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                                                              _lhsIgathDataGam
+                                                                                                                                                                              _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                  (_lhsIgathDataGam `seq`
+                                                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                      { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                       { _recExprOtyTyTySigFreeTvarS | _recExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIgathDataGam) of
+                                                                                                                                                                                        { _recExprOgathDataGam | _recExprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                         { _recExprOfinTyKiGam | _recExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                          { _recExprOfinKiVarMp | _recExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIclGam) of
+                                                                                                                                                                                           { _recExprOclGam | _recExprOclGam `seq` (True) ->
+                                                                                                                                                                                           (case (recExpr_4 _recExprOclGam _recExprOfinKiVarMp _recExprOfinTyKiGam _recExprOgathDataGam _recExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                            { ( _recExprIgathDataGam,recExpr_5) | True ->
+                                                                                                                                                                                                (case (_recExprIgathDataGam) of
+                                                                                                                                                                                                 { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                 (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                  { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                  (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                   { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                   (case (_lhsIclGam) of
+                                                                                                                                                                                                    { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                                                                    (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                     { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                                                                         (case (_exprIgathDataGam) of
+                                                                                                                                                                                                          { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                                                                          (case ((let sem_RecExpr_Upd_5 :: T_RecExpr_5
+                                                                                                                                                                                                                      sem_RecExpr_Upd_5 =
+                                                                                                                                                                                                                          (\ _lhsIdataGam
+                                                                                                                                                                                                                             _lhsIpositionalFldNmL ->
+                                                                                                                                                                                                                               _lhsIdataGam `seq`
+                                                                                                                                                                                                                               (_lhsIpositionalFldNmL `seq`
+                                                                                                                                                                                                                                ((case (_lhsIdataGam) of
+                                                                                                                                                                                                                                  { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIdataGam) of
+                                                                                                                                                                                                                                   { _recExprOdataGam | _recExprOdataGam `seq` (True) ->
+                                                                                                                                                                                                                                   (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                                                                                    { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                                                                                        (case (_lhsIpositionalFldNmL) of
+                                                                                                                                                                                                                                         { _recExprOpositionalFldNmL | _recExprOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                                                                         (case (recExpr_5 _recExprOdataGam _recExprOpositionalFldNmL) of
+                                                                                                                                                                                                                                          { ( _recExprIchrInstDeclSq,_recExprIpositionalFldNmL,recExpr_6) | True ->
+                                                                                                                                                                                                                                              (case (_recExprIchrInstDeclSq `Seq.union` _exprIchrInstDeclSq) of
+                                                                                                                                                                                                                                               { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                                                               (case (_recExprIpositionalFldNmL) of
+                                                                                                                                                                                                                                                { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                                                                                (case ((let sem_RecExpr_Upd_6 :: T_RecExpr_6
+                                                                                                                                                                                                                                                            sem_RecExpr_Upd_6 =
+                                                                                                                                                                                                                                                                (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                   _lhsIclDfGam
+                                                                                                                                                                                                                                                                   _lhsIfiOpts
+                                                                                                                                                                                                                                                                   _lhsIknTy
+                                                                                                                                                                                                                                                                   _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                   _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                   _lhsItyVarMp
+                                                                                                                                                                                                                                                                   _lhsIvalGam
+                                                                                                                                                                                                                                                                   _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                     _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                     (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                      (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                                                                       (_lhsIknTy `seq`
+                                                                                                                                                                                                                                                                        (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                         (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                          (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                           (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                                                            (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                             ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                               { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                 { _recExprOvalTyGlobFreeTvarS | _recExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIvalGam) of
+                                                                                                                                                                                                                                                                                  { _recExprOvalGam | _recExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { _recExprOtyTyGlobFreeTvarS | _recExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                    { _recExprOtvKiVarMp | _recExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                     { _recExprOfiOpts | _recExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                      { _recExprOclDfGam | _recExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                       { _recExprOchrStore | _recExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (__tup218) of
+                                                                                                                                                                                                                                                                                        { (_,_,_,_lUniq3,_) | _lUniq3 `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (__tup218) of
+                                                                                                                                                                                                                                                                                         { (_,_,_lUniq2,_,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (__tup218) of
+                                                                                                                                                                                                                                                                                          { (_,_lUniq,_,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (let  [r,e] = mkNewTyVarL 2 _lUniq
+                                                                                                                                                                                                                                                                                                      tl = hsnRec `appConApp` [r]
+                                                                                                                                                                                                                                                                                                 in   (r, tl `recRecExt` [(nm_,e)], tl, e)) of
+                                                                                                                                                                                                                                                                                           { __tup216 | __tup216 `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (__tup216) of
+                                                                                                                                                                                                                                                                                            { (_,_knRecTy,_,_) | _knRecTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                             { _knFIOpts | _knFIOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (defaultFIEnv
+                                                                                                                                                                                                                                                                                                        { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                                                        , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                                                        , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                                                        , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                                                        , feRange = _range
+                                                                                                                                                                                                                                                                                                        }) of
+                                                                                                                                                                                                                                                                                              { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (fitsIn _knFIOpts _fe _lUniq2 _lhsItyVarMp _knRecTy _lhsIknTy) of
+                                                                                                                                                                                                                                                                                               { _foKnRec | _foKnRec `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (foVarMp _foKnRec `varUpd` _lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                { _recTyVarMp | _recTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (__tup216) of
+                                                                                                                                                                                                                                                                                                 { (_,_,_,_knExprTy) | _knExprTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (__tup216) of
+                                                                                                                                                                                                                                                                                                  { (_,_,_knTailTy,_) | _knTailTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (maybe (False,_knTailTy,_knExprTy) (\(r,e) -> (True,r,e)) $ tyRecExtrWithLkup (varmpTyLookupCyc2 _recTyVarMp) nm_ $ foTy _foKnRec) of
+                                                                                                                                                                                                                                                                                                   { __tup217 | __tup217 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (__tup217) of
+                                                                                                                                                                                                                                                                                                    { (_,_recKnTlTy,_) | _recKnTlTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_recKnTlTy `recRecExt` [(nm_,mkNewTyVar _lUniq3)]) of
+                                                                                                                                                                                                                                                                                                     { _recExprOknTy | _recExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_recTyVarMp) of
+                                                                                                                                                                                                                                                                                                      { _recExprOtyVarMp | _recExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (recExpr_6 _recExprOchrStore _recExprOclDfGam _recExprOfiOpts _recExprOknTy _recExprOtvKiVarMp _recExprOtyTyGlobFreeTvarS _recExprOtyVarMp _recExprOvalGam _recExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                       { ( _recExprIgathCnstrMp,_recExprIgathRangeMp,_recExprInoLetQuantTyVarIdS,_recExprItyVarMp,recExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                           (case (_recExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                            { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                             { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                             (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                              { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                              (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                               { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                               (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (__tup218) of
+                                                                                                                                                                                                                                                                                                                 { (_,_,_,_,_lUniq4) | _lUniq4 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (__tup217) of
+                                                                                                                                                                                                                                                                                                                  { (_,_,_exprOknTy) | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (__tup216) of
+                                                                                                                                                                                                                                                                                                                   { (_knRowTy,_,_,_) | _knRowTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                                                                    { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (mkPrIdCHR _lUniq4) of
+                                                                                                                                                                                                                                                                                                                     { _prUid | _prUid `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case ([rngLift _range mkPredOccRng (Pred_Lacks _knRowTy (Label_Lab nm_)) _prUid _lhsIpredScope]) of
+                                                                                                                                                                                                                                                                                                                      { _prOccL | _prOccL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (gathPredLToProveCnstrMp _prOccL) of
+                                                                                                                                                                                                                                                                                                                       { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                        { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                                                                                                            (case (cnstrMpUnions [_hereCnstrMp, _recExprIgathCnstrMp, _exprIgathCnstrMp]) of
+                                                                                                                                                                                                                                                                                                                             { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_recExprIgathRangeMp `Map.union` _exprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                              { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_recExprInoLetQuantTyVarIdS `Set.union` _exprInoLetQuantTyVarIdS) of
+                                                                                                                                                                                                                                                                                                                               { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case ((let sem_RecExpr_Upd_7 :: T_RecExpr_7
+                                                                                                                                                                                                                                                                                                                                            sem_RecExpr_Upd_7 =
+                                                                                                                                                                                                                                                                                                                                                (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                   _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                   _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                   _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                   _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                   _lhsItr ->
+                                                                                                                                                                                                                                                                                                                                                     _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                             ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                               { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                 { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                  { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                   { _recExprOsysfEnv | _recExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                    { _recExprOrangeMp | _recExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                     { _recExprOfinValGam | _recExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                      { _recExprOfinTyVarMp | _recExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                       { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                        { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                         { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                          { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                           { _recExprOchrScopeBindMp | _recExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                            { _recExprOchrEvidBindMp | _recExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                             { _recExprOcSubst | _recExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                              { _recExprOtr | _recExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                               { _recExprOmoduleNm | _recExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                               (case (recExpr_7 _recExprOcSubst _recExprOchrEvidBindMp _recExprOchrScopeBindMp _recExprOfinTyVarMp _recExprOfinValGam _recExprOmoduleNm _recExprOrangeMp _recExprOsysfEnv _recExprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                { ( _recExprIallErrSq,_recExprIcSubst,_recExprIerrSq,_recExprIextNm,_recExprIfuCExprL,_recExprIgathMentrelFilterMp,_recExprIgathTvKiVarMp,_recExprIisExtFromEmpty,_recExprIpp,_recExprIppL,_recExprIrecCExpr,_recExprItrpp,_recExprIty) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (_recExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                     { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                     (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                                                                                                                      { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                      (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                                                                                                                       { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (_recExprIallErrSq `Seq.union` _exprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                            (case (_exprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (ppFld ":=" Nothing nm_ (pp nm_) _exprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (Seq.unions [ _recExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                                , rngLift _range mkNestErr' _pp [_exprIerrSq, foErrSq _foKnRec]
+                                                                                                                                                                                                                                                                                                                                                                                                                ]) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               (case (_recExprIextNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (__tup217) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { (_knRecHasLab,_,_) | _knRecHasLab `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (cSubstApp _exprIcSubst $ acoreNmHolePred _prUid) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _offset | _offset `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (CExpr_TupUpd _recExprIrecCExpr CTagRec nm_ _offset _exprIcexpr) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _rcexpr | _rcexpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (if _knRecHasLab
+                                                                                                                                                                                                                                                                                                                                                                                                          then (nm_,(_rcexpr,Nothing)) : _recExprIfuCExprL
+                                                                                                                                                                                                                                                                                                                                                                                                          else _recExprIfuCExprL) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                    (case (_recExprIgathMentrelFilterMp `mentrelFilterMpUnion` _exprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                     (case (_recExprIgathTvKiVarMp `varmpUnion` _exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                      (case (not _knRecHasLab && _recExprIisExtFromEmpty) of
+                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                       (case (_recExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                        (case (_pp : _recExprIppL) of
+                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                         (case (_recExprIrecCExpr) of
+                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (_recExprItrpp >< _exprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                           (case (foTy _foKnRec) of
+                                                                                                                                                                                                                                                                                                                                                                                                            { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                            (case (_ty) of
+                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOtrpp,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                                                                                                        in  sem_RecExpr_Upd_7)) of
+                                                                                                                                                                                                                                                                                                                                 { ( sem_RecExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                                                 ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                        in  sem_RecExpr_Upd_6)) of
+                                                                                                                                                                                                                                                 { ( sem_RecExpr_6) | True ->
+                                                                                                                                                                                                                                                 ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }) }) }) }) }) }))))
+                                                                                                                                                                                                                  in  sem_RecExpr_Upd_5)) of
+                                                                                                                                                                                                           { ( sem_RecExpr_5) | True ->
+                                                                                                                                                                                                           ( _lhsOgathDataGam,sem_RecExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))
+                                                                                                                                                                   in  sem_RecExpr_Upd_4)) of
+                                                                                                                                                            { ( sem_RecExpr_4) | True ->
+                                                                                                                                                            ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                      in  sem_RecExpr_Upd_3)) of
+                                                                                               { ( sem_RecExpr_3) | True ->
+                                                                                               ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) }) }) }) }) }) }) }) }) }) })))))
+                                                            in  sem_RecExpr_Upd_2)) of
+                                                     { ( sem_RecExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_RecExpr_2) }) }) }) }) }) }) })))
+                        in  sem_RecExpr_Upd_1)) of
+                 { ( sem_RecExpr_1) | True ->
+                 ( _lhsOrange,sem_RecExpr_1) }) }) }) }) })
+
+sem_RecExpr_Expr :: Range ->
+                    T_Expr ->
+                    T_RecExpr
+
+sem_RecExpr_Expr hsrange_ expr_ | hsrange_ `seq` (expr_ `seq` (True)) =
+    (case (expr_) of
+     { ( _exprIrange,expr_1) | True ->
+         (case (rangeUnions [hsrange_, _exprIrange   , _exprIrange  ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_RecExpr_Expr_1 :: T_RecExpr_1
+                       sem_RecExpr_Expr_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _exprOgUniq | _exprOgUniq `seq` (True) ->
+                                  (case (expr_1 _exprOgUniq) of
+                                   { ( _exprIgUniq,_exprIhasInstDecl,expr_2) | True ->
+                                       (case (_exprIgUniq) of
+                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                        (case ((let sem_RecExpr_Expr_2 :: T_RecExpr_2
+                                                    sem_RecExpr_Expr_2 =
+                                                        (\ _lhsIkiGam
+                                                           _lhsIlexLev
+                                                           _lhsIpredSameScopeCounter ->
+                                                             _lhsIkiGam `seq`
+                                                             (_lhsIlexLev `seq`
+                                                              (_lhsIpredSameScopeCounter `seq`
+                                                               ((case (_lhsIpredSameScopeCounter) of
+                                                                 { _exprOpredSameScopeCounter | _exprOpredSameScopeCounter `seq` (True) ->
+                                                                 (case (_lhsIlexLev) of
+                                                                  { _exprOlexLev | _exprOlexLev `seq` (True) ->
+                                                                  (case (_lhsIkiGam) of
+                                                                   { _exprOkiGam | _exprOkiGam `seq` (True) ->
+                                                                   (case (True) of
+                                                                    { _exprOisFirstLet | _exprOisFirstLet `seq` (True) ->
+                                                                    (case (expr_2 _exprOisFirstLet _exprOkiGam _exprOlexLev _exprOpredSameScopeCounter) of
+                                                                     { ( _exprIpredSameScopeCounter,expr_3) | True ->
+                                                                         (case (_exprIpredSameScopeCounter) of
+                                                                          { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                          (case ((let sem_RecExpr_Expr_3 :: T_RecExpr_3
+                                                                                      sem_RecExpr_Expr_3 =
+                                                                                          (\ _lhsIgenerDataInfoMp
+                                                                                             _lhsIkiVarMp
+                                                                                             _lhsIopts
+                                                                                             _lhsIpolGam
+                                                                                             _lhsIpolVarMp
+                                                                                             _lhsIpredScope
+                                                                                             _lhsItyGam
+                                                                                             _lhsItyKiGam
+                                                                                             _lhsItyKiGlobFreeTvarS ->
+                                                                                               _lhsIgenerDataInfoMp `seq`
+                                                                                               (_lhsIkiVarMp `seq`
+                                                                                                (_lhsIopts `seq`
+                                                                                                 (_lhsIpolGam `seq`
+                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                   (_lhsIpredScope `seq`
+                                                                                                    (_lhsItyGam `seq`
+                                                                                                     (_lhsItyKiGam `seq`
+                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                       ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                         { _exprOtyKiGlobFreeTvarS | _exprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                         (case (_lhsItyKiGam) of
+                                                                                                          { _exprOtyKiGam | _exprOtyKiGam `seq` (True) ->
+                                                                                                          (case (_lhsItyGam) of
+                                                                                                           { _exprOtyGam | _exprOtyGam `seq` (True) ->
+                                                                                                           (case (_lhsIpredScope) of
+                                                                                                            { _exprOpredScope | _exprOpredScope `seq` (True) ->
+                                                                                                            (case (_lhsIpolVarMp) of
+                                                                                                             { _exprOpolVarMp | _exprOpolVarMp `seq` (True) ->
+                                                                                                             (case (_lhsIpolGam) of
+                                                                                                              { _exprOpolGam | _exprOpolGam `seq` (True) ->
+                                                                                                              (case (_lhsIopts) of
+                                                                                                               { _exprOopts | _exprOopts `seq` (True) ->
+                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                { _exprOkiVarMp | _exprOkiVarMp `seq` (True) ->
+                                                                                                                (case (_lhsIgenerDataInfoMp) of
+                                                                                                                 { _exprOgenerDataInfoMp | _exprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                 (case (expr_3 _exprOgenerDataInfoMp _exprOkiVarMp _exprOopts _exprOpolGam _exprOpolVarMp _exprOpredScope _exprOtyGam _exprOtyKiGam _exprOtyKiGlobFreeTvarS) of
+                                                                                                                  { ( _exprIgenerDataInfoMp,_exprIkiVarMp,_exprIpolVarMp,expr_4) | True ->
+                                                                                                                      (case (_exprIgenerDataInfoMp) of
+                                                                                                                       { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                       (case (_exprIkiVarMp) of
+                                                                                                                        { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                        (case (_exprIpolVarMp) of
+                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                         (case ((let sem_RecExpr_Expr_4 :: T_RecExpr_4
+                                                                                                                                     sem_RecExpr_Expr_4 =
+                                                                                                                                         (\ _lhsIclGam
+                                                                                                                                            _lhsIfinKiVarMp
+                                                                                                                                            _lhsIfinTyKiGam
+                                                                                                                                            _lhsIgathDataGam
+                                                                                                                                            _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                              _lhsIclGam `seq`
+                                                                                                                                              (_lhsIfinKiVarMp `seq`
+                                                                                                                                               (_lhsIfinTyKiGam `seq`
+                                                                                                                                                (_lhsIgathDataGam `seq`
+                                                                                                                                                 (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                  ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                    { _exprOtyTyTySigFreeTvarS | _exprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                    (case (_lhsIgathDataGam) of
+                                                                                                                                                     { _exprOgathDataGam | _exprOgathDataGam `seq` (True) ->
+                                                                                                                                                     (case (_lhsIfinTyKiGam) of
+                                                                                                                                                      { _exprOfinTyKiGam | _exprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinKiVarMp) of
+                                                                                                                                                       { _exprOfinKiVarMp | _exprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                       (case (_lhsIclGam) of
+                                                                                                                                                        { _exprOclGam | _exprOclGam `seq` (True) ->
+                                                                                                                                                        (case (expr_4 _exprOclGam _exprOfinKiVarMp _exprOfinTyKiGam _exprOgathDataGam _exprOtyTyTySigFreeTvarS) of
+                                                                                                                                                         { ( _exprIgathDataGam,expr_5) | True ->
+                                                                                                                                                             (case (_exprIgathDataGam) of
+                                                                                                                                                              { _lhsOgathDataGam | _lhsOgathDataGam `seq` (True) ->
+                                                                                                                                                              (case ((let sem_RecExpr_Expr_5 :: T_RecExpr_5
+                                                                                                                                                                          sem_RecExpr_Expr_5 =
+                                                                                                                                                                              (\ _lhsIdataGam
+                                                                                                                                                                                 _lhsIpositionalFldNmL ->
+                                                                                                                                                                                   _lhsIdataGam `seq`
+                                                                                                                                                                                   (_lhsIpositionalFldNmL `seq`
+                                                                                                                                                                                    ((case (_lhsIdataGam) of
+                                                                                                                                                                                      { _exprOdataGam | _exprOdataGam `seq` (True) ->
+                                                                                                                                                                                      (case (expr_5 _exprOdataGam) of
+                                                                                                                                                                                       { ( _exprIchrClassDeclSq,_exprIchrFIIn,_exprIchrInstDeclSq,_exprIgathClDfGam,expr_6) | True ->
+                                                                                                                                                                                           (case (_exprIchrInstDeclSq) of
+                                                                                                                                                                                            { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                            (case (_lhsIpositionalFldNmL) of
+                                                                                                                                                                                             { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                             (case ((let sem_RecExpr_Expr_6 :: T_RecExpr_6
+                                                                                                                                                                                                         sem_RecExpr_Expr_6 =
+                                                                                                                                                                                                             (\ _lhsIchrStore
+                                                                                                                                                                                                                _lhsIclDfGam
+                                                                                                                                                                                                                _lhsIfiOpts
+                                                                                                                                                                                                                _lhsIknTy
+                                                                                                                                                                                                                _lhsItvKiVarMp
+                                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                _lhsItyVarMp
+                                                                                                                                                                                                                _lhsIvalGam
+                                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                  _lhsIchrStore `seq`
+                                                                                                                                                                                                                  (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                   (_lhsIfiOpts `seq`
+                                                                                                                                                                                                                    (_lhsIknTy `seq`
+                                                                                                                                                                                                                     (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                        (_lhsIvalGam `seq`
+                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                            { _exprOvalTyGlobFreeTvarS | _exprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                            (case (_lhsIvalGam) of
+                                                                                                                                                                                                                             { _exprOvalGam | _exprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                             (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                              { _exprOtyVarMp | _exprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                               { _exprOtyTyGlobFreeTvarS | _exprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                { _exprOtvKiVarMp | _exprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                (case (_lhsIknTy) of
+                                                                                                                                                                                                                                 { _exprOknTy | _exprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                  { _exprOfiOpts | _exprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                   { _exprOclDfGam | _exprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                   (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                    { _exprOchrStore | _exprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                    (case (expr_6 _exprOchrStore _exprOclDfGam _exprOfiOpts _exprOknTy _exprOtvKiVarMp _exprOtyTyGlobFreeTvarS _exprOtyVarMp _exprOvalGam _exprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                     { ( _exprIgathCnstrMp,_exprIgathRangeMp,_exprIgathValGam,_exprInoLetQuantTyVarIdS,_exprIty,_exprItyVarMp,expr_7) | True ->
+                                                                                                                                                                                                                                         (case (_exprIgathCnstrMp) of
+                                                                                                                                                                                                                                          { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                          (case (_exprIgathRangeMp) of
+                                                                                                                                                                                                                                           { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                           (case (_exprInoLetQuantTyVarIdS) of
+                                                                                                                                                                                                                                            { _lhsOnoLetQuantTyVarIdS | _lhsOnoLetQuantTyVarIdS `seq` (True) ->
+                                                                                                                                                                                                                                            (case (_exprItyVarMp) of
+                                                                                                                                                                                                                                             { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                             (case ((let sem_RecExpr_Expr_7 :: T_RecExpr_7
+                                                                                                                                                                                                                                                         sem_RecExpr_Expr_7 =
+                                                                                                                                                                                                                                                             (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                _lhsIfinValGam
+                                                                                                                                                                                                                                                                _lhsImoduleNm
+                                                                                                                                                                                                                                                                _lhsIrangeMp
+                                                                                                                                                                                                                                                                _lhsIsysfEnv
+                                                                                                                                                                                                                                                                _lhsItr ->
+                                                                                                                                                                                                                                                                  _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                  (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                   (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                    (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                     (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                       (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                        (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                         (_lhsItr `seq`
+                                                                                                                                                                                                                                                                          ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                            { _exprOsysfEnv | _exprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                             { _exprOrangeMp | _exprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                              { _exprOfinValGam | _exprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                               { _exprOfinTyVarMp | _exprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                { _exprOtr | _exprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                 { _exprOmoduleNm | _exprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                  { _exprOchrScopeBindMp | _exprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                   { _exprOchrEvidBindMp | _exprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                    { _exprOcSubst | _exprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (ExprCtxt_Top) of
+                                                                                                                                                                                                                                                                                     { _exprOexprCtxt | _exprOexprCtxt `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (expr_7 _exprOcSubst _exprOchrEvidBindMp _exprOchrScopeBindMp _exprOexprCtxt _exprOfinTyVarMp _exprOfinValGam _exprOmoduleNm _exprOrangeMp _exprOsysfEnv _exprOtr) of
+                                                                                                                                                                                                                                                                                      { ( _exprIallErrSq,_exprIappArgCoeL,_exprIappArgPPL,_exprIappFunCExpr,_exprIappFunNm,_exprIappFunPP,_exprIbackCBindL,_exprIcSubst,_exprIcaseFailS,_exprIcexpr,_exprIerrSq,_exprIfrontCBindL,_exprIfuCExprL,_exprIgathClGam,_exprIgathHiddenExports,_exprIgathKiGam,_exprIgathLamMp,_exprIgathMentrelFilterMp,_exprIgathPolGam,_exprIgathTvKiVarMp,_exprIgathTyGam,_exprIgathTyKiGam,_exprIisNewtype,_exprIlamArgPPL,_exprIlamBodyPP,_exprIletCBody,_exprIletTyCBindL,_exprIletValCBindL,_exprIletValMainCBindL,_exprIorphanS,_exprIpp,_exprItrpp) | True ->
+                                                                                                                                                                                                                                                                                          (case (_exprIallErrSq) of
+                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_exprIcSubst) of
+                                                                                                                                                                                                                                                                                            { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_exprIerrSq) of
+                                                                                                                                                                                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                              { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case ([]) of
+                                                                                                                                                                                                                                                                                               { _lhsOfuCExprL | _lhsOfuCExprL `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_exprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_exprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                 { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (False) of
+                                                                                                                                                                                                                                                                                                  { _lhsOisExtFromEmpty | _lhsOisExtFromEmpty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_exprIpp) of
+                                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_pp) of
+                                                                                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case ([]) of
+                                                                                                                                                                                                                                                                                                     { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_exprIcexpr) of
+                                                                                                                                                                                                                                                                                                      { _recCExpr | _recCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (_recCExpr) of
+                                                                                                                                                                                                                                                                                                       { _lhsOrecCExpr | _lhsOrecCExpr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_exprItrpp) of
+                                                                                                                                                                                                                                                                                                        { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (_exprIty) of
+                                                                                                                                                                                                                                                                                                         { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfuCExprL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOisExtFromEmpty,_lhsOpp,_lhsOppL,_lhsOrecCExpr,_lhsOtrpp,_lhsOty) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                                                                     in  sem_RecExpr_Expr_7)) of
+                                                                                                                                                                                                                                              { ( sem_RecExpr_7) | True ->
+                                                                                                                                                                                                                                              ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOnoLetQuantTyVarIdS,_lhsOtyVarMp,sem_RecExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                                                                                                                     in  sem_RecExpr_Expr_6)) of
+                                                                                                                                                                                              { ( sem_RecExpr_6) | True ->
+                                                                                                                                                                                              ( _lhsOchrInstDeclSq,_lhsOpositionalFldNmL,sem_RecExpr_6) }) }) }) }) }))))
+                                                                                                                                                                      in  sem_RecExpr_Expr_5)) of
+                                                                                                                                                               { ( sem_RecExpr_5) | True ->
+                                                                                                                                                               ( _lhsOgathDataGam,sem_RecExpr_5) }) }) }) }) }) }) }) })))))))
+                                                                                                                                 in  sem_RecExpr_Expr_4)) of
+                                                                                                                          { ( sem_RecExpr_4) | True ->
+                                                                                                                          ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,sem_RecExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                   in  sem_RecExpr_Expr_3)) of
                                                                            { ( sem_RecExpr_3) | True ->
                                                                            ( _lhsOpredSameScopeCounter,sem_RecExpr_3) }) }) }) }) }) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_RecPatExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_RecPatExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_RecPatExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_RecPatExpr.hs
@@ -19,1146 +19,1185 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- RecPatExpr --------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attribute:
-         gUniq                : UID
-   visit 2:
-      inherited attributes:
-         kiGam                : KiGam
-         lexLev               : Int
-      chained attribute:
-         predSameScopeCounter : Int
-   visit 3:
-      inherited attributes:
-         opts                 : EHCOpts
-         polGam               : PolGam
-         predScope            : PredScope
-         tyKiGlobFreeTvarS    : TyVarIdS
-      chained attributes:
-         kiVarMp              : VarMp
-         polVarMp             : VarMp
-         tyGam                : TyGam
-         tyKiGam              : TyKiGam
-   visit 4:
-      inherited attributes:
-         clGam                : ClGam
-         dataGam              : DataGam
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         tyTyTySigFreeTvarS   : TyVarIdS
-      chained attribute:
-         positionalFldNmL     : [HsName]
-      synthesized attributes:
-         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
-         hasAFldRef           : Bool
-   visit 5:
-      inherited attributes:
-         fiOpts               : FIOpts
-         knTy                 : Ty
-         matchOnFld           : Bool
-         tySigGam             : ValGam
-      chained attributes:
-         patTyVarMp           : VarMp
-         valGam               : ValGam
-   visit 6:
-      inherited attributes:
-         chrStore             : ScopedPredStore
-         clDfGam              : ClassDefaultGam
-         tvKiVarMp            : VarMp
-         tyTyGlobFreeTvarS    : TyVarIdS
-         valTyGlobFreeTvarS   : TyVarIdS
-      chained attribute:
-         tyVarMp              : VarMp
-      synthesized attributes:
-         gathCnstrMp          : CHRPredOccCnstrMp
-         gathRangeMp          : RangeMp
-         scopeGam             : ScopeGam
-         ty                   : Ty
-   visit 7:
-      inherited attributes:
-         ceParentNm           : HsName
-         chrEvidBindMp        : EvidKeyToCBindMap
-         chrScopeBindMp       : PredScopeToCBindMap
-         finTyVarMp           : VarMp
-         finValGam            : ValGam
-         moduleNm             : HsName
-         rangeMp              : RangeMp
-         sysfEnv              : ToSysfEnv
-         tySigVarMp           : VarMp
-      chained attribute:
-         cSubst               : CSubst
-      synthesized attributes:
-         allErrSq             : ErrSq
-         errSq                : ErrSq
-         extNm                : HsName
-         fsRPatL              : FieldSplitL
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         gathTvKiVarMp        : VarMp
-         patCRest             : CPatRest
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         valCBindL            : CBindL
-   alternatives:
-      alternative Empty:
-         child hsrange        : {Range}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup213     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup213     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup213     : _
-            intra range       : {Range}
-         visit 4:
-            intra _tup213     : _
-            intra range       : {Range}
-         visit 5:
-            local lUniq       : {UID}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup213     : _
-            intra range       : {Range}
-         visit 6:
-            local ty          : {Ty}
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-         visit 7:
-            local pp          : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-      alternative Ext:
-         child hsrange        : {Range}
-         child recPatExpr     : RecPatExpr 
-         child mbNm           : {Maybe HsName}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup216     : _
-            intra range       : {Range}
-         visit 2:
-            intra _tup216     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup216     : _
-            intra range       : {Range}
-         visit 4:
-            local _tup215     : _
-            intra _tup216     : _
-            intra range       : {Range}
-         visit 5:
-            local lUniq2      : {UID}
-            local lUniq       : {UID}
-            local positionalNm : {HsName}
-            local nm          : {HsName}
-            local _tup214     : _
-            local rowTy       : {Ty}
-            local extTy       : {Ty}
-            local patTy       : {Ty}
-            local recTy       : {Ty}
-            local fe          : {FIEnv}
-            local fo_         : {FIOut}
-            intra _tup216     : _
-            intra _tup215     : _
-            intra range       : {Range}
-         visit 6:
-            local lUniq3      : {UID}
-            local prUid       : {PredOccId}
-            local prOccL      : {[PredOcc]}
-            local hereCnstrMp : _
-            local ty          : {Ty}
-            intra _tup216     : _
-            intra nm          : {HsName}
-            intra rowTy       : {Ty}
-            intra range       : {Range}
-            intra fo_         : {FIOut}
-            intra positionalNm : {HsName}
-         visit 7:
-            local pp          : _
-            local offset      : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-            intra prUid       : {PredOccId}
-            intra nm          : {HsName}
-            intra positionalNm : {HsName}
-      alternative Expr:
-         child hsrange        : {Range}
-         child patExpr        : PatExpr 
-         visit 0:
-            local range       : {Range}
-         visit 7:
-            local pp          : _
--}
-sem_RecPatExpr_Empty :: Range ->
-                        T_RecPatExpr
-
-sem_RecPatExpr_Empty hsrange_ | hsrange_ `seq` (True) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_RecPatExpr_Empty_1 :: T_RecPatExpr_1
-                  sem_RecPatExpr_Empty_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup213 | __tup213 `seq` (True) ->
-                             (case (__tup213) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_RecPatExpr_Empty_2 :: T_RecPatExpr_2
-                                          sem_RecPatExpr_Empty_2 =
-                                              (\ _lhsIkiGam
-                                                 _lhsIlexLev
-                                                 _lhsIpredSameScopeCounter ->
-                                                   _lhsIkiGam `seq`
-                                                   (_lhsIlexLev `seq`
-                                                    (_lhsIpredSameScopeCounter `seq`
-                                                     ((case (_lhsIpredSameScopeCounter) of
-                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                       (case ((let sem_RecPatExpr_Empty_3 :: T_RecPatExpr_3
-                                                                   sem_RecPatExpr_Empty_3 =
-                                                                       (\ _lhsIkiVarMp
-                                                                          _lhsIopts
-                                                                          _lhsIpolGam
-                                                                          _lhsIpolVarMp
-                                                                          _lhsIpredScope
-                                                                          _lhsItyGam
-                                                                          _lhsItyKiGam
-                                                                          _lhsItyKiGlobFreeTvarS ->
-                                                                            _lhsIkiVarMp `seq`
-                                                                            (_lhsIopts `seq`
-                                                                             (_lhsIpolGam `seq`
-                                                                              (_lhsIpolVarMp `seq`
-                                                                               (_lhsIpredScope `seq`
-                                                                                (_lhsItyGam `seq`
-                                                                                 (_lhsItyKiGam `seq`
-                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                   ((case (_lhsIkiVarMp) of
-                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                     (case (_lhsIpolVarMp) of
-                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                      (case (_lhsItyGam) of
-                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                       (case (_lhsItyKiGam) of
-                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                        (case ((let sem_RecPatExpr_Empty_4 :: T_RecPatExpr_4
-                                                                                                    sem_RecPatExpr_Empty_4 =
-                                                                                                        (\ _lhsIclGam
-                                                                                                           _lhsIdataGam
-                                                                                                           _lhsIfinKiVarMp
-                                                                                                           _lhsIfinTyKiGam
-                                                                                                           _lhsIpositionalFldNmL
-                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                             _lhsIclGam `seq`
-                                                                                                             (_lhsIdataGam `seq`
-                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                (_lhsIpositionalFldNmL `seq`
-                                                                                                                 (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                  ((case (Seq.empty) of
-                                                                                                                    { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                    (case (False) of
-                                                                                                                     { _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
-                                                                                                                     (case (_lhsIpositionalFldNmL) of
-                                                                                                                      { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                      (case ((let sem_RecPatExpr_Empty_5 :: T_RecPatExpr_5
-                                                                                                                                  sem_RecPatExpr_Empty_5 =
-                                                                                                                                      (\ _lhsIfiOpts
-                                                                                                                                         _lhsIknTy
-                                                                                                                                         _lhsImatchOnFld
-                                                                                                                                         _lhsIpatTyVarMp
-                                                                                                                                         _lhsItySigGam
-                                                                                                                                         _lhsIvalGam ->
-                                                                                                                                           _lhsIfiOpts `seq`
-                                                                                                                                           (_lhsIknTy `seq`
-                                                                                                                                            (_lhsImatchOnFld `seq`
-                                                                                                                                             (_lhsIpatTyVarMp `seq`
-                                                                                                                                              (_lhsItySigGam `seq`
-                                                                                                                                               (_lhsIvalGam `seq`
-                                                                                                                                                ((case (__tup213) of
-                                                                                                                                                  { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                                                                                                                  (case (defaultFIEnv
-                                                                                                                                                             { feEHCOpts = _lhsIopts
-                                                                                                                                                             , fePredScope = _lhsIpredScope
-                                                                                                                                                             , feTyGam = _lhsItyGam
-                                                                                                                                                             , fePolGam = _lhsIpolGam
-                                                                                                                                                             , feRange = _range
-                                                                                                                                                             }) of
-                                                                                                                                                   { _fe | _fe `seq` (True) ->
-                                                                                                                                                   (case (fitsIn (_lhsIfiOpts) _fe _lUniq _lhsIpatTyVarMp _lhsIknTy recRecEmp) of
-                                                                                                                                                    { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                    (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                     { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIvalGam) of
-                                                                                                                                                      { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                      (case ((let sem_RecPatExpr_Empty_6 :: T_RecPatExpr_6
-                                                                                                                                                                  sem_RecPatExpr_Empty_6 =
-                                                                                                                                                                      (\ _lhsIchrStore
-                                                                                                                                                                         _lhsIclDfGam
-                                                                                                                                                                         _lhsItvKiVarMp
-                                                                                                                                                                         _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                         _lhsItyVarMp
-                                                                                                                                                                         _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                           _lhsIchrStore `seq`
-                                                                                                                                                                           (_lhsIclDfGam `seq`
-                                                                                                                                                                            (_lhsItvKiVarMp `seq`
-                                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                              (_lhsItyVarMp `seq`
-                                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                ((case (Map.empty) of
-                                                                                                                                                                                  { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                  (case (Map.empty) of
-                                                                                                                                                                                   { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                   (case (emptyGam) of
-                                                                                                                                                                                    { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                    (case (foTy _fo_) of
-                                                                                                                                                                                     { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                     (case (_ty) of
-                                                                                                                                                                                      { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsItyVarMp) of
-                                                                                                                                                                                       { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                       (case ((let sem_RecPatExpr_Empty_7 :: T_RecPatExpr_7
-                                                                                                                                                                                                   sem_RecPatExpr_Empty_7 =
-                                                                                                                                                                                                       (\ _lhsIcSubst
-                                                                                                                                                                                                          _lhsIceParentNm
-                                                                                                                                                                                                          _lhsIchrEvidBindMp
-                                                                                                                                                                                                          _lhsIchrScopeBindMp
-                                                                                                                                                                                                          _lhsIfinTyVarMp
-                                                                                                                                                                                                          _lhsIfinValGam
-                                                                                                                                                                                                          _lhsImoduleNm
-                                                                                                                                                                                                          _lhsIrangeMp
-                                                                                                                                                                                                          _lhsIsysfEnv
-                                                                                                                                                                                                          _lhsItySigVarMp ->
-                                                                                                                                                                                                            _lhsIcSubst `seq`
-                                                                                                                                                                                                            (_lhsIceParentNm `seq`
-                                                                                                                                                                                                             (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                              (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                               (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                  (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                   (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                    (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                     ((case (Seq.empty) of
-                                                                                                                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                       (case (_lhsIcSubst) of
-                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                        (case (hsnORec >|< hsnCRec) of
-                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                         (case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
-                                                                                                                                                                                                                          { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                          (case (hsnRowEmpty) of
-                                                                                                                                                                                                                           { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                           (case ([]) of
-                                                                                                                                                                                                                            { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                            (case (Map.empty) of
-                                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                             (case (emptyVarMp) of
-                                                                                                                                                                                                                              { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                              (case (CPatRest_Empty) of
-                                                                                                                                                                                                                               { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                               (case (_pp) of
-                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                 { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                  { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                               in  sem_RecPatExpr_Empty_7)) of
-                                                                                                                                                                                        { ( sem_RecPatExpr_7) | True ->
-                                                                                                                                                                                        ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }))))))))
-                                                                                                                                                              in  sem_RecPatExpr_Empty_6)) of
-                                                                                                                                                       { ( sem_RecPatExpr_6) | True ->
-                                                                                                                                                       ( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }))))))))
-                                                                                                                              in  sem_RecPatExpr_Empty_5)) of
-                                                                                                                       { ( sem_RecPatExpr_5) | True ->
-                                                                                                                       ( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }))))))))
-                                                                                                in  sem_RecPatExpr_Empty_4)) of
-                                                                                         { ( sem_RecPatExpr_4) | True ->
-                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }))))))))))
-                                                               in  sem_RecPatExpr_Empty_3)) of
-                                                        { ( sem_RecPatExpr_3) | True ->
-                                                        ( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) })))))
-                                      in  sem_RecPatExpr_Empty_2)) of
-                               { ( sem_RecPatExpr_2) | True ->
-                               ( _lhsOgUniq,sem_RecPatExpr_2) }) }) })))
-              in  sem_RecPatExpr_Empty_1)) of
-       { ( sem_RecPatExpr_1) | True ->
-       ( _lhsOrange,sem_RecPatExpr_1) }) }) })
-
-sem_RecPatExpr_Ext :: Range ->
-                      T_RecPatExpr ->
-                      (Maybe HsName) ->
-                      T_PatExpr ->
-                      T_RecPatExpr
-
-sem_RecPatExpr_Ext hsrange_ recPatExpr_ mbNm_ patExpr_ | hsrange_ `seq` (recPatExpr_ `seq` (mbNm_ `seq` (patExpr_ `seq` (True)))) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (recPatExpr_) of
-          { ( _recPatExprIrange,recPatExpr_1) | True ->
-              (case (rangeUnions [hsrange_, _recPatExprIrange
-                                                          , _patExprIrange
-                                                                         ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_RecPatExpr_Ext_1 :: T_RecPatExpr_1
-                            sem_RecPatExpr_Ext_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
-                                       { __tup216 | __tup216 `seq` (True) ->
-                                       (case (__tup216) of
-                                        { (_recPatExprOgUniq,_,_,_) | _recPatExprOgUniq `seq` (True) ->
-                                        (case (recPatExpr_1 _recPatExprOgUniq) of
-                                         { ( _recPatExprIgUniq,recPatExpr_2) | True ->
-                                             (case (_recPatExprIgUniq) of
-                                              { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
-                                              (case (patExpr_1 _patExprOgUniq) of
-                                               { ( _patExprIgUniq,patExpr_2) | True ->
-                                                   (case (_patExprIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_RecPatExpr_Ext_2 :: T_RecPatExpr_2
-                                                                sem_RecPatExpr_Ext_2 =
-                                                                    (\ _lhsIkiGam
-                                                                       _lhsIlexLev
-                                                                       _lhsIpredSameScopeCounter ->
-                                                                         _lhsIkiGam `seq`
-                                                                         (_lhsIlexLev `seq`
-                                                                          (_lhsIpredSameScopeCounter `seq`
-                                                                           ((case (_lhsIpredSameScopeCounter) of
-                                                                             { _recPatExprOpredSameScopeCounter | _recPatExprOpredSameScopeCounter `seq` (True) ->
-                                                                             (case (_lhsIlexLev) of
-                                                                              { _recPatExprOlexLev | _recPatExprOlexLev `seq` (True) ->
-                                                                              (case (_lhsIkiGam) of
-                                                                               { _recPatExprOkiGam | _recPatExprOkiGam `seq` (True) ->
-                                                                               (case (recPatExpr_2 _recPatExprOkiGam _recPatExprOlexLev _recPatExprOpredSameScopeCounter) of
-                                                                                { ( _recPatExprIpredSameScopeCounter,recPatExpr_3) | True ->
-                                                                                    (case (_recPatExprIpredSameScopeCounter) of
-                                                                                     { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                                     (case (_lhsIlexLev) of
-                                                                                      { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                                      (case (_lhsIkiGam) of
-                                                                                       { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                                       (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                                        { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                                            (case (_patExprIpredSameScopeCounter) of
-                                                                                             { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                                             (case ((let sem_RecPatExpr_Ext_3 :: T_RecPatExpr_3
-                                                                                                         sem_RecPatExpr_Ext_3 =
-                                                                                                             (\ _lhsIkiVarMp
-                                                                                                                _lhsIopts
-                                                                                                                _lhsIpolGam
-                                                                                                                _lhsIpolVarMp
-                                                                                                                _lhsIpredScope
-                                                                                                                _lhsItyGam
-                                                                                                                _lhsItyKiGam
-                                                                                                                _lhsItyKiGlobFreeTvarS ->
-                                                                                                                  _lhsIkiVarMp `seq`
-                                                                                                                  (_lhsIopts `seq`
-                                                                                                                   (_lhsIpolGam `seq`
-                                                                                                                    (_lhsIpolVarMp `seq`
-                                                                                                                     (_lhsIpredScope `seq`
-                                                                                                                      (_lhsItyGam `seq`
-                                                                                                                       (_lhsItyKiGam `seq`
-                                                                                                                        (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                         ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                           { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                            { _recPatExprOtyKiGlobFreeTvarS | _recPatExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                            (case (_lhsItyKiGam) of
-                                                                                                                             { _recPatExprOtyKiGam | _recPatExprOtyKiGam `seq` (True) ->
-                                                                                                                             (case (_lhsItyGam) of
-                                                                                                                              { _recPatExprOtyGam | _recPatExprOtyGam `seq` (True) ->
-                                                                                                                              (case (_lhsIpredScope) of
-                                                                                                                               { _recPatExprOpredScope | _recPatExprOpredScope `seq` (True) ->
-                                                                                                                               (case (_lhsIpolVarMp) of
-                                                                                                                                { _recPatExprOpolVarMp | _recPatExprOpolVarMp `seq` (True) ->
-                                                                                                                                (case (_lhsIpolGam) of
-                                                                                                                                 { _recPatExprOpolGam | _recPatExprOpolGam `seq` (True) ->
-                                                                                                                                 (case (_lhsIopts) of
-                                                                                                                                  { _recPatExprOopts | _recPatExprOopts `seq` (True) ->
-                                                                                                                                  (case (_lhsIkiVarMp) of
-                                                                                                                                   { _recPatExprOkiVarMp | _recPatExprOkiVarMp `seq` (True) ->
-                                                                                                                                   (case (recPatExpr_3 _recPatExprOkiVarMp _recPatExprOopts _recPatExprOpolGam _recPatExprOpolVarMp _recPatExprOpredScope _recPatExprOtyGam _recPatExprOtyKiGam _recPatExprOtyKiGlobFreeTvarS) of
-                                                                                                                                    { ( _recPatExprIkiVarMp,_recPatExprIpolVarMp,_recPatExprItyGam,_recPatExprItyKiGam,recPatExpr_4) | True ->
-                                                                                                                                        (case (_recPatExprItyKiGam) of
-                                                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                                                         (case (_recPatExprItyGam) of
-                                                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                                                          (case (_lhsIpredScope) of
-                                                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                                                           (case (_recPatExprIpolVarMp) of
-                                                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                                                            (case (_lhsIpolGam) of
-                                                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                                                             (case (_lhsIopts) of
-                                                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                                                              (case (_recPatExprIkiVarMp) of
-                                                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                                                               (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                                                                { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                                                    (case (_patExprIkiVarMp) of
-                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_patExprIpolVarMp) of
-                                                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                      (case (_patExprItyGam) of
-                                                                                                                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                                                       (case (_patExprItyKiGam) of
-                                                                                                                                                        { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                        (case ((let sem_RecPatExpr_Ext_4 :: T_RecPatExpr_4
-                                                                                                                                                                    sem_RecPatExpr_Ext_4 =
-                                                                                                                                                                        (\ _lhsIclGam
-                                                                                                                                                                           _lhsIdataGam
-                                                                                                                                                                           _lhsIfinKiVarMp
-                                                                                                                                                                           _lhsIfinTyKiGam
-                                                                                                                                                                           _lhsIpositionalFldNmL
-                                                                                                                                                                           _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                                                             (_lhsIdataGam `seq`
-                                                                                                                                                                              (_lhsIfinKiVarMp `seq`
-                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                (_lhsIpositionalFldNmL `seq`
-                                                                                                                                                                                 (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                  ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                    { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                     { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                      { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                      (case (_lhsIdataGam) of
-                                                                                                                                                                                       { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsIclGam) of
-                                                                                                                                                                                        { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                                                        (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                         { _recPatExprOtyTyTySigFreeTvarS | _recPatExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                         (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                          { _recPatExprOfinTyKiGam | _recPatExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                          (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                           { _recPatExprOfinKiVarMp | _recPatExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                           (case (_lhsIdataGam) of
-                                                                                                                                                                                            { _recPatExprOdataGam | _recPatExprOdataGam `seq` (True) ->
-                                                                                                                                                                                            (case (_lhsIclGam) of
-                                                                                                                                                                                             { _recPatExprOclGam | _recPatExprOclGam `seq` (True) ->
-                                                                                                                                                                                             (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                              { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                                                                  (case (_lhsIpositionalFldNmL) of
-                                                                                                                                                                                                   { _recPatExprOpositionalFldNmL | _recPatExprOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                                   (case (recPatExpr_4 _recPatExprOclGam _recPatExprOdataGam _recPatExprOfinKiVarMp _recPatExprOfinTyKiGam _recPatExprOpositionalFldNmL _recPatExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                                                                    { ( _recPatExprIchrInstDeclSq,_recPatExprIhasAFldRef,_recPatExprIpositionalFldNmL,recPatExpr_5) | True ->
-                                                                                                                                                                                                        (case (_recPatExprIchrInstDeclSq `Seq.union` _patExprIchrInstDeclSq) of
-                                                                                                                                                                                                         { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                                                                         (case (maybe _recPatExprIhasAFldRef (const True) mbNm_) of
-                                                                                                                                                                                                          { _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
-                                                                                                                                                                                                          (case (hdAndTl _recPatExprIpositionalFldNmL) of
-                                                                                                                                                                                                           { __tup215 | __tup215 `seq` (True) ->
-                                                                                                                                                                                                           (case (__tup215) of
-                                                                                                                                                                                                            { (_,_lhsOpositionalFldNmL) | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                                                                            (case ((let sem_RecPatExpr_Ext_5 :: T_RecPatExpr_5
-                                                                                                                                                                                                                        sem_RecPatExpr_Ext_5 =
-                                                                                                                                                                                                                            (\ _lhsIfiOpts
-                                                                                                                                                                                                                               _lhsIknTy
-                                                                                                                                                                                                                               _lhsImatchOnFld
-                                                                                                                                                                                                                               _lhsIpatTyVarMp
-                                                                                                                                                                                                                               _lhsItySigGam
-                                                                                                                                                                                                                               _lhsIvalGam ->
-                                                                                                                                                                                                                                 _lhsIfiOpts `seq`
-                                                                                                                                                                                                                                 (_lhsIknTy `seq`
-                                                                                                                                                                                                                                  (_lhsImatchOnFld `seq`
-                                                                                                                                                                                                                                   (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                                                                    (_lhsItySigGam `seq`
-                                                                                                                                                                                                                                     (_lhsIvalGam `seq`
-                                                                                                                                                                                                                                      ((case (_lhsIvalGam) of
-                                                                                                                                                                                                                                        { _recPatExprOvalGam | _recPatExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                        (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                         { _recPatExprOtySigGam | _recPatExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                         (case (_lhsImatchOnFld) of
-                                                                                                                                                                                                                                          { _recPatExprOmatchOnFld | _recPatExprOmatchOnFld `seq` (True) ->
-                                                                                                                                                                                                                                          (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                           { _recPatExprOfiOpts | _recPatExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                           (case (__tup216) of
-                                                                                                                                                                                                                                            { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                                                            (case (__tup216) of
-                                                                                                                                                                                                                                             { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                             (case (__tup215) of
-                                                                                                                                                                                                                                              { (_positionalNm,_) | _positionalNm `seq` (True) ->
-                                                                                                                                                                                                                                              (case (case mbNm_ of
-                                                                                                                                                                                                                                                       Just nm                     -> nm
-                                                                                                                                                                                                                                                       Nothing  | _lhsImatchOnFld  -> _patExprItopNm
-                                                                                                                                                                                                                                                                | otherwise        -> _positionalNm) of
-                                                                                                                                                                                                                                               { _nm | _nm `seq` (True) ->
-                                                                                                                                                                                                                                               (case (let  [r,e] = mkNewTyVarL 2 _lUniq
-                                                                                                                                                                                                                                                      in   (r,e)) of
-                                                                                                                                                                                                                                                { __tup214 | __tup214 `seq` (True) ->
-                                                                                                                                                                                                                                                (case (__tup214) of
-                                                                                                                                                                                                                                                 { (_rowTy,_) | _rowTy `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (hsnRec `appConApp` [_rowTy]) of
-                                                                                                                                                                                                                                                  { _extTy | _extTy `seq` (True) ->
-                                                                                                                                                                                                                                                  (case (__tup214) of
-                                                                                                                                                                                                                                                   { (_,_patTy) | _patTy `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_extTy `recRecExt` [(_nm,_patTy)]) of
-                                                                                                                                                                                                                                                    { _recTy | _recTy `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (defaultFIEnv
-                                                                                                                                                                                                                                                               { feEHCOpts = _lhsIopts
-                                                                                                                                                                                                                                                               , fePredScope = _lhsIpredScope
-                                                                                                                                                                                                                                                               , feTyGam = _lhsItyGam
-                                                                                                                                                                                                                                                               , fePolGam = _lhsIpolGam
-                                                                                                                                                                                                                                                               , feRange = _range
-                                                                                                                                                                                                                                                               }) of
-                                                                                                                                                                                                                                                     { _fe | _fe `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (fitsIn (_lhsIfiOpts) _fe _lUniq2 _lhsIpatTyVarMp _lhsIknTy _recTy) of
-                                                                                                                                                                                                                                                      { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
-                                                                                                                                                                                                                                                       { _recPatExprOpatTyVarMp | _recPatExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (_extTy) of
-                                                                                                                                                                                                                                                        { _recPatExprOknTy | _recPatExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (recPatExpr_5 _recPatExprOfiOpts _recPatExprOknTy _recPatExprOmatchOnFld _recPatExprOpatTyVarMp _recPatExprOtySigGam _recPatExprOvalGam) of
-                                                                                                                                                                                                                                                         { ( _recPatExprIpatTyVarMp,_recPatExprIvalGam,recPatExpr_6) | True ->
-                                                                                                                                                                                                                                                             (case (_recPatExprIvalGam) of
-                                                                                                                                                                                                                                                              { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsItySigGam) of
-                                                                                                                                                                                                                                                               { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_recPatExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                                { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIfiOpts) of
-                                                                                                                                                                                                                                                                 { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (True) of
-                                                                                                                                                                                                                                                                  { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_patTy) of
-                                                                                                                                                                                                                                                                   { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case ([]) of
-                                                                                                                                                                                                                                                                    { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                                                                                                     { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                                                                                                         (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                                                                                          { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                                                                                              (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                                                                                               { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_patExprIvalGam) of
-                                                                                                                                                                                                                                                                                { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case ((let sem_RecPatExpr_Ext_6 :: T_RecPatExpr_6
-                                                                                                                                                                                                                                                                                            sem_RecPatExpr_Ext_6 =
-                                                                                                                                                                                                                                                                                                (\ _lhsIchrStore
-                                                                                                                                                                                                                                                                                                   _lhsIclDfGam
-                                                                                                                                                                                                                                                                                                   _lhsItvKiVarMp
-                                                                                                                                                                                                                                                                                                   _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                   _lhsItyVarMp
-                                                                                                                                                                                                                                                                                                   _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                                     _lhsIchrStore `seq`
-                                                                                                                                                                                                                                                                                                     (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                                                                                      (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                        (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                            { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                            (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                             { _recPatExprOvalTyGlobFreeTvarS | _recPatExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                                                                                              { _recPatExprOtyVarMp | _recPatExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                               { _recPatExprOtyTyGlobFreeTvarS | _recPatExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                { _recPatExprOtvKiVarMp | _recPatExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                 { _recPatExprOclDfGam | _recPatExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                  { _recPatExprOchrStore | _recPatExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  (case (recPatExpr_6 _recPatExprOchrStore _recPatExprOclDfGam _recPatExprOtvKiVarMp _recPatExprOtyTyGlobFreeTvarS _recPatExprOtyVarMp _recPatExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                   { ( _recPatExprIgathCnstrMp,_recPatExprIgathRangeMp,_recPatExprIscopeGam,_recPatExprIty,_recPatExprItyVarMp,recPatExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                                       (case (_recPatExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                        { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                         { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                         (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                          { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                          (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                                                                                                           { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                                                                                                            { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (__tup216) of
-                                                                                                                                                                                                                                                                                                                             { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (mkPrIdCHR _lUniq3) of
-                                                                                                                                                                                                                                                                                                                              { _prUid | _prUid `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case ([rngLift _range mkPredOccRng (Pred_Lacks _rowTy (Label_Lab _nm)) _prUid _lhsIpredScope]) of
-                                                                                                                                                                                                                                                                                                                               { _prOccL | _prOccL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (gathPredLToProveCnstrMp _prOccL) of
-                                                                                                                                                                                                                                                                                                                                { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                 { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                                                                                                     (case (cnstrMpUnions [_hereCnstrMp, _recPatExprIgathCnstrMp, _patExprIgathCnstrMp]) of
-                                                                                                                                                                                                                                                                                                                                      { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (_recPatExprIgathRangeMp `Map.union` _patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                                                                                                       { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                       (case (_recPatExprIscopeGam `gamUnion` _patExprIscopeGam) of
-                                                                                                                                                                                                                                                                                                                                        { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                        (case (foTy _fo_) of
-                                                                                                                                                                                                                                                                                                                                         { _ty | _ty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                         (case (_ty) of
-                                                                                                                                                                                                                                                                                                                                          { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                          (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                           (case ((let sem_RecPatExpr_Ext_7 :: T_RecPatExpr_7
-                                                                                                                                                                                                                                                                                                                                                       sem_RecPatExpr_Ext_7 =
-                                                                                                                                                                                                                                                                                                                                                           (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                                                                                                              _lhsIceParentNm
-                                                                                                                                                                                                                                                                                                                                                              _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                                                                                                              _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                                                                              _lhsIfinValGam
-                                                                                                                                                                                                                                                                                                                                                              _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                                                                              _lhsIrangeMp
-                                                                                                                                                                                                                                                                                                                                                              _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                                                                              _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                                                                                                                _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                                                                                                                (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                 (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                  (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                   (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                    (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                                                                                                     (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                                                                      (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                       (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                                                                        (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                                                                                                         ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                           { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                            { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                             { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                              { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                                               { _recPatExprOsysfEnv | _recPatExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                                                                                                                { _recPatExprOrangeMp | _recPatExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                                                                                                                 { _recPatExprOfinValGam | _recPatExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                  { _recPatExprOfinTyVarMp | _recPatExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                   { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                    { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                     { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                      { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                       { _recPatExprOchrScopeBindMp | _recPatExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                                                                                                                        { _recPatExprOchrEvidBindMp | _recPatExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                         { _recPatExprOcSubst | _recPatExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                          { _recPatExprOtySigVarMp | _recPatExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                                                           { _recPatExprOmoduleNm | _recPatExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                                                                                                            { _recPatExprOceParentNm | _recPatExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                            (case (recPatExpr_7 _recPatExprOcSubst _recPatExprOceParentNm _recPatExprOchrEvidBindMp _recPatExprOchrScopeBindMp _recPatExprOfinTyVarMp _recPatExprOfinValGam _recPatExprOmoduleNm _recPatExprOrangeMp _recPatExprOsysfEnv _recPatExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                             { ( _recPatExprIallErrSq,_recPatExprIcSubst,_recPatExprIerrSq,_recPatExprIextNm,_recPatExprIfsRPatL,_recPatExprIgathMentrelFilterMp,_recPatExprIgathTvKiVarMp,_recPatExprIpatCRest,_recPatExprIpp,_recPatExprIppL,_recPatExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                 (case (_recPatExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                  { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                  (case (rpatNmNm _patExprIcpNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                   { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                   (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                    { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                                                                                                                        (case (_recPatExprIallErrSq `Seq.union` _patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                         (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                          (case (_recPatExprIpp) of
-                                                                                                                                                                                                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                           (case (Seq.unions [ _recPatExprIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                                             , rngLift _range mkNestErr' _pp [_patExprIerrSq, foErrSq _fo_]
-                                                                                                                                                                                                                                                                                                                                                                                                                             ]) of
-                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                            (case (_recPatExprIextNm) of
-                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                             (case (cSubstApp _patExprIcSubst $ acoreNmHolePred _prUid) of
-                                                                                                                                                                                                                                                                                                                                                                                                              { _offset | _offset `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                              (case ((FldComputeOffset _nm _offset,_patExprIrpat) : _recPatExprIfsRPatL) of
-                                                                                                                                                                                                                                                                                                                                                                                                               { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                               (case (_recPatExprIgathMentrelFilterMp `mentrelFilterMpUnion` _patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                (case (_recPatExprIgathTvKiVarMp `varmpUnion` _patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_recPatExprIpatCRest) of
-                                                                                                                                                                                                                                                                                                                                                                                                                  { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                  (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                   (case (ppFld "=" (Just _positionalNm) _nm (pp _nm) _patExprIpp : _recPatExprIppL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                    (case (_recPatExprIvalCBindL ++ _patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                                                                                                                     { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                                                                                                   in  sem_RecPatExpr_Ext_7)) of
-                                                                                                                                                                                                                                                                                                                                            { ( sem_RecPatExpr_7) | True ->
-                                                                                                                                                                                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                                                                                        in  sem_RecPatExpr_Ext_6)) of
-                                                                                                                                                                                                                                                                                 { ( sem_RecPatExpr_6) | True ->
-                                                                                                                                                                                                                                                                                 ( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                    in  sem_RecPatExpr_Ext_5)) of
-                                                                                                                                                                                                             { ( sem_RecPatExpr_5) | True ->
-                                                                                                                                                                                                             ( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                in  sem_RecPatExpr_Ext_4)) of
-                                                                                                                                                         { ( sem_RecPatExpr_4) | True ->
-                                                                                                                                                         ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
-                                                                                                     in  sem_RecPatExpr_Ext_3)) of
-                                                                                              { ( sem_RecPatExpr_3) | True ->
-                                                                                              ( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) }) }) }) }) }) }) }) }) })))))
-                                                            in  sem_RecPatExpr_Ext_2)) of
-                                                     { ( sem_RecPatExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_RecPatExpr_2) }) }) }) }) }) }) })))
-                        in  sem_RecPatExpr_Ext_1)) of
-                 { ( sem_RecPatExpr_1) | True ->
-                 ( _lhsOrange,sem_RecPatExpr_1) }) }) }) }) })
-
-sem_RecPatExpr_Expr :: Range ->
-                       T_PatExpr ->
-                       T_RecPatExpr
-
-sem_RecPatExpr_Expr hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
-    (case (patExpr_) of
-     { ( _patExprIrange,patExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_RecPatExpr_Expr_1 :: T_RecPatExpr_1
-                       sem_RecPatExpr_Expr_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
-                                  (case (patExpr_1 _patExprOgUniq) of
-                                   { ( _patExprIgUniq,patExpr_2) | True ->
-                                       (case (_patExprIgUniq) of
-                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                        (case ((let sem_RecPatExpr_Expr_2 :: T_RecPatExpr_2
-                                                    sem_RecPatExpr_Expr_2 =
-                                                        (\ _lhsIkiGam
-                                                           _lhsIlexLev
-                                                           _lhsIpredSameScopeCounter ->
-                                                             _lhsIkiGam `seq`
-                                                             (_lhsIlexLev `seq`
-                                                              (_lhsIpredSameScopeCounter `seq`
-                                                               ((case (_lhsIpredSameScopeCounter) of
-                                                                 { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
-                                                                 (case (_lhsIlexLev) of
-                                                                  { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
-                                                                  (case (_lhsIkiGam) of
-                                                                   { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
-                                                                   (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
-                                                                    { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
-                                                                        (case (_patExprIpredSameScopeCounter) of
-                                                                         { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
-                                                                         (case ((let sem_RecPatExpr_Expr_3 :: T_RecPatExpr_3
-                                                                                     sem_RecPatExpr_Expr_3 =
-                                                                                         (\ _lhsIkiVarMp
-                                                                                            _lhsIopts
-                                                                                            _lhsIpolGam
-                                                                                            _lhsIpolVarMp
-                                                                                            _lhsIpredScope
-                                                                                            _lhsItyGam
-                                                                                            _lhsItyKiGam
-                                                                                            _lhsItyKiGlobFreeTvarS ->
-                                                                                              _lhsIkiVarMp `seq`
-                                                                                              (_lhsIopts `seq`
-                                                                                               (_lhsIpolGam `seq`
-                                                                                                (_lhsIpolVarMp `seq`
-                                                                                                 (_lhsIpredScope `seq`
-                                                                                                  (_lhsItyGam `seq`
-                                                                                                   (_lhsItyKiGam `seq`
-                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                     ((case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                       { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                       (case (_lhsItyKiGam) of
-                                                                                                        { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
-                                                                                                        (case (_lhsItyGam) of
-                                                                                                         { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
-                                                                                                         (case (_lhsIpredScope) of
-                                                                                                          { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
-                                                                                                          (case (_lhsIpolVarMp) of
-                                                                                                           { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
-                                                                                                           (case (_lhsIpolGam) of
-                                                                                                            { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
-                                                                                                            (case (_lhsIopts) of
-                                                                                                             { _patExprOopts | _patExprOopts `seq` (True) ->
-                                                                                                             (case (_lhsIkiVarMp) of
-                                                                                                              { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
-                                                                                                              (case (patExpr_3 _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
-                                                                                                               { ( _patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
-                                                                                                                   (case (_patExprIkiVarMp) of
-                                                                                                                    { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                    (case (_patExprIpolVarMp) of
-                                                                                                                     { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                     (case (_patExprItyGam) of
-                                                                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                                                      (case (_patExprItyKiGam) of
-                                                                                                                       { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                       (case ((let sem_RecPatExpr_Expr_4 :: T_RecPatExpr_4
-                                                                                                                                   sem_RecPatExpr_Expr_4 =
-                                                                                                                                       (\ _lhsIclGam
-                                                                                                                                          _lhsIdataGam
-                                                                                                                                          _lhsIfinKiVarMp
-                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                          _lhsIpositionalFldNmL
-                                                                                                                                          _lhsItyTyTySigFreeTvarS ->
-                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                            (_lhsIdataGam `seq`
-                                                                                                                                             (_lhsIfinKiVarMp `seq`
-                                                                                                                                              (_lhsIfinTyKiGam `seq`
-                                                                                                                                               (_lhsIpositionalFldNmL `seq`
-                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                 ((case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                   { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                    { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                     { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                     (case (_lhsIdataGam) of
-                                                                                                                                                      { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
-                                                                                                                                                      (case (_lhsIclGam) of
-                                                                                                                                                       { _patExprOclGam | _patExprOclGam `seq` (True) ->
-                                                                                                                                                       (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
-                                                                                                                                                        { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
-                                                                                                                                                            (case (_patExprIchrInstDeclSq) of
-                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
-                                                                                                                                                             (case (False) of
-                                                                                                                                                              { _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
-                                                                                                                                                              (case (_lhsIpositionalFldNmL) of
-                                                                                                                                                               { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
-                                                                                                                                                               (case ((let sem_RecPatExpr_Expr_5 :: T_RecPatExpr_5
-                                                                                                                                                                           sem_RecPatExpr_Expr_5 =
-                                                                                                                                                                               (\ _lhsIfiOpts
-                                                                                                                                                                                  _lhsIknTy
-                                                                                                                                                                                  _lhsImatchOnFld
-                                                                                                                                                                                  _lhsIpatTyVarMp
-                                                                                                                                                                                  _lhsItySigGam
-                                                                                                                                                                                  _lhsIvalGam ->
-                                                                                                                                                                                    _lhsIfiOpts `seq`
-                                                                                                                                                                                    (_lhsIknTy `seq`
-                                                                                                                                                                                     (_lhsImatchOnFld `seq`
-                                                                                                                                                                                      (_lhsIpatTyVarMp `seq`
-                                                                                                                                                                                       (_lhsItySigGam `seq`
-                                                                                                                                                                                        (_lhsIvalGam `seq`
-                                                                                                                                                                                         ((case (_lhsIvalGam) of
-                                                                                                                                                                                           { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
-                                                                                                                                                                                           (case (_lhsItySigGam) of
-                                                                                                                                                                                            { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
-                                                                                                                                                                                            (case (_lhsIpatTyVarMp) of
-                                                                                                                                                                                             { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                             (case (_lhsIknTy) of
-                                                                                                                                                                                              { _patExprOknTy | _patExprOknTy `seq` (True) ->
-                                                                                                                                                                                              (case (_lhsIfiOpts) of
-                                                                                                                                                                                               { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
-                                                                                                                                                                                               (case (True) of
-                                                                                                                                                                                                { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
-                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                 { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
-                                                                                                                                                                                                 (case (patExpr_5 _patExprOvalGam) of
-                                                                                                                                                                                                  { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
-                                                                                                                                                                                                      (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
-                                                                                                                                                                                                       { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
-                                                                                                                                                                                                           (case (_patExprIpatTyVarMp) of
-                                                                                                                                                                                                            { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
-                                                                                                                                                                                                            (case (_patExprIvalGam) of
-                                                                                                                                                                                                             { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
-                                                                                                                                                                                                             (case ((let sem_RecPatExpr_Expr_6 :: T_RecPatExpr_6
-                                                                                                                                                                                                                         sem_RecPatExpr_Expr_6 =
-                                                                                                                                                                                                                             (\ _lhsIchrStore
-                                                                                                                                                                                                                                _lhsIclDfGam
-                                                                                                                                                                                                                                _lhsItvKiVarMp
-                                                                                                                                                                                                                                _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                _lhsItyVarMp
-                                                                                                                                                                                                                                _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                  _lhsIchrStore `seq`
-                                                                                                                                                                                                                                  (_lhsIclDfGam `seq`
-                                                                                                                                                                                                                                   (_lhsItvKiVarMp `seq`
-                                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                     (_lhsItyVarMp `seq`
-                                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                       ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                         { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                         (case (_lhsItyVarMp) of
-                                                                                                                                                                                                                                          { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                           { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                           (case (_lhsItvKiVarMp) of
-                                                                                                                                                                                                                                            { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                            (case (_lhsIclDfGam) of
-                                                                                                                                                                                                                                             { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
-                                                                                                                                                                                                                                             (case (_lhsIchrStore) of
-                                                                                                                                                                                                                                              { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
-                                                                                                                                                                                                                                              (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                               { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
-                                                                                                                                                                                                                                                   (case (_patExprIgathCnstrMp) of
-                                                                                                                                                                                                                                                    { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_patExprIgathRangeMp) of
-                                                                                                                                                                                                                                                     { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_patExprIscopeGam) of
-                                                                                                                                                                                                                                                      { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (_patExprIty) of
-                                                                                                                                                                                                                                                       { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (_patExprItyVarMp) of
-                                                                                                                                                                                                                                                        { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                        (case ((let sem_RecPatExpr_Expr_7 :: T_RecPatExpr_7
-                                                                                                                                                                                                                                                                    sem_RecPatExpr_Expr_7 =
-                                                                                                                                                                                                                                                                        (\ _lhsIcSubst
-                                                                                                                                                                                                                                                                           _lhsIceParentNm
-                                                                                                                                                                                                                                                                           _lhsIchrEvidBindMp
-                                                                                                                                                                                                                                                                           _lhsIchrScopeBindMp
-                                                                                                                                                                                                                                                                           _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                           _lhsIfinValGam
-                                                                                                                                                                                                                                                                           _lhsImoduleNm
-                                                                                                                                                                                                                                                                           _lhsIrangeMp
-                                                                                                                                                                                                                                                                           _lhsIsysfEnv
-                                                                                                                                                                                                                                                                           _lhsItySigVarMp ->
-                                                                                                                                                                                                                                                                             _lhsIcSubst `seq`
-                                                                                                                                                                                                                                                                             (_lhsIceParentNm `seq`
-                                                                                                                                                                                                                                                                              (_lhsIchrEvidBindMp `seq`
-                                                                                                                                                                                                                                                                               (_lhsIchrScopeBindMp `seq`
-                                                                                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                 (_lhsIfinValGam `seq`
-                                                                                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                   (_lhsIrangeMp `seq`
-                                                                                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                     (_lhsItySigVarMp `seq`
-                                                                                                                                                                                                                                                                                      ((case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                        { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIrangeMp) of
-                                                                                                                                                                                                                                                                                         { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIfinValGam) of
-                                                                                                                                                                                                                                                                                          { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                           { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_lhsItySigVarMp) of
-                                                                                                                                                                                                                                                                                            { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                             { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_lhsIchrScopeBindMp) of
-                                                                                                                                                                                                                                                                                              { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_lhsIchrEvidBindMp) of
-                                                                                                                                                                                                                                                                                               { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_lhsIceParentNm) of
-                                                                                                                                                                                                                                                                                                { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_lhsIcSubst) of
-                                                                                                                                                                                                                                                                                                 { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtySigVarMp) of
-                                                                                                                                                                                                                                                                                                  { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprIvalCBindL) | True ->
-                                                                                                                                                                                                                                                                                                      (case (_patExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (_patExprIcSubst) of
-                                                                                                                                                                                                                                                                                                        { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (_patExprIerrSq) of
-                                                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                         (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                          { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                          (case (_patExprIfsRPatL) of
-                                                                                                                                                                                                                                                                                                           { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                           (case (_patExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                            (case (_patExprIgathTvKiVarMp) of
-                                                                                                                                                                                                                                                                                                             { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                             (case (_patExprIpatCRest) of
-                                                                                                                                                                                                                                                                                                              { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
-                                                                                                                                                                                                                                                                                                              (case (_patExprIpp) of
-                                                                                                                                                                                                                                                                                                               { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                               (case (_pp) of
-                                                                                                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                                                                                 { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                 (case (_patExprIvalCBindL) of
-                                                                                                                                                                                                                                                                                                                  { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
-                                                                                                                                                                                                                                                                in  sem_RecPatExpr_Expr_7)) of
-                                                                                                                                                                                                                                                         { ( sem_RecPatExpr_7) | True ->
-                                                                                                                                                                                                                                                         ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                                                                     in  sem_RecPatExpr_Expr_6)) of
-                                                                                                                                                                                                              { ( sem_RecPatExpr_6) | True ->
-                                                                                                                                                                                                              ( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                                                                       in  sem_RecPatExpr_Expr_5)) of
-                                                                                                                                                                { ( sem_RecPatExpr_5) | True ->
-                                                                                                                                                                ( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }) }) }) }) }) }) }))))))))
-                                                                                                                               in  sem_RecPatExpr_Expr_4)) of
-                                                                                                                        { ( sem_RecPatExpr_4) | True ->
-                                                                                                                        ( _lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- RecPatExpr --------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attribute:
+         gUniq                : UID
+   visit 2:
+      inherited attributes:
+         kiGam                : KiGam
+         lexLev               : Int
+      chained attribute:
+         predSameScopeCounter : Int
+   visit 3:
+      inherited attributes:
+         opts                 : EHCOpts
+         polGam               : PolGam
+         predScope            : PredScope
+         tyKiGlobFreeTvarS    : TyVarIdS
+      chained attributes:
+         generDataInfoMp      : GenerDataInfoMp
+         kiVarMp              : VarMp
+         polVarMp             : VarMp
+         tyGam                : TyGam
+         tyKiGam              : TyKiGam
+   visit 4:
+      inherited attributes:
+         clGam                : ClGam
+         dataGam              : DataGam
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         tyTyTySigFreeTvarS   : TyVarIdS
+      chained attribute:
+         positionalFldNmL     : [HsName]
+      synthesized attributes:
+         chrInstDeclSq        : Seq.FastSeq (CHRScopedInstanceDecl Pred RedHowAnnotation PredScope)
+         hasAFldRef           : Bool
+   visit 5:
+      inherited attributes:
+         fiOpts               : FIOpts
+         knTy                 : Ty
+         matchOnFld           : Bool
+         tySigGam             : ValGam
+      chained attributes:
+         patTyVarMp           : VarMp
+         valGam               : ValGam
+   visit 6:
+      inherited attributes:
+         chrStore             : ScopedPredStore
+         clDfGam              : ClassDefaultGam
+         tvKiVarMp            : VarMp
+         tyTyGlobFreeTvarS    : TyVarIdS
+         valTyGlobFreeTvarS   : TyVarIdS
+      chained attribute:
+         tyVarMp              : VarMp
+      synthesized attributes:
+         gathCnstrMp          : CHRPredOccCnstrMp
+         gathRangeMp          : RangeMp
+         scopeGam             : ScopeGam
+         ty                   : Ty
+   visit 7:
+      inherited attributes:
+         ceParentNm           : HsName
+         chrEvidBindMp        : EvidKeyToCBindMap
+         chrScopeBindMp       : PredScopeToCBindMap
+         finTyVarMp           : VarMp
+         finValGam            : ValGam
+         moduleNm             : HsName
+         rangeMp              : RangeMp
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+         tySigVarMp           : VarMp
+      chained attribute:
+         cSubst               : CSubst
+      synthesized attributes:
+         allErrSq             : ErrSq
+         errSq                : ErrSq
+         extNm                : HsName
+         fsRPatL              : FieldSplitL
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         gathTvKiVarMp        : VarMp
+         patCRest             : CPatRest
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         trpp                 : TrPP
+         valCBindL            : CBindL
+   alternatives:
+      alternative Empty:
+         child hsrange        : {Range}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup219     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup219     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup219     : _
+            intra range       : {Range}
+         visit 4:
+            intra _tup219     : _
+            intra range       : {Range}
+         visit 5:
+            local lUniq       : {UID}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup219     : _
+            intra range       : {Range}
+         visit 6:
+            local ty          : {Ty}
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+         visit 7:
+            local pp          : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+      alternative Ext:
+         child hsrange        : {Range}
+         child recPatExpr     : RecPatExpr 
+         child mbNm           : {Maybe HsName}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup222     : _
+            intra range       : {Range}
+         visit 2:
+            intra _tup222     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup222     : _
+            intra range       : {Range}
+         visit 4:
+            local _tup221     : _
+            intra _tup222     : _
+            intra range       : {Range}
+         visit 5:
+            local lUniq2      : {UID}
+            local lUniq       : {UID}
+            local positionalNm : {HsName}
+            local nm          : {HsName}
+            local _tup220     : _
+            local rowTy       : {Ty}
+            local extTy       : {Ty}
+            local patTy       : {Ty}
+            local recTy       : {Ty}
+            local fe          : {FIEnv}
+            local fo_         : {FIOut}
+            intra _tup222     : _
+            intra _tup221     : _
+            intra range       : {Range}
+         visit 6:
+            local lUniq3      : {UID}
+            local prUid       : {PredOccId}
+            local prOccL      : {[PredOcc]}
+            local hereCnstrMp : _
+            local ty          : {Ty}
+            intra _tup222     : _
+            intra nm          : {HsName}
+            intra rowTy       : {Ty}
+            intra range       : {Range}
+            intra fo_         : {FIOut}
+            intra positionalNm : {HsName}
+         visit 7:
+            local pp          : _
+            local offset      : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+            intra prUid       : {PredOccId}
+            intra nm          : {HsName}
+            intra positionalNm : {HsName}
+      alternative Expr:
+         child hsrange        : {Range}
+         child patExpr        : PatExpr 
+         visit 0:
+            local range       : {Range}
+         visit 7:
+            local pp          : _
+-}
+sem_RecPatExpr_Empty :: Range ->
+                        T_RecPatExpr
+
+sem_RecPatExpr_Empty hsrange_ | hsrange_ `seq` (True) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_RecPatExpr_Empty_1 :: T_RecPatExpr_1
+                  sem_RecPatExpr_Empty_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup219 | __tup219 `seq` (True) ->
+                             (case (__tup219) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_RecPatExpr_Empty_2 :: T_RecPatExpr_2
+                                          sem_RecPatExpr_Empty_2 =
+                                              (\ _lhsIkiGam
+                                                 _lhsIlexLev
+                                                 _lhsIpredSameScopeCounter ->
+                                                   _lhsIkiGam `seq`
+                                                   (_lhsIlexLev `seq`
+                                                    (_lhsIpredSameScopeCounter `seq`
+                                                     ((case (_lhsIpredSameScopeCounter) of
+                                                       { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                       (case ((let sem_RecPatExpr_Empty_3 :: T_RecPatExpr_3
+                                                                   sem_RecPatExpr_Empty_3 =
+                                                                       (\ _lhsIgenerDataInfoMp
+                                                                          _lhsIkiVarMp
+                                                                          _lhsIopts
+                                                                          _lhsIpolGam
+                                                                          _lhsIpolVarMp
+                                                                          _lhsIpredScope
+                                                                          _lhsItyGam
+                                                                          _lhsItyKiGam
+                                                                          _lhsItyKiGlobFreeTvarS ->
+                                                                            _lhsIgenerDataInfoMp `seq`
+                                                                            (_lhsIkiVarMp `seq`
+                                                                             (_lhsIopts `seq`
+                                                                              (_lhsIpolGam `seq`
+                                                                               (_lhsIpolVarMp `seq`
+                                                                                (_lhsIpredScope `seq`
+                                                                                 (_lhsItyGam `seq`
+                                                                                  (_lhsItyKiGam `seq`
+                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                    ((case (_lhsIgenerDataInfoMp) of
+                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                      (case (_lhsIkiVarMp) of
+                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                       (case (_lhsIpolVarMp) of
+                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                        (case (_lhsItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case (_lhsItyKiGam) of
+                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                          (case ((let sem_RecPatExpr_Empty_4 :: T_RecPatExpr_4
+                                                                                                      sem_RecPatExpr_Empty_4 =
+                                                                                                          (\ _lhsIclGam
+                                                                                                             _lhsIdataGam
+                                                                                                             _lhsIfinKiVarMp
+                                                                                                             _lhsIfinTyKiGam
+                                                                                                             _lhsIpositionalFldNmL
+                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                               _lhsIclGam `seq`
+                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                  (_lhsIpositionalFldNmL `seq`
+                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                    ((case (Seq.empty) of
+                                                                                                                      { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                      (case (False) of
+                                                                                                                       { _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
+                                                                                                                       (case (_lhsIpositionalFldNmL) of
+                                                                                                                        { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                        (case ((let sem_RecPatExpr_Empty_5 :: T_RecPatExpr_5
+                                                                                                                                    sem_RecPatExpr_Empty_5 =
+                                                                                                                                        (\ _lhsIfiOpts
+                                                                                                                                           _lhsIknTy
+                                                                                                                                           _lhsImatchOnFld
+                                                                                                                                           _lhsIpatTyVarMp
+                                                                                                                                           _lhsItySigGam
+                                                                                                                                           _lhsIvalGam ->
+                                                                                                                                             _lhsIfiOpts `seq`
+                                                                                                                                             (_lhsIknTy `seq`
+                                                                                                                                              (_lhsImatchOnFld `seq`
+                                                                                                                                               (_lhsIpatTyVarMp `seq`
+                                                                                                                                                (_lhsItySigGam `seq`
+                                                                                                                                                 (_lhsIvalGam `seq`
+                                                                                                                                                  ((case (__tup219) of
+                                                                                                                                                    { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                                                                                                                    (case (defaultFIEnv
+                                                                                                                                                               { feEHCOpts = _lhsIopts
+                                                                                                                                                               , fePredScope = _lhsIpredScope
+                                                                                                                                                               , feTyGam = _lhsItyGam
+                                                                                                                                                               , fePolGam = _lhsIpolGam
+                                                                                                                                                               , feRange = _range
+                                                                                                                                                               }) of
+                                                                                                                                                     { _fe | _fe `seq` (True) ->
+                                                                                                                                                     (case (fitsIn (_lhsIfiOpts) _fe _lUniq _lhsIpatTyVarMp _lhsIknTy recRecEmp) of
+                                                                                                                                                      { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                      (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                       { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                       (case (_lhsIvalGam) of
+                                                                                                                                                        { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                        (case ((let sem_RecPatExpr_Empty_6 :: T_RecPatExpr_6
+                                                                                                                                                                    sem_RecPatExpr_Empty_6 =
+                                                                                                                                                                        (\ _lhsIchrStore
+                                                                                                                                                                           _lhsIclDfGam
+                                                                                                                                                                           _lhsItvKiVarMp
+                                                                                                                                                                           _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                           _lhsItyVarMp
+                                                                                                                                                                           _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                             _lhsIchrStore `seq`
+                                                                                                                                                                             (_lhsIclDfGam `seq`
+                                                                                                                                                                              (_lhsItvKiVarMp `seq`
+                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                (_lhsItyVarMp `seq`
+                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                  ((case (Map.empty) of
+                                                                                                                                                                                    { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                    (case (Map.empty) of
+                                                                                                                                                                                     { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                     (case (emptyGam) of
+                                                                                                                                                                                      { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                      (case (foTy _fo_) of
+                                                                                                                                                                                       { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                       (case (_ty) of
+                                                                                                                                                                                        { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsItyVarMp) of
+                                                                                                                                                                                         { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                         (case ((let sem_RecPatExpr_Empty_7 :: T_RecPatExpr_7
+                                                                                                                                                                                                     sem_RecPatExpr_Empty_7 =
+                                                                                                                                                                                                         (\ _lhsIcSubst
+                                                                                                                                                                                                            _lhsIceParentNm
+                                                                                                                                                                                                            _lhsIchrEvidBindMp
+                                                                                                                                                                                                            _lhsIchrScopeBindMp
+                                                                                                                                                                                                            _lhsIfinTyVarMp
+                                                                                                                                                                                                            _lhsIfinValGam
+                                                                                                                                                                                                            _lhsImoduleNm
+                                                                                                                                                                                                            _lhsIrangeMp
+                                                                                                                                                                                                            _lhsIsysfEnv
+                                                                                                                                                                                                            _lhsItr
+                                                                                                                                                                                                            _lhsItySigVarMp ->
+                                                                                                                                                                                                              _lhsIcSubst `seq`
+                                                                                                                                                                                                              (_lhsIceParentNm `seq`
+                                                                                                                                                                                                               (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                 (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                  (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                   (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                    (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                     (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                      (_lhsItr `seq`
+                                                                                                                                                                                                                       (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                        ((case (Seq.empty) of
+                                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                          (case (_lhsIcSubst) of
+                                                                                                                                                                                                                           { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                           (case (hsnORec >|< hsnCRec) of
+                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                            (case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
+                                                                                                                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                             (case (hsnRowEmpty) of
+                                                                                                                                                                                                                              { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                              (case ([]) of
+                                                                                                                                                                                                                               { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                               (case (Map.empty) of
+                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                (case (emptyVarMp) of
+                                                                                                                                                                                                                                 { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                 (case (CPatRest_Empty) of
+                                                                                                                                                                                                                                  { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                  (case (_pp) of
+                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                    { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                    (case (trppEmpty) of
+                                                                                                                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                     (case ([]) of
+                                                                                                                                                                                                                                      { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                 in  sem_RecPatExpr_Empty_7)) of
+                                                                                                                                                                                          { ( sem_RecPatExpr_7) | True ->
+                                                                                                                                                                                          ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                in  sem_RecPatExpr_Empty_6)) of
+                                                                                                                                                         { ( sem_RecPatExpr_6) | True ->
+                                                                                                                                                         ( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }))))))))
+                                                                                                                                in  sem_RecPatExpr_Empty_5)) of
+                                                                                                                         { ( sem_RecPatExpr_5) | True ->
+                                                                                                                         ( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }))))))))
+                                                                                                  in  sem_RecPatExpr_Empty_4)) of
+                                                                                           { ( sem_RecPatExpr_4) | True ->
+                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) })))))))))))
+                                                               in  sem_RecPatExpr_Empty_3)) of
+                                                        { ( sem_RecPatExpr_3) | True ->
+                                                        ( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) })))))
+                                      in  sem_RecPatExpr_Empty_2)) of
+                               { ( sem_RecPatExpr_2) | True ->
+                               ( _lhsOgUniq,sem_RecPatExpr_2) }) }) })))
+              in  sem_RecPatExpr_Empty_1)) of
+       { ( sem_RecPatExpr_1) | True ->
+       ( _lhsOrange,sem_RecPatExpr_1) }) }) })
+
+sem_RecPatExpr_Ext :: Range ->
+                      T_RecPatExpr ->
+                      (Maybe HsName) ->
+                      T_PatExpr ->
+                      T_RecPatExpr
+
+sem_RecPatExpr_Ext hsrange_ recPatExpr_ mbNm_ patExpr_ | hsrange_ `seq` (recPatExpr_ `seq` (mbNm_ `seq` (patExpr_ `seq` (True)))) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (recPatExpr_) of
+          { ( _recPatExprIrange,recPatExpr_1) | True ->
+              (case (rangeUnions [hsrange_, _recPatExprIrange
+                                                          , _patExprIrange
+                                                                         ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_RecPatExpr_Ext_1 :: T_RecPatExpr_1
+                            sem_RecPatExpr_Ext_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq3) -> (__cont,lUniq,lUniq2,lUniq3)}}} )) of
+                                       { __tup222 | __tup222 `seq` (True) ->
+                                       (case (__tup222) of
+                                        { (_recPatExprOgUniq,_,_,_) | _recPatExprOgUniq `seq` (True) ->
+                                        (case (recPatExpr_1 _recPatExprOgUniq) of
+                                         { ( _recPatExprIgUniq,recPatExpr_2) | True ->
+                                             (case (_recPatExprIgUniq) of
+                                              { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
+                                              (case (patExpr_1 _patExprOgUniq) of
+                                               { ( _patExprIgUniq,patExpr_2) | True ->
+                                                   (case (_patExprIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_RecPatExpr_Ext_2 :: T_RecPatExpr_2
+                                                                sem_RecPatExpr_Ext_2 =
+                                                                    (\ _lhsIkiGam
+                                                                       _lhsIlexLev
+                                                                       _lhsIpredSameScopeCounter ->
+                                                                         _lhsIkiGam `seq`
+                                                                         (_lhsIlexLev `seq`
+                                                                          (_lhsIpredSameScopeCounter `seq`
+                                                                           ((case (_lhsIpredSameScopeCounter) of
+                                                                             { _recPatExprOpredSameScopeCounter | _recPatExprOpredSameScopeCounter `seq` (True) ->
+                                                                             (case (_lhsIlexLev) of
+                                                                              { _recPatExprOlexLev | _recPatExprOlexLev `seq` (True) ->
+                                                                              (case (_lhsIkiGam) of
+                                                                               { _recPatExprOkiGam | _recPatExprOkiGam `seq` (True) ->
+                                                                               (case (recPatExpr_2 _recPatExprOkiGam _recPatExprOlexLev _recPatExprOpredSameScopeCounter) of
+                                                                                { ( _recPatExprIpredSameScopeCounter,recPatExpr_3) | True ->
+                                                                                    (case (_recPatExprIpredSameScopeCounter) of
+                                                                                     { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                                     (case (_lhsIlexLev) of
+                                                                                      { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                                      (case (_lhsIkiGam) of
+                                                                                       { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                                       (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                                        { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                                            (case (_patExprIpredSameScopeCounter) of
+                                                                                             { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                                             (case ((let sem_RecPatExpr_Ext_3 :: T_RecPatExpr_3
+                                                                                                         sem_RecPatExpr_Ext_3 =
+                                                                                                             (\ _lhsIgenerDataInfoMp
+                                                                                                                _lhsIkiVarMp
+                                                                                                                _lhsIopts
+                                                                                                                _lhsIpolGam
+                                                                                                                _lhsIpolVarMp
+                                                                                                                _lhsIpredScope
+                                                                                                                _lhsItyGam
+                                                                                                                _lhsItyKiGam
+                                                                                                                _lhsItyKiGlobFreeTvarS ->
+                                                                                                                  _lhsIgenerDataInfoMp `seq`
+                                                                                                                  (_lhsIkiVarMp `seq`
+                                                                                                                   (_lhsIopts `seq`
+                                                                                                                    (_lhsIpolGam `seq`
+                                                                                                                     (_lhsIpolVarMp `seq`
+                                                                                                                      (_lhsIpredScope `seq`
+                                                                                                                       (_lhsItyGam `seq`
+                                                                                                                        (_lhsItyKiGam `seq`
+                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                          ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                            { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                             { _recPatExprOtyKiGlobFreeTvarS | _recPatExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                             (case (_lhsItyKiGam) of
+                                                                                                                              { _recPatExprOtyKiGam | _recPatExprOtyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyGam) of
+                                                                                                                               { _recPatExprOtyGam | _recPatExprOtyGam `seq` (True) ->
+                                                                                                                               (case (_lhsIpredScope) of
+                                                                                                                                { _recPatExprOpredScope | _recPatExprOpredScope `seq` (True) ->
+                                                                                                                                (case (_lhsIpolVarMp) of
+                                                                                                                                 { _recPatExprOpolVarMp | _recPatExprOpolVarMp `seq` (True) ->
+                                                                                                                                 (case (_lhsIpolGam) of
+                                                                                                                                  { _recPatExprOpolGam | _recPatExprOpolGam `seq` (True) ->
+                                                                                                                                  (case (_lhsIopts) of
+                                                                                                                                   { _recPatExprOopts | _recPatExprOopts `seq` (True) ->
+                                                                                                                                   (case (_lhsIkiVarMp) of
+                                                                                                                                    { _recPatExprOkiVarMp | _recPatExprOkiVarMp `seq` (True) ->
+                                                                                                                                    (case (_lhsIgenerDataInfoMp) of
+                                                                                                                                     { _recPatExprOgenerDataInfoMp | _recPatExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                     (case (recPatExpr_3 _recPatExprOgenerDataInfoMp _recPatExprOkiVarMp _recPatExprOopts _recPatExprOpolGam _recPatExprOpolVarMp _recPatExprOpredScope _recPatExprOtyGam _recPatExprOtyKiGam _recPatExprOtyKiGlobFreeTvarS) of
+                                                                                                                                      { ( _recPatExprIgenerDataInfoMp,_recPatExprIkiVarMp,_recPatExprIpolVarMp,_recPatExprItyGam,_recPatExprItyKiGam,recPatExpr_4) | True ->
+                                                                                                                                          (case (_recPatExprItyKiGam) of
+                                                                                                                                           { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                                                           (case (_recPatExprItyGam) of
+                                                                                                                                            { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                                                            (case (_lhsIpredScope) of
+                                                                                                                                             { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                                                             (case (_recPatExprIpolVarMp) of
+                                                                                                                                              { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                                                              (case (_lhsIpolGam) of
+                                                                                                                                               { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                                                               (case (_lhsIopts) of
+                                                                                                                                                { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                                                                (case (_recPatExprIkiVarMp) of
+                                                                                                                                                 { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                                                                 (case (_recPatExprIgenerDataInfoMp) of
+                                                                                                                                                  { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                  (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                                                   { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                                                       (case (_patExprIgenerDataInfoMp) of
+                                                                                                                                                        { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                                                        (case (_patExprIkiVarMp) of
+                                                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                         (case (_patExprIpolVarMp) of
+                                                                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                          (case (_patExprItyGam) of
+                                                                                                                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                                                           (case (_patExprItyKiGam) of
+                                                                                                                                                            { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                            (case ((let sem_RecPatExpr_Ext_4 :: T_RecPatExpr_4
+                                                                                                                                                                        sem_RecPatExpr_Ext_4 =
+                                                                                                                                                                            (\ _lhsIclGam
+                                                                                                                                                                               _lhsIdataGam
+                                                                                                                                                                               _lhsIfinKiVarMp
+                                                                                                                                                                               _lhsIfinTyKiGam
+                                                                                                                                                                               _lhsIpositionalFldNmL
+                                                                                                                                                                               _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                                                                 _lhsIclGam `seq`
+                                                                                                                                                                                 (_lhsIdataGam `seq`
+                                                                                                                                                                                  (_lhsIfinKiVarMp `seq`
+                                                                                                                                                                                   (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                    (_lhsIpositionalFldNmL `seq`
+                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                      ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                        { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                         { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                          { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                          (case (_lhsIdataGam) of
+                                                                                                                                                                                           { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                                                           (case (_lhsIclGam) of
+                                                                                                                                                                                            { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                                                            (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                             { _recPatExprOtyTyTySigFreeTvarS | _recPatExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                             (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                              { _recPatExprOfinTyKiGam | _recPatExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                              (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                               { _recPatExprOfinKiVarMp | _recPatExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                               (case (_lhsIdataGam) of
+                                                                                                                                                                                                { _recPatExprOdataGam | _recPatExprOdataGam `seq` (True) ->
+                                                                                                                                                                                                (case (_lhsIclGam) of
+                                                                                                                                                                                                 { _recPatExprOclGam | _recPatExprOclGam `seq` (True) ->
+                                                                                                                                                                                                 (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                  { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                                                                      (case (_lhsIpositionalFldNmL) of
+                                                                                                                                                                                                       { _recPatExprOpositionalFldNmL | _recPatExprOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                                       (case (recPatExpr_4 _recPatExprOclGam _recPatExprOdataGam _recPatExprOfinKiVarMp _recPatExprOfinTyKiGam _recPatExprOpositionalFldNmL _recPatExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                                                                        { ( _recPatExprIchrInstDeclSq,_recPatExprIhasAFldRef,_recPatExprIpositionalFldNmL,recPatExpr_5) | True ->
+                                                                                                                                                                                                            (case (_recPatExprIchrInstDeclSq `Seq.union` _patExprIchrInstDeclSq) of
+                                                                                                                                                                                                             { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                                                             (case (maybe _recPatExprIhasAFldRef (const True) mbNm_) of
+                                                                                                                                                                                                              { _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
+                                                                                                                                                                                                              (case (hdAndTl _recPatExprIpositionalFldNmL) of
+                                                                                                                                                                                                               { __tup221 | __tup221 `seq` (True) ->
+                                                                                                                                                                                                               (case (__tup221) of
+                                                                                                                                                                                                                { (_,_lhsOpositionalFldNmL) | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                                                                (case ((let sem_RecPatExpr_Ext_5 :: T_RecPatExpr_5
+                                                                                                                                                                                                                            sem_RecPatExpr_Ext_5 =
+                                                                                                                                                                                                                                (\ _lhsIfiOpts
+                                                                                                                                                                                                                                   _lhsIknTy
+                                                                                                                                                                                                                                   _lhsImatchOnFld
+                                                                                                                                                                                                                                   _lhsIpatTyVarMp
+                                                                                                                                                                                                                                   _lhsItySigGam
+                                                                                                                                                                                                                                   _lhsIvalGam ->
+                                                                                                                                                                                                                                     _lhsIfiOpts `seq`
+                                                                                                                                                                                                                                     (_lhsIknTy `seq`
+                                                                                                                                                                                                                                      (_lhsImatchOnFld `seq`
+                                                                                                                                                                                                                                       (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                                                                        (_lhsItySigGam `seq`
+                                                                                                                                                                                                                                         (_lhsIvalGam `seq`
+                                                                                                                                                                                                                                          ((case (_lhsIvalGam) of
+                                                                                                                                                                                                                                            { _recPatExprOvalGam | _recPatExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                            (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                             { _recPatExprOtySigGam | _recPatExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                             (case (_lhsImatchOnFld) of
+                                                                                                                                                                                                                                              { _recPatExprOmatchOnFld | _recPatExprOmatchOnFld `seq` (True) ->
+                                                                                                                                                                                                                                              (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                               { _recPatExprOfiOpts | _recPatExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                               (case (__tup222) of
+                                                                                                                                                                                                                                                { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                                                                (case (__tup222) of
+                                                                                                                                                                                                                                                 { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                                 (case (__tup221) of
+                                                                                                                                                                                                                                                  { (_positionalNm,_) | _positionalNm `seq` (True) ->
+                                                                                                                                                                                                                                                  (case (case mbNm_ of
+                                                                                                                                                                                                                                                           Just nm                     -> nm
+                                                                                                                                                                                                                                                           Nothing  | _lhsImatchOnFld  -> _patExprItopNm
+                                                                                                                                                                                                                                                                    | otherwise        -> _positionalNm) of
+                                                                                                                                                                                                                                                   { _nm | _nm `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (let  [r,e] = mkNewTyVarL 2 _lUniq
+                                                                                                                                                                                                                                                          in   (r,e)) of
+                                                                                                                                                                                                                                                    { __tup220 | __tup220 `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (__tup220) of
+                                                                                                                                                                                                                                                     { (_rowTy,_) | _rowTy `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (hsnRec `appConApp` [_rowTy]) of
+                                                                                                                                                                                                                                                      { _extTy | _extTy `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (__tup220) of
+                                                                                                                                                                                                                                                       { (_,_patTy) | _patTy `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_extTy `recRecExt` [(_nm,_patTy)]) of
+                                                                                                                                                                                                                                                        { _recTy | _recTy `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (defaultFIEnv
+                                                                                                                                                                                                                                                                   { feEHCOpts = _lhsIopts
+                                                                                                                                                                                                                                                                   , fePredScope = _lhsIpredScope
+                                                                                                                                                                                                                                                                   , feTyGam = _lhsItyGam
+                                                                                                                                                                                                                                                                   , fePolGam = _lhsIpolGam
+                                                                                                                                                                                                                                                                   , feRange = _range
+                                                                                                                                                                                                                                                                   }) of
+                                                                                                                                                                                                                                                         { _fe | _fe `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (fitsIn (_lhsIfiOpts) _fe _lUniq2 _lhsIpatTyVarMp _lhsIknTy _recTy) of
+                                                                                                                                                                                                                                                          { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (foVarMp _fo_ `varUpd` _lhsIpatTyVarMp) of
+                                                                                                                                                                                                                                                           { _recPatExprOpatTyVarMp | _recPatExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_extTy) of
+                                                                                                                                                                                                                                                            { _recPatExprOknTy | _recPatExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (recPatExpr_5 _recPatExprOfiOpts _recPatExprOknTy _recPatExprOmatchOnFld _recPatExprOpatTyVarMp _recPatExprOtySigGam _recPatExprOvalGam) of
+                                                                                                                                                                                                                                                             { ( _recPatExprIpatTyVarMp,_recPatExprIvalGam,recPatExpr_6) | True ->
+                                                                                                                                                                                                                                                                 (case (_recPatExprIvalGam) of
+                                                                                                                                                                                                                                                                  { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItySigGam) of
+                                                                                                                                                                                                                                                                   { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_recPatExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                                    { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIfiOpts) of
+                                                                                                                                                                                                                                                                     { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (True) of
+                                                                                                                                                                                                                                                                      { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_patTy) of
+                                                                                                                                                                                                                                                                       { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case ([]) of
+                                                                                                                                                                                                                                                                        { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                                                                                                         { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                                                                                                             (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                                                                                              { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                                                                                                  (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                                                                                                   { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_patExprIvalGam) of
+                                                                                                                                                                                                                                                                                    { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case ((let sem_RecPatExpr_Ext_6 :: T_RecPatExpr_6
+                                                                                                                                                                                                                                                                                                sem_RecPatExpr_Ext_6 =
+                                                                                                                                                                                                                                                                                                    (\ _lhsIchrStore
+                                                                                                                                                                                                                                                                                                       _lhsIclDfGam
+                                                                                                                                                                                                                                                                                                       _lhsItvKiVarMp
+                                                                                                                                                                                                                                                                                                       _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                       _lhsItyVarMp
+                                                                                                                                                                                                                                                                                                       _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                                         _lhsIchrStore `seq`
+                                                                                                                                                                                                                                                                                                         (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                                                                                          (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                            (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                 { _recPatExprOvalTyGlobFreeTvarS | _recPatExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                                                                                                  { _recPatExprOtyVarMp | _recPatExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                   { _recPatExprOtyTyGlobFreeTvarS | _recPatExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                    { _recPatExprOtvKiVarMp | _recPatExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                     { _recPatExprOclDfGam | _recPatExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                      { _recPatExprOchrStore | _recPatExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (recPatExpr_6 _recPatExprOchrStore _recPatExprOclDfGam _recPatExprOtvKiVarMp _recPatExprOtyTyGlobFreeTvarS _recPatExprOtyVarMp _recPatExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                       { ( _recPatExprIgathCnstrMp,_recPatExprIgathRangeMp,_recPatExprIscopeGam,_recPatExprIty,_recPatExprItyVarMp,recPatExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                                           (case (_recPatExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                            { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                             { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                              { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                                                                                               { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                                                                                                { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (__tup222) of
+                                                                                                                                                                                                                                                                                                                                 { (_,_,_,_lUniq3) | _lUniq3 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (mkPrIdCHR _lUniq3) of
+                                                                                                                                                                                                                                                                                                                                  { _prUid | _prUid `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case ([rngLift _range mkPredOccRng (Pred_Lacks _rowTy (Label_Lab _nm)) _prUid _lhsIpredScope]) of
+                                                                                                                                                                                                                                                                                                                                   { _prOccL | _prOccL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (gathPredLToProveCnstrMp _prOccL) of
+                                                                                                                                                                                                                                                                                                                                    { _hereCnstrMp | _hereCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                     { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                                                                                                         (case (cnstrMpUnions [_hereCnstrMp, _recPatExprIgathCnstrMp, _patExprIgathCnstrMp]) of
+                                                                                                                                                                                                                                                                                                                                          { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                          (case (_recPatExprIgathRangeMp `Map.union` _patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                                                                                                           { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                           (case (_recPatExprIscopeGam `gamUnion` _patExprIscopeGam) of
+                                                                                                                                                                                                                                                                                                                                            { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                            (case (foTy _fo_) of
+                                                                                                                                                                                                                                                                                                                                             { _ty | _ty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                             (case (_ty) of
+                                                                                                                                                                                                                                                                                                                                              { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                                                                                                               { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case ((let sem_RecPatExpr_Ext_7 :: T_RecPatExpr_7
+                                                                                                                                                                                                                                                                                                                                                           sem_RecPatExpr_Ext_7 =
+                                                                                                                                                                                                                                                                                                                                                               (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIceParentNm
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIfinValGam
+                                                                                                                                                                                                                                                                                                                                                                  _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIrangeMp
+                                                                                                                                                                                                                                                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                                                                                  _lhsItr
+                                                                                                                                                                                                                                                                                                                                                                  _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                                                                                                    _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                                                                                                    (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                     (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                      (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                       (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                        (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                                                                                                         (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                                                                          (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                           (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                                                                             (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                                                                                                              ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                 { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                  { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                   { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                                                    { _recPatExprOsysfEnv | _recPatExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                                                                                                                     { _recPatExprOrangeMp | _recPatExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                                                                                                                      { _recPatExprOfinValGam | _recPatExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                       { _recPatExprOfinTyVarMp | _recPatExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                       (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                        { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                        (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                         { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                         (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                          { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                          (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                           { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                           (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                            { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                            (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                             { _recPatExprOchrScopeBindMp | _recPatExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                             (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                                                                                                              { _recPatExprOchrEvidBindMp | _recPatExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                              (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                               { _recPatExprOcSubst | _recPatExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                               (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                { _recPatExprOtySigVarMp | _recPatExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                                                                 { _recPatExprOtr | _recPatExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                  { _recPatExprOmoduleNm | _recPatExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                   { _recPatExprOceParentNm | _recPatExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                   (case (recPatExpr_7 _recPatExprOcSubst _recPatExprOceParentNm _recPatExprOchrEvidBindMp _recPatExprOchrScopeBindMp _recPatExprOfinTyVarMp _recPatExprOfinValGam _recPatExprOmoduleNm _recPatExprOrangeMp _recPatExprOsysfEnv _recPatExprOtr _recPatExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                    { ( _recPatExprIallErrSq,_recPatExprIcSubst,_recPatExprIerrSq,_recPatExprIextNm,_recPatExprIfsRPatL,_recPatExprIgathMentrelFilterMp,_recPatExprIgathTvKiVarMp,_recPatExprIpatCRest,_recPatExprIpp,_recPatExprIppL,_recPatExprItrpp,_recPatExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                        (case (_recPatExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                         { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                         (case (rpatNmNm _patExprIcpNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                          { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                          (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                           { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                                                                                                                               (case (_recPatExprIallErrSq `Seq.union` _patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                                                                                                                                 { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                 (case (_recPatExprIpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                  { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                  (case (Seq.unions [ _recPatExprIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                                                    , rngLift _range mkNestErr' _pp [_patExprIerrSq, foErrSq _fo_]
+                                                                                                                                                                                                                                                                                                                                                                                                                                    ]) of
+                                                                                                                                                                                                                                                                                                                                                                                                                   { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                   (case (_recPatExprIextNm) of
+                                                                                                                                                                                                                                                                                                                                                                                                                    { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                    (case (cSubstApp _patExprIcSubst $ acoreNmHolePred _prUid) of
+                                                                                                                                                                                                                                                                                                                                                                                                                     { _offset | _offset `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                     (case ((FldComputeOffset _nm _offset,_patExprIrpat) : _recPatExprIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                      { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                      (case (_recPatExprIgathMentrelFilterMp `mentrelFilterMpUnion` _patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                       (case (_recPatExprIgathTvKiVarMp `varmpUnion` _patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                        (case (_recPatExprIpatCRest) of
+                                                                                                                                                                                                                                                                                                                                                                                                                         { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                         (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                          { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                          (case (ppFld "=" (Just _positionalNm) _nm (pp _nm) _patExprIpp : _recPatExprIppL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                           { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                           (case (_recPatExprItrpp >< _patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                            (case (_recPatExprIvalCBindL ++ _patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                                                                                                                             { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                                                                                                       in  sem_RecPatExpr_Ext_7)) of
+                                                                                                                                                                                                                                                                                                                                                { ( sem_RecPatExpr_7) | True ->
+                                                                                                                                                                                                                                                                                                                                                ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                                                                                            in  sem_RecPatExpr_Ext_6)) of
+                                                                                                                                                                                                                                                                                     { ( sem_RecPatExpr_6) | True ->
+                                                                                                                                                                                                                                                                                     ( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                        in  sem_RecPatExpr_Ext_5)) of
+                                                                                                                                                                                                                 { ( sem_RecPatExpr_5) | True ->
+                                                                                                                                                                                                                 ( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                    in  sem_RecPatExpr_Ext_4)) of
+                                                                                                                                                             { ( sem_RecPatExpr_4) | True ->
+                                                                                                                                                             ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
+                                                                                                     in  sem_RecPatExpr_Ext_3)) of
+                                                                                              { ( sem_RecPatExpr_3) | True ->
+                                                                                              ( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) }) }) }) }) }) }) }) }) })))))
+                                                            in  sem_RecPatExpr_Ext_2)) of
+                                                     { ( sem_RecPatExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_RecPatExpr_2) }) }) }) }) }) }) })))
+                        in  sem_RecPatExpr_Ext_1)) of
+                 { ( sem_RecPatExpr_1) | True ->
+                 ( _lhsOrange,sem_RecPatExpr_1) }) }) }) }) })
+
+sem_RecPatExpr_Expr :: Range ->
+                       T_PatExpr ->
+                       T_RecPatExpr
+
+sem_RecPatExpr_Expr hsrange_ patExpr_ | hsrange_ `seq` (patExpr_ `seq` (True)) =
+    (case (patExpr_) of
+     { ( _patExprIrange,patExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _patExprIrange, _patExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_RecPatExpr_Expr_1 :: T_RecPatExpr_1
+                       sem_RecPatExpr_Expr_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _patExprOgUniq | _patExprOgUniq `seq` (True) ->
+                                  (case (patExpr_1 _patExprOgUniq) of
+                                   { ( _patExprIgUniq,patExpr_2) | True ->
+                                       (case (_patExprIgUniq) of
+                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                        (case ((let sem_RecPatExpr_Expr_2 :: T_RecPatExpr_2
+                                                    sem_RecPatExpr_Expr_2 =
+                                                        (\ _lhsIkiGam
+                                                           _lhsIlexLev
+                                                           _lhsIpredSameScopeCounter ->
+                                                             _lhsIkiGam `seq`
+                                                             (_lhsIlexLev `seq`
+                                                              (_lhsIpredSameScopeCounter `seq`
+                                                               ((case (_lhsIpredSameScopeCounter) of
+                                                                 { _patExprOpredSameScopeCounter | _patExprOpredSameScopeCounter `seq` (True) ->
+                                                                 (case (_lhsIlexLev) of
+                                                                  { _patExprOlexLev | _patExprOlexLev `seq` (True) ->
+                                                                  (case (_lhsIkiGam) of
+                                                                   { _patExprOkiGam | _patExprOkiGam `seq` (True) ->
+                                                                   (case (patExpr_2 _patExprOkiGam _patExprOlexLev _patExprOpredSameScopeCounter) of
+                                                                    { ( _patExprIpredSameScopeCounter,patExpr_3) | True ->
+                                                                        (case (_patExprIpredSameScopeCounter) of
+                                                                         { _lhsOpredSameScopeCounter | _lhsOpredSameScopeCounter `seq` (True) ->
+                                                                         (case ((let sem_RecPatExpr_Expr_3 :: T_RecPatExpr_3
+                                                                                     sem_RecPatExpr_Expr_3 =
+                                                                                         (\ _lhsIgenerDataInfoMp
+                                                                                            _lhsIkiVarMp
+                                                                                            _lhsIopts
+                                                                                            _lhsIpolGam
+                                                                                            _lhsIpolVarMp
+                                                                                            _lhsIpredScope
+                                                                                            _lhsItyGam
+                                                                                            _lhsItyKiGam
+                                                                                            _lhsItyKiGlobFreeTvarS ->
+                                                                                              _lhsIgenerDataInfoMp `seq`
+                                                                                              (_lhsIkiVarMp `seq`
+                                                                                               (_lhsIopts `seq`
+                                                                                                (_lhsIpolGam `seq`
+                                                                                                 (_lhsIpolVarMp `seq`
+                                                                                                  (_lhsIpredScope `seq`
+                                                                                                   (_lhsItyGam `seq`
+                                                                                                    (_lhsItyKiGam `seq`
+                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                      ((case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                        { _patExprOtyKiGlobFreeTvarS | _patExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                        (case (_lhsItyKiGam) of
+                                                                                                         { _patExprOtyKiGam | _patExprOtyKiGam `seq` (True) ->
+                                                                                                         (case (_lhsItyGam) of
+                                                                                                          { _patExprOtyGam | _patExprOtyGam `seq` (True) ->
+                                                                                                          (case (_lhsIpredScope) of
+                                                                                                           { _patExprOpredScope | _patExprOpredScope `seq` (True) ->
+                                                                                                           (case (_lhsIpolVarMp) of
+                                                                                                            { _patExprOpolVarMp | _patExprOpolVarMp `seq` (True) ->
+                                                                                                            (case (_lhsIpolGam) of
+                                                                                                             { _patExprOpolGam | _patExprOpolGam `seq` (True) ->
+                                                                                                             (case (_lhsIopts) of
+                                                                                                              { _patExprOopts | _patExprOopts `seq` (True) ->
+                                                                                                              (case (_lhsIkiVarMp) of
+                                                                                                               { _patExprOkiVarMp | _patExprOkiVarMp `seq` (True) ->
+                                                                                                               (case (_lhsIgenerDataInfoMp) of
+                                                                                                                { _patExprOgenerDataInfoMp | _patExprOgenerDataInfoMp `seq` (True) ->
+                                                                                                                (case (patExpr_3 _patExprOgenerDataInfoMp _patExprOkiVarMp _patExprOopts _patExprOpolGam _patExprOpolVarMp _patExprOpredScope _patExprOtyGam _patExprOtyKiGam _patExprOtyKiGlobFreeTvarS) of
+                                                                                                                 { ( _patExprIgenerDataInfoMp,_patExprIkiVarMp,_patExprIpolVarMp,_patExprItyGam,_patExprItyKiGam,patExpr_4) | True ->
+                                                                                                                     (case (_patExprIgenerDataInfoMp) of
+                                                                                                                      { _lhsOgenerDataInfoMp | _lhsOgenerDataInfoMp `seq` (True) ->
+                                                                                                                      (case (_patExprIkiVarMp) of
+                                                                                                                       { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                       (case (_patExprIpolVarMp) of
+                                                                                                                        { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                        (case (_patExprItyGam) of
+                                                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                                                         (case (_patExprItyKiGam) of
+                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                          (case ((let sem_RecPatExpr_Expr_4 :: T_RecPatExpr_4
+                                                                                                                                      sem_RecPatExpr_Expr_4 =
+                                                                                                                                          (\ _lhsIclGam
+                                                                                                                                             _lhsIdataGam
+                                                                                                                                             _lhsIfinKiVarMp
+                                                                                                                                             _lhsIfinTyKiGam
+                                                                                                                                             _lhsIpositionalFldNmL
+                                                                                                                                             _lhsItyTyTySigFreeTvarS ->
+                                                                                                                                               _lhsIclGam `seq`
+                                                                                                                                               (_lhsIdataGam `seq`
+                                                                                                                                                (_lhsIfinKiVarMp `seq`
+                                                                                                                                                 (_lhsIfinTyKiGam `seq`
+                                                                                                                                                  (_lhsIpositionalFldNmL `seq`
+                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                    ((case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                      { _patExprOtyTyTySigFreeTvarS | _patExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                       { _patExprOfinTyKiGam | _patExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                        { _patExprOfinKiVarMp | _patExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                        (case (_lhsIdataGam) of
+                                                                                                                                                         { _patExprOdataGam | _patExprOdataGam `seq` (True) ->
+                                                                                                                                                         (case (_lhsIclGam) of
+                                                                                                                                                          { _patExprOclGam | _patExprOclGam `seq` (True) ->
+                                                                                                                                                          (case (patExpr_4 _patExprOclGam _patExprOdataGam _patExprOfinKiVarMp _patExprOfinTyKiGam _patExprOtyTyTySigFreeTvarS) of
+                                                                                                                                                           { ( _patExprIchrInstDeclSq,_patExprItopNm,patExpr_5) | True ->
+                                                                                                                                                               (case (_patExprIchrInstDeclSq) of
+                                                                                                                                                                { _lhsOchrInstDeclSq | _lhsOchrInstDeclSq `seq` (True) ->
+                                                                                                                                                                (case (False) of
+                                                                                                                                                                 { _lhsOhasAFldRef | _lhsOhasAFldRef `seq` (True) ->
+                                                                                                                                                                 (case (_lhsIpositionalFldNmL) of
+                                                                                                                                                                  { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
+                                                                                                                                                                  (case ((let sem_RecPatExpr_Expr_5 :: T_RecPatExpr_5
+                                                                                                                                                                              sem_RecPatExpr_Expr_5 =
+                                                                                                                                                                                  (\ _lhsIfiOpts
+                                                                                                                                                                                     _lhsIknTy
+                                                                                                                                                                                     _lhsImatchOnFld
+                                                                                                                                                                                     _lhsIpatTyVarMp
+                                                                                                                                                                                     _lhsItySigGam
+                                                                                                                                                                                     _lhsIvalGam ->
+                                                                                                                                                                                       _lhsIfiOpts `seq`
+                                                                                                                                                                                       (_lhsIknTy `seq`
+                                                                                                                                                                                        (_lhsImatchOnFld `seq`
+                                                                                                                                                                                         (_lhsIpatTyVarMp `seq`
+                                                                                                                                                                                          (_lhsItySigGam `seq`
+                                                                                                                                                                                           (_lhsIvalGam `seq`
+                                                                                                                                                                                            ((case (_lhsIvalGam) of
+                                                                                                                                                                                              { _patExprOvalGam | _patExprOvalGam `seq` (True) ->
+                                                                                                                                                                                              (case (_lhsItySigGam) of
+                                                                                                                                                                                               { _patExprOtySigGam | _patExprOtySigGam `seq` (True) ->
+                                                                                                                                                                                               (case (_lhsIpatTyVarMp) of
+                                                                                                                                                                                                { _patExprOpatTyVarMp | _patExprOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                (case (_lhsIknTy) of
+                                                                                                                                                                                                 { _patExprOknTy | _patExprOknTy `seq` (True) ->
+                                                                                                                                                                                                 (case (_lhsIfiOpts) of
+                                                                                                                                                                                                  { _patExprOfiOpts | _patExprOfiOpts `seq` (True) ->
+                                                                                                                                                                                                  (case (True) of
+                                                                                                                                                                                                   { _patExprOinclVarBind | _patExprOinclVarBind `seq` (True) ->
+                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                    { _patExprOknTyL | _patExprOknTyL `seq` (True) ->
+                                                                                                                                                                                                    (case (patExpr_5 _patExprOvalGam) of
+                                                                                                                                                                                                     { ( _patExprIarity,_patExprImbTopNm,_patExprIpatFunTy,patExpr_6) | True ->
+                                                                                                                                                                                                         (case (patExpr_6 _patExprOfiOpts _patExprOinclVarBind _patExprOknTy _patExprOknTyL _patExprOpatTyVarMp _patExprOtySigGam) of
+                                                                                                                                                                                                          { ( _patExprIpatTyVarMp,_patExprIvalGam,patExpr_7) | True ->
+                                                                                                                                                                                                              (case (_patExprIpatTyVarMp) of
+                                                                                                                                                                                                               { _lhsOpatTyVarMp | _lhsOpatTyVarMp `seq` (True) ->
+                                                                                                                                                                                                               (case (_patExprIvalGam) of
+                                                                                                                                                                                                                { _lhsOvalGam | _lhsOvalGam `seq` (True) ->
+                                                                                                                                                                                                                (case ((let sem_RecPatExpr_Expr_6 :: T_RecPatExpr_6
+                                                                                                                                                                                                                            sem_RecPatExpr_Expr_6 =
+                                                                                                                                                                                                                                (\ _lhsIchrStore
+                                                                                                                                                                                                                                   _lhsIclDfGam
+                                                                                                                                                                                                                                   _lhsItvKiVarMp
+                                                                                                                                                                                                                                   _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                   _lhsItyVarMp
+                                                                                                                                                                                                                                   _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                     _lhsIchrStore `seq`
+                                                                                                                                                                                                                                     (_lhsIclDfGam `seq`
+                                                                                                                                                                                                                                      (_lhsItvKiVarMp `seq`
+                                                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                        (_lhsItyVarMp `seq`
+                                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                            { _patExprOvalTyGlobFreeTvarS | _patExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                            (case (_lhsItyVarMp) of
+                                                                                                                                                                                                                                             { _patExprOtyVarMp | _patExprOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                              { _patExprOtyTyGlobFreeTvarS | _patExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                              (case (_lhsItvKiVarMp) of
+                                                                                                                                                                                                                                               { _patExprOtvKiVarMp | _patExprOtvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                               (case (_lhsIclDfGam) of
+                                                                                                                                                                                                                                                { _patExprOclDfGam | _patExprOclDfGam `seq` (True) ->
+                                                                                                                                                                                                                                                (case (_lhsIchrStore) of
+                                                                                                                                                                                                                                                 { _patExprOchrStore | _patExprOchrStore `seq` (True) ->
+                                                                                                                                                                                                                                                 (case (patExpr_7 _patExprOchrStore _patExprOclDfGam _patExprOtvKiVarMp _patExprOtyTyGlobFreeTvarS _patExprOtyVarMp _patExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                  { ( _patExprIcpNm,_patExprIgathCnstrMp,_patExprIgathRangeMp,_patExprIscopeGam,_patExprIty,_patExprItyVarMp,patExpr_8) | True ->
+                                                                                                                                                                                                                                                      (case (_patExprIgathCnstrMp) of
+                                                                                                                                                                                                                                                       { _lhsOgathCnstrMp | _lhsOgathCnstrMp `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_patExprIgathRangeMp) of
+                                                                                                                                                                                                                                                        { _lhsOgathRangeMp | _lhsOgathRangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (_patExprIscopeGam) of
+                                                                                                                                                                                                                                                         { _lhsOscopeGam | _lhsOscopeGam `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_patExprIty) of
+                                                                                                                                                                                                                                                          { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (_patExprItyVarMp) of
+                                                                                                                                                                                                                                                           { _lhsOtyVarMp | _lhsOtyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                           (case ((let sem_RecPatExpr_Expr_7 :: T_RecPatExpr_7
+                                                                                                                                                                                                                                                                       sem_RecPatExpr_Expr_7 =
+                                                                                                                                                                                                                                                                           (\ _lhsIcSubst
+                                                                                                                                                                                                                                                                              _lhsIceParentNm
+                                                                                                                                                                                                                                                                              _lhsIchrEvidBindMp
+                                                                                                                                                                                                                                                                              _lhsIchrScopeBindMp
+                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                              _lhsIfinValGam
+                                                                                                                                                                                                                                                                              _lhsImoduleNm
+                                                                                                                                                                                                                                                                              _lhsIrangeMp
+                                                                                                                                                                                                                                                                              _lhsIsysfEnv
+                                                                                                                                                                                                                                                                              _lhsItr
+                                                                                                                                                                                                                                                                              _lhsItySigVarMp ->
+                                                                                                                                                                                                                                                                                _lhsIcSubst `seq`
+                                                                                                                                                                                                                                                                                (_lhsIceParentNm `seq`
+                                                                                                                                                                                                                                                                                 (_lhsIchrEvidBindMp `seq`
+                                                                                                                                                                                                                                                                                  (_lhsIchrScopeBindMp `seq`
+                                                                                                                                                                                                                                                                                   (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                    (_lhsIfinValGam `seq`
+                                                                                                                                                                                                                                                                                     (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                      (_lhsIrangeMp `seq`
+                                                                                                                                                                                                                                                                                       (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                        (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                         (_lhsItySigVarMp `seq`
+                                                                                                                                                                                                                                                                                          ((case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                            { _patExprOsysfEnv | _patExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_lhsIrangeMp) of
+                                                                                                                                                                                                                                                                                             { _patExprOrangeMp | _patExprOrangeMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_lhsIfinValGam) of
+                                                                                                                                                                                                                                                                                              { _patExprOfinValGam | _patExprOfinValGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                               { _patExprOfinTyVarMp | _patExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_lhsItySigVarMp) of
+                                                                                                                                                                                                                                                                                                { _patExprOtySigVarMp | _patExprOtySigVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                 { _patExprOtr | _patExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                  { _patExprOmoduleNm | _patExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_lhsIchrScopeBindMp) of
+                                                                                                                                                                                                                                                                                                   { _patExprOchrScopeBindMp | _patExprOchrScopeBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_lhsIchrEvidBindMp) of
+                                                                                                                                                                                                                                                                                                    { _patExprOchrEvidBindMp | _patExprOchrEvidBindMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_lhsIceParentNm) of
+                                                                                                                                                                                                                                                                                                     { _patExprOceParentNm | _patExprOceParentNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_lhsIcSubst) of
+                                                                                                                                                                                                                                                                                                      { _patExprOcSubst | _patExprOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (patExpr_8 _patExprOcSubst _patExprOceParentNm _patExprOchrEvidBindMp _patExprOchrScopeBindMp _patExprOfinTyVarMp _patExprOfinValGam _patExprOmoduleNm _patExprOrangeMp _patExprOsysfEnv _patExprOtr _patExprOtySigVarMp) of
+                                                                                                                                                                                                                                                                                                       { ( _patExprIallErrSq,_patExprIappArgPPL,_patExprIappFunNm,_patExprIappFunPP,_patExprIcSubst,_patExprIerrSq,_patExprIfsRPatL,_patExprIgathMentrelFilterMp,_patExprIgathTvKiVarMp,_patExprIisBang,_patExprIpatCRest,_patExprIpp,_patExprIrpat,_patExprItrpp,_patExprIvalCBindL) | True ->
+                                                                                                                                                                                                                                                                                                           (case (_patExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (_patExprIcSubst) of
+                                                                                                                                                                                                                                                                                                             { _lhsOcSubst | _lhsOcSubst `seq` (True) ->
+                                                                                                                                                                                                                                                                                                             (case (_patExprIerrSq) of
+                                                                                                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                              (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                               { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                               (case (_patExprIfsRPatL) of
+                                                                                                                                                                                                                                                                                                                { _lhsOfsRPatL | _lhsOfsRPatL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                (case (_patExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                 (case (_patExprIgathTvKiVarMp) of
+                                                                                                                                                                                                                                                                                                                  { _lhsOgathTvKiVarMp | _lhsOgathTvKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                  (case (_patExprIpatCRest) of
+                                                                                                                                                                                                                                                                                                                   { _lhsOpatCRest | _lhsOpatCRest `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                   (case (_patExprIpp) of
+                                                                                                                                                                                                                                                                                                                    { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                    (case (_pp) of
+                                                                                                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                     (case ([]) of
+                                                                                                                                                                                                                                                                                                                      { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                      (case (_patExprItrpp) of
+                                                                                                                                                                                                                                                                                                                       { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                       (case (_patExprIvalCBindL) of
+                                                                                                                                                                                                                                                                                                                        { _lhsOvalCBindL | _lhsOvalCBindL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                        ( _lhsOallErrSq,_lhsOcSubst,_lhsOerrSq,_lhsOextNm,_lhsOfsRPatL,_lhsOgathMentrelFilterMp,_lhsOgathTvKiVarMp,_lhsOpatCRest,_lhsOpp,_lhsOppL,_lhsOtrpp,_lhsOvalCBindL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+                                                                                                                                                                                                                                                                   in  sem_RecPatExpr_Expr_7)) of
+                                                                                                                                                                                                                                                            { ( sem_RecPatExpr_7) | True ->
+                                                                                                                                                                                                                                                            ( _lhsOgathCnstrMp,_lhsOgathRangeMp,_lhsOscopeGam,_lhsOty,_lhsOtyVarMp,sem_RecPatExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                                                                        in  sem_RecPatExpr_Expr_6)) of
+                                                                                                                                                                                                                 { ( sem_RecPatExpr_6) | True ->
+                                                                                                                                                                                                                 ( _lhsOpatTyVarMp,_lhsOvalGam,sem_RecPatExpr_6) }) }) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                                                          in  sem_RecPatExpr_Expr_5)) of
+                                                                                                                                                                   { ( sem_RecPatExpr_5) | True ->
+                                                                                                                                                                   ( _lhsOchrInstDeclSq,_lhsOhasAFldRef,_lhsOpositionalFldNmL,sem_RecPatExpr_5) }) }) }) }) }) }) }) }) }) }))))))))
+                                                                                                                                  in  sem_RecPatExpr_Expr_4)) of
+                                                                                                                           { ( sem_RecPatExpr_4) | True ->
+                                                                                                                           ( _lhsOgenerDataInfoMp,_lhsOkiVarMp,_lhsOpolVarMp,_lhsOtyGam,_lhsOtyKiGam,sem_RecPatExpr_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))
                                                                                  in  sem_RecPatExpr_Expr_3)) of
                                                                           { ( sem_RecPatExpr_3) | True ->
                                                                           ( _lhsOpredSameScopeCounter,sem_RecPatExpr_3) }) }) }) }) }) })))))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_RowTyExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_RowTyExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_RowTyExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_RowTyExpr.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -123,6 +123,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -136,6 +137,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          pp                   : PP_Doc
          ppL                  : [PP_Doc]
+         trpp                 : TrPP
    alternatives:
       alternative Empty:
          child hsrange        : {Range}
@@ -149,25 +151,25 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup218     : _
-            local _tup217     : _
+            local _tup224     : _
+            local _tup223     : _
          visit 2:
             local positionalNm : {HsName}
             local nm          : {HsName}
-            intra _tup217     : _
-            intra _tup218     : _
+            intra _tup223     : _
+            intra _tup224     : _
          visit 3:
-            intra _tup218     : _
+            intra _tup224     : _
             intra nm          : {HsName}
             intra positionalNm : {HsName}
          visit 4:
-            intra _tup218     : _
+            intra _tup224     : _
             intra nm          : {HsName}
             intra positionalNm : {HsName}
          visit 5:
             local lUniq       : {UID}
             local fo_         : {FIOut}
-            intra _tup218     : _
+            intra _tup224     : _
             intra nm          : {HsName}
             intra positionalNm : {HsName}
          visit 6:
@@ -179,31 +181,31 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup221     : _
+            local _tup227     : _
             intra range       : {Range}
          visit 2:
             local lUniq       : {UID}
-            local _tup219     : _
+            local _tup225     : _
             local tgi_        : {TyGamInfo}
-            intra _tup221     : _
+            intra _tup227     : _
             intra range       : {Range}
          visit 3:
-            intra _tup221     : _
+            intra _tup227     : _
             intra tgi_        : {TyGamInfo}
             intra range       : {Range}
          visit 4:
             local lUniq_ki    : {UID}
-            local _tup220     : _
+            local _tup226     : _
             local tyKiGamNew  : _
-            intra _tup221     : _
+            intra _tup227     : _
             intra tgi_        : {TyGamInfo}
             intra range       : {Range}
          visit 5:
             local lUniq2      : {UID}
             local tkgi_       : {TyKiGamInfo}
             local fo_         : {FIOut}
-            intra _tup221     : _
-            intra _tup220     : _
+            intra _tup227     : _
+            intra _tup226     : _
             intra range       : {Range}
          visit 6:
             local pp          : _
@@ -272,6 +274,7 @@
                                                                                                                                                    _lhsImoduleNm
                                                                                                                                                    _lhsIopts
                                                                                                                                                    _lhsIsysfEnv
+                                                                                                                                                   _lhsItr
                                                                                                                                                    _lhsItyKiGlobFreeTvarS
                                                                                                                                                    _lhsItyTyGlobFreeTvarS
                                                                                                                                                    _lhsItyTyTySigFreeTvarS
@@ -284,27 +287,30 @@
                                                                                                                                                          (_lhsImoduleNm `seq`
                                                                                                                                                           (_lhsIopts `seq`
                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                            (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                ((case (Seq.empty) of
-                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                  (case (Set.empty) of
-                                                                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                 ((case (Seq.empty) of
+                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                    (case (Set.empty) of
-                                                                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                    (case (Seq.empty) of
-                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                     (case (hsnRowEmpty) of
-                                                                                                                                                                      { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                      (case (Map.empty) of
-                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                       (case (empty) of
-                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                        (case ([]) of
-                                                                                                                                                                         { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                         ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOextNm,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                    (case (Set.empty) of
+                                                                                                                                                                     { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                     (case (Seq.empty) of
+                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                      (case (hsnRowEmpty) of
+                                                                                                                                                                       { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                       (case (Map.empty) of
+                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                        (case (empty) of
+                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                          { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                          (case (trppEmpty) of
+                                                                                                                                                                           { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                           ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOextNm,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) })))))))))))))))
                                                                                                                                         in  sem_RowTyExpr_Empty_6)) of
                                                                                                                                  { ( sem_RowTyExpr_6) | True ->
                                                                                                                                  ( _lhsOkiVarMp,_lhsOtyVarWildMp,sem_RowTyExpr_6) }) }) })))
@@ -347,8 +353,8 @@
                                      _lhsIgUniq `seq`
                                      (_lhsIpositionalFldNmL `seq`
                                       ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                                        { __tup218 | __tup218 `seq` (True) ->
-                                        (case (__tup218) of
+                                        { __tup224 | __tup224 `seq` (True) ->
+                                        (case (__tup224) of
                                          { (_rowTyExprOgUniq,_) | _rowTyExprOgUniq `seq` (True) ->
                                          (case (_lhsIpositionalFldNmL) of
                                           { _rowTyExprOpositionalFldNmL | _rowTyExprOpositionalFldNmL `seq` (True) ->
@@ -361,8 +367,8 @@
                                                      (case (_tyExprIgUniq) of
                                                       { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
                                                       (case (hdAndTl _rowTyExprIpositionalFldNmL) of
-                                                       { __tup217 | __tup217 `seq` (True) ->
-                                                       (case (__tup217) of
+                                                       { __tup223 | __tup223 `seq` (True) ->
+                                                       (case (__tup223) of
                                                         { (_,_lhsOpositionalFldNmL) | _lhsOpositionalFldNmL `seq` (True) ->
                                                         (case ((let sem_RowTyExpr_Ext_2 :: T_RowTyExpr_2
                                                                     sem_RowTyExpr_Ext_2 =
@@ -378,7 +384,7 @@
                                                                                       { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
                                                                                           (case (_tyExprItyGam) of
                                                                                            { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                           (case (__tup217) of
+                                                                                           (case (__tup223) of
                                                                                             { (_positionalNm,_) | _positionalNm `seq` (True) ->
                                                                                             (case (maybe _positionalNm id mbNm_) of
                                                                                              { _nm | _nm `seq` (True) ->
@@ -438,7 +444,7 @@
                                                                                                                                                                                                         { ( _rowTyExprIkiVarMp,_rowTyExprItyVarWildMp,rowTyExpr_6) | True ->
                                                                                                                                                                                                             (case (_rowTyExprIkiVarMp) of
                                                                                                                                                                                                              { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                             (case (__tup218) of
+                                                                                                                                                                                                             (case (__tup224) of
                                                                                                                                                                                                               { (_,_lUniq) | _lUniq `seq` (True) ->
                                                                                                                                                                                                               (case (tyExpr_6 _tyExprOkiVarMp) of
                                                                                                                                                                                                                { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
@@ -458,6 +464,7 @@
                                                                                                                                                                                                                                          _lhsImoduleNm
                                                                                                                                                                                                                                          _lhsIopts
                                                                                                                                                                                                                                          _lhsIsysfEnv
+                                                                                                                                                                                                                                         _lhsItr
                                                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
@@ -470,81 +477,88 @@
                                                                                                                                                                                                                                                (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                                 (_lhsIopts `seq`
                                                                                                                                                                                                                                                  (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                      ((case (_lhsIclGam) of
-                                                                                                                                                                                                                                                        { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                                                         { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                              { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                               { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                  { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                   { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                    { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                     { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                      { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                       { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                        { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                         { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                              { _rowTyExprOvalTyGlobFreeTvarS | _rowTyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                               { _rowTyExprOtyTyTySigFreeTvarS | _rowTyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                { _rowTyExprOtyTyGlobFreeTvarS | _rowTyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                 { _rowTyExprOtyKiGlobFreeTvarS | _rowTyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                  { _rowTyExprOsysfEnv | _rowTyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                   { _rowTyExprOopts | _rowTyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                    { _rowTyExprOmoduleNm | _rowTyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                     { _rowTyExprOkiGam | _rowTyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                      { _rowTyExprOfinTyVarMp | _rowTyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                       { _rowTyExprOfinTyKiGam | _rowTyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                        { _rowTyExprOfinKiVarMp | _rowTyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                                         { _rowTyExprOclGam | _rowTyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (rowTyExpr_6 _rowTyExprOclGam _rowTyExprOfinKiVarMp _rowTyExprOfinTyKiGam _rowTyExprOfinTyVarMp _rowTyExprOkiGam _rowTyExprOmoduleNm _rowTyExprOopts _rowTyExprOsysfEnv _rowTyExprOtyKiGlobFreeTvarS _rowTyExprOtyTyGlobFreeTvarS _rowTyExprOtyTyTySigFreeTvarS _rowTyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                          { ( _rowTyExprIallErrSq,_rowTyExprIclMissNmS,_rowTyExprIclNmS,_rowTyExprIerrSq,_rowTyExprIextNm,_rowTyExprIgathMentrelFilterMp,_rowTyExprIpp,_rowTyExprIppL) | True ->
-                                                                                                                                                                                                                                                                                              (case (_rowTyExprIallErrSq `Seq.union` _tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_rowTyExprIclMissNmS `Set.union` _tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                                { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_rowTyExprIclNmS `Set.union` _tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                                 { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_rowTyExprIerrSq `Seq.union` _tyExprIerrSq) of
-                                                                                                                                                                                                                                                                                                  { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (_rowTyExprIextNm) of
-                                                                                                                                                                                                                                                                                                   { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_rowTyExprIgathMentrelFilterMp `mentrelFilterMpUnion` _tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                    { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case (_rowTyExprIpp) of
-                                                                                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (ppFld "::" (Just _positionalNm) _nm (pp _nm) _tyExprIpp : _rowTyExprIppL) of
-                                                                                                                                                                                                                                                                                                      { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOextNm,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                       ((case (_lhsIclGam) of
+                                                                                                                                                                                                                                                         { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                                                          { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                                                              (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                               { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                  { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItr) of
+                                                                                                                                                                                                                                                                   { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                    { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                     { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                      { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                       { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                        { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                         { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                          { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                           { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                               (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { _rowTyExprOvalTyGlobFreeTvarS | _rowTyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                 { _rowTyExprOtyTyTySigFreeTvarS | _rowTyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                  { _rowTyExprOtyTyGlobFreeTvarS | _rowTyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { _rowTyExprOtyKiGlobFreeTvarS | _rowTyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                    { _rowTyExprOtr | _rowTyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                     { _rowTyExprOsysfEnv | _rowTyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                      { _rowTyExprOopts | _rowTyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                       { _rowTyExprOmoduleNm | _rowTyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                        { _rowTyExprOkiGam | _rowTyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                         { _rowTyExprOfinTyVarMp | _rowTyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                          { _rowTyExprOfinTyKiGam | _rowTyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                           { _rowTyExprOfinKiVarMp | _rowTyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                                            { _rowTyExprOclGam | _rowTyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (rowTyExpr_6 _rowTyExprOclGam _rowTyExprOfinKiVarMp _rowTyExprOfinTyKiGam _rowTyExprOfinTyVarMp _rowTyExprOkiGam _rowTyExprOmoduleNm _rowTyExprOopts _rowTyExprOsysfEnv _rowTyExprOtr _rowTyExprOtyKiGlobFreeTvarS _rowTyExprOtyTyGlobFreeTvarS _rowTyExprOtyTyTySigFreeTvarS _rowTyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                             { ( _rowTyExprIallErrSq,_rowTyExprIclMissNmS,_rowTyExprIclNmS,_rowTyExprIerrSq,_rowTyExprIextNm,_rowTyExprIgathMentrelFilterMp,_rowTyExprIpp,_rowTyExprIppL,_rowTyExprItrpp) | True ->
+                                                                                                                                                                                                                                                                                                 (case (_rowTyExprIallErrSq `Seq.union` _tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_rowTyExprIclMissNmS `Set.union` _tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_rowTyExprIclNmS `Set.union` _tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_rowTyExprIerrSq `Seq.union` _tyExprIerrSq) of
+                                                                                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_rowTyExprIextNm) of
+                                                                                                                                                                                                                                                                                                      { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (_rowTyExprIgathMentrelFilterMp `mentrelFilterMpUnion` _tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_rowTyExprIpp) of
+                                                                                                                                                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (ppFld "::" (Just _positionalNm) _nm (pp _nm) _tyExprIpp : _rowTyExprIppL) of
+                                                                                                                                                                                                                                                                                                         { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         (case (_rowTyExprItrpp >< _tyExprItrpp) of
+                                                                                                                                                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOextNm,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))
                                                                                                                                                                                                                               in  sem_RowTyExpr_Ext_6)) of
                                                                                                                                                                                                                        { ( sem_RowTyExpr_6) | True ->
                                                                                                                                                                                                                        ( _lhsOkiVarMp,_lhsOtyVarWildMp,sem_RowTyExpr_6) }) }) }) }) }) }) }) }) })))
@@ -580,8 +594,8 @@
                            _lhsIgUniq `seq`
                            (_lhsIpositionalFldNmL `seq`
                             ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq2,lUniq_ki)}}} )) of
-                              { __tup221 | __tup221 `seq` (True) ->
-                              (case (__tup221) of
+                              { __tup227 | __tup227 `seq` (True) ->
+                              (case (__tup227) of
                                { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
                                (case (_lhsIpositionalFldNmL) of
                                 { _lhsOpositionalFldNmL | _lhsOpositionalFldNmL `seq` (True) ->
@@ -589,13 +603,13 @@
                                             sem_RowTyExpr_Var_2 =
                                                 (\ _lhsItyGam ->
                                                      _lhsItyGam `seq`
-                                                     ((case (__tup221) of
+                                                     ((case (__tup227) of
                                                        { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
                                                        (case (tyGamLookupOrAdd _lUniq nm_ _lhsItyGam _lhsItyGam) of
-                                                        { __tup219 | __tup219 `seq` (True) ->
-                                                        (case (__tup219) of
+                                                        { __tup225 | __tup225 `seq` (True) ->
+                                                        (case (__tup225) of
                                                          { (_,_lhsOtyGam) | _lhsOtyGam `seq` (True) ->
-                                                         (case (__tup219) of
+                                                         (case (__tup225) of
                                                           { (_tgi_,_) | _tgi_ `seq` (True) ->
                                                           (case (tgiTy _tgi_) of
                                                            { _lhsOtyRow | _lhsOtyRow `seq` (True) ->
@@ -613,23 +627,23 @@
                                                                                                 sem_RowTyExpr_Var_4 =
                                                                                                     (\ _lhsItyKiGam ->
                                                                                                          _lhsItyKiGam `seq`
-                                                                                                         ((case (__tup221) of
+                                                                                                         ((case (__tup227) of
                                                                                                            { (_,_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
                                                                                                            (case (tyKiGamLookupOrAdd _lUniq_ki (tgiTy _tgi_) _lhsItyKiGam) of
-                                                                                                            { __tup220 | __tup220 `seq` (True) ->
-                                                                                                            (case (__tup220) of
+                                                                                                            { __tup226 | __tup226 `seq` (True) ->
+                                                                                                            (case (__tup226) of
                                                                                                              { (_,_,_tyKiGamNew) | _tyKiGamNew `seq` (True) ->
                                                                                                              (case (_tyKiGamNew) of
                                                                                                               { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                              (case (__tup220) of
+                                                                                                              (case (__tup226) of
                                                                                                                { (_,_lhsOtyKiGam,_) | _lhsOtyKiGam `seq` (True) ->
                                                                                                                (case ((let sem_RowTyExpr_Var_5 :: T_RowTyExpr_5
                                                                                                                            sem_RowTyExpr_Var_5 =
                                                                                                                                (\ _lhsIkiVarMp ->
                                                                                                                                     _lhsIkiVarMp `seq`
-                                                                                                                                    ((case (__tup221) of
+                                                                                                                                    ((case (__tup227) of
                                                                                                                                       { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                      (case (__tup220) of
+                                                                                                                                      (case (__tup226) of
                                                                                                                                        { (_tkgi_,_,_) | _tkgi_ `seq` (True) ->
                                                                                                                                        (case (fitsIn weakFIOpts defaultFIEnv _lUniq2 _lhsIkiVarMp (tkgiKi _tkgi_) kiRow) of
                                                                                                                                         { _fo_ | _fo_ `seq` (True) ->
@@ -647,6 +661,7 @@
                                                                                                                                                              _lhsImoduleNm
                                                                                                                                                              _lhsIopts
                                                                                                                                                              _lhsIsysfEnv
+                                                                                                                                                             _lhsItr
                                                                                                                                                              _lhsItyKiGlobFreeTvarS
                                                                                                                                                              _lhsItyTyGlobFreeTvarS
                                                                                                                                                              _lhsItyTyTySigFreeTvarS
@@ -659,29 +674,32 @@
                                                                                                                                                                    (_lhsImoduleNm `seq`
                                                                                                                                                                     (_lhsIopts `seq`
                                                                                                                                                                      (_lhsIsysfEnv `seq`
-                                                                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                        (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                          ((case (Seq.empty) of
-                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                            (case (Set.empty) of
-                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                      (_lhsItr `seq`
+                                                                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                         (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                           ((case (Seq.empty) of
+                                                                                                                                                                             { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                              (case (Set.empty) of
-                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                              (case (pp nm_) of
-                                                                                                                                                                               { _pp | _pp `seq` (True) ->
-                                                                                                                                                                               (case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
-                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                (case (hsnUnknown) of
-                                                                                                                                                                                 { _lhsOextNm | _lhsOextNm `seq` (True) ->
-                                                                                                                                                                                 (case (Map.empty) of
-                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                  (case (_pp) of
-                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                   (case ([]) of
-                                                                                                                                                                                    { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOextNm,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                              { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                              (case (Set.empty) of
+                                                                                                                                                                               { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                               (case (pp nm_) of
+                                                                                                                                                                                { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                (case (rngLift _range mkNestErr' _pp [foErrSq _fo_]) of
+                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                 (case (hsnUnknown) of
+                                                                                                                                                                                  { _lhsOextNm | _lhsOextNm `seq` (True) ->
+                                                                                                                                                                                  (case (Map.empty) of
+                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                   (case (_pp) of
+                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                    (case ([]) of
+                                                                                                                                                                                     { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                     (case (trppEmpty) of
+                                                                                                                                                                                      { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOextNm,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) })))))))))))))))
                                                                                                                                                   in  sem_RowTyExpr_Var_6)) of
                                                                                                                                            { ( sem_RowTyExpr_6) | True ->
                                                                                                                                            ( _lhsOkiVarMp,_lhsOtyVarWildMp,sem_RowTyExpr_6) }) }) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_TyExpr.hs b/src/UHC/Light/Compiler/EH/MainAG_TyExpr.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_TyExpr.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_TyExpr.hs
@@ -19,3401 +19,3481 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
-import UHC.Light.Compiler.VarMp
-import UHC.Light.Compiler.Substitutable
-import Data.Maybe
-import UHC.Light.Compiler.Ty.Utils1
-import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Ty.Trf.Instantiate
-import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
-import UHC.Light.Compiler.Ty.FitsInCommon2
-import UHC.Light.Compiler.Ty.FIEnv2
-import qualified Data.Set as Set
-import qualified Data.Map as Map
-import Data.Set (Set)
-import Data.Map (Map)
-import UHC.Light.Compiler.Ty.Trf.FreshVar
-import UHC.Light.Compiler.Ty.Ftv
-import UHC.Util.Utils (groupSortOn)
-import Control.Applicative ((<|>))
-import UHC.Light.Compiler.AbstractCore
-import UHC.Light.Compiler.AbstractCore.Utils
-import UHC.Light.Compiler.Core
-import UHC.Light.Compiler.Core.FFI
-import UHC.Light.Compiler.Core.Utils
-import UHC.Light.Compiler.Core.Pretty
-import UHC.Light.Compiler.Foreign.Extract
-import UHC.Light.Compiler.LamInfo
-import UHC.Light.Compiler.CodeGen.RefGenerator
-import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
-import UHC.Light.Compiler.FinalEnv
-import UHC.Light.Compiler.Core.BindExtract
-import UHC.Light.Compiler.Core.Subst
-import Control.Monad.State
-import UHC.Light.Compiler.Ty.Utils2
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Core.Coercion
-import UHC.Light.Compiler.Ty.Trf.MergePreds
-import UHC.Light.Compiler.Ty.Trf.Canonic
-import UHC.Light.Compiler.Gam.ClGam
-import UHC.Light.Compiler.Pred
-import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
-import UHC.Light.Compiler.CHR
-import UHC.Light.Compiler.CHR.Constraint
-import UHC.Light.Compiler.Pred.CHR
-import UHC.Light.Compiler.Pred.ToCHR
-import UHC.Light.Compiler.Pred.Heuristics
-import UHC.Light.Compiler.CHR.Solve
-import UHC.Light.Compiler.Pred.EvidenceToCore
-import UHC.Light.Compiler.Gam.ClassDefaultGam
-import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Ty.UsedNames
-import UHC.Light.Compiler.CodeGen.ImportUsedModules
-import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
-import UHC.Light.Compiler.CodeGen.BuiltinPrims
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Pretty
-import UHC.Light.Compiler.Deriving
-import UHC.Light.Compiler.Generics
-import UHC.Light.Compiler.VarMp.Utils
-
-import UHC.Light.Compiler.EH.MainAG_common
-
--- TyExpr ------------------------------------------------------
-{-
-   visit 0:
-      synthesized attribute:
-         range                : Range
-   visit 1:
-      chained attribute:
-         gUniq                : UID
-   visit 2:
-      chained attribute:
-         tyGam                : TyGam
-      synthesized attribute:
-         ty                   : Ty
-   visit 3:
-      inherited attribute:
-         knPolCtx             : Polarity
-      synthesized attribute:
-         polVarL              : [Polarity]
-   visit 4:
-      inherited attribute:
-         polGam               : PolGam
-      chained attribute:
-         polVarMp             : VarMp
-      synthesized attribute:
-         mbStrictness         : Maybe Strictness
-   visit 5:
-      chained attribute:
-         tyKiGam              : TyKiGam
-      synthesized attribute:
-         intlTyKiGam          : TyKiGam
-   visit 6:
-      chained attribute:
-         kiVarMp              : VarMp
-      synthesized attributes:
-         gathTyVarPolGam      : PolGam
-         ki                   : Ty
-         pol                  : Polarity
-         tyVarWildMp          : TyVarWildMp
-   visit 7:
-      inherited attribute:
-         clGam                : ClGam
-      synthesized attribute:
-         evTy                 : Ty
-   visit 8:
-      inherited attributes:
-         finKiVarMp           : VarMp
-         finTyKiGam           : TyKiGam
-         finTyVarMp           : VarMp
-         kiGam                : KiGam
-         moduleNm             : HsName
-         opts                 : EHCOpts
-         sysfEnv              : ToSysfEnv
-         tyKiGlobFreeTvarS    : TyVarIdS
-         tyTyGlobFreeTvarS    : TyVarIdS
-         tyTyTySigFreeTvarS   : TyVarIdS
-         valTyGlobFreeTvarS   : TyVarIdS
-      synthesized attributes:
-         allErrSq             : ErrSq
-         appArgPPL            : [PP_Doc]
-         appFunNm             : HsName
-         appFunPP             : PP_Doc
-         clMissNmS            : HsNameS
-         clNmS                : HsNameS
-         errSq                : ErrSq
-         gathMentrelFilterMp  : ModEntRelFilterMp
-         pp                   : PP_Doc
-         tyWildL              : TyL
-   alternatives:
-      alternative Con:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup226     : _
-            intra range       : {Range}
-         visit 2:
-            local ty          : {Ty}
-            intra _tup226     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup226     : _
-            intra ty          : {Ty}
-            intra range       : {Range}
-         visit 4:
-            local lUniq_17_fitsIn_pol : {UID}
-            local _tup222     : _
-            local pgi_        : {PolGamInfo}
-            local polFromEnv  : _
-            local foPol       : {FIOut}
-            intra _tup226     : _
-            intra ty          : {Ty}
-            intra range       : {Range}
-         visit 5:
-            intra foPol       : {FIOut}
-            intra ty          : {Ty}
-            intra _tup222     : _
-            intra range       : {Range}
-         visit 6:
-            local _tup225     : _
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            intra foPol       : {FIOut}
-            intra ty          : {Ty}
-            intra _tup222     : _
-            intra range       : {Range}
-         visit 7:
-            intra ty          : {Ty}
-            intra _tup225     : _
-            intra _tup222     : _
-            intra foPol       : {FIOut}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            local nmErrs2     : {ErrL}
-            local _tup224     : _
-            local nmErrs      : {ErrL}
-            local nmPolErrs   : {ErrL}
-            local gathMentrelFilterMp : _
-            intra _tup225     : _
-            intra _tup222     : _
-            intra foPol       : {FIOut}
-            intra range       : {Range}
-      alternative App:
-         child hsrange        : {Range}
-         child func           : TyExpr 
-         child arg            : TyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup228     : _
-            intra range       : {Range}
-         visit 2:
-            local ty          : {Ty}
-            intra _tup228     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup228     : _
-            intra range       : {Range}
-         visit 4:
-            local lUniq_17_polArg : {UID}
-            local polArgVar   : {Ty}
-            local knFuncPol   : _
-            intra _tup228     : _
-            intra range       : {Range}
-         visit 5:
-            intra _tup228     : _
-            intra range       : {Range}
-         visit 6:
-            local lUniq       : {UID}
-            local knResKi     : _
-            local ki          : {Ty}
-            local lUniq2      : {UID}
-            local knFunKi     : {Ty}
-            local fo_         : {FIOut}
-            intra _tup228     : _
-            intra range       : {Range}
-         visit 7:
-            local evTy        : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-         visit 8:
-            local _tup227     : _
-            local pp          : _
-            intra fo_         : {FIOut}
-            intra range       : {Range}
-      alternative AppTop:
-         child hsrange        : {Range}
-         child tyExpr         : TyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            intra range       : {Range}
-         visit 2:
-            intra range       : {Range}
-         visit 3:
-            intra range       : {Range}
-         visit 4:
-            intra range       : {Range}
-         visit 5:
-            intra range       : {Range}
-         visit 6:
-            intra range       : {Range}
-         visit 7:
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            intra range       : {Range}
-      alternative Parens:
-         child hsrange        : {Range}
-         child tyExpr         : TyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 8:
-            local pp          : _
-      alternative Ann:
-         child hsrange        : {Range}
-         child ann            : TyExprAnn 
-         child tyExpr         : TyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 2:
-            local ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Wild:
-         child hsrange        : {Range}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup229     : _
-         visit 2:
-            local lUniq       : {UID}
-            local tyVarId     : {UID}
-            local tvarv       : {Ty}
-            local tgi_        : {TyGamInfo}
-            local ty          : {Ty}
-            intra _tup229     : _
-         visit 3:
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 4:
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 5:
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 6:
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Mono:
-         child hsrange        : {Range}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup230     : _
-         visit 2:
-            local lUniq       : {UID}
-            local tyVarId     : {UID}
-            local tvarv       : {Ty}
-            local tgi_        : {TyGamInfo}
-            local ty          : {Ty}
-            intra _tup230     : _
-         visit 3:
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 4:
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 5:
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 6:
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            intra tvarv       : {Ty}
-            intra tyVarId     : {UID}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Var:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup235     : _
-            intra range       : {Range}
-         visit 2:
-            local lUniq       : {UID}
-            local _tup233     : _
-            local tgi_        : {TyGamInfo}
-            local ty          : {Ty}
-            intra _tup235     : _
-            intra range       : {Range}
-         visit 3:
-            intra _tup235     : _
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-            intra range       : {Range}
-         visit 4:
-            local lUniq_17_fitsIn_pol : {UID}
-            local _tup231     : _
-            local pgi_        : {PolGamInfo}
-            local polFromEnv  : _
-            local foPol       : {FIOut}
-            intra _tup235     : _
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-            intra range       : {Range}
-         visit 5:
-            local lUniq_ki    : {UID}
-            local _tup234     : _
-            local tyKiGamNew  : _
-            intra _tup235     : _
-            intra tgi_        : {TyGamInfo}
-            intra foPol       : {FIOut}
-            intra ty          : {Ty}
-            intra range       : {Range}
-         visit 6:
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            intra _tup234     : _
-            intra foPol       : {FIOut}
-            intra ty          : {Ty}
-            intra range       : {Range}
-         visit 7:
-            intra ty          : {Ty}
-            intra foPol       : {FIOut}
-            intra range       : {Range}
-         visit 8:
-            local pp          : _
-            intra foPol       : {FIOut}
-            intra range       : {Range}
-      alternative VarWild:
-         child hsrange        : {Range}
-         child nm             : {HsName}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup239     : _
-         visit 2:
-            local lUniq       : {UID}
-            local _tup237     : _
-            local tgi_        : {TyGamInfo}
-            local ty          : {Ty}
-            intra _tup239     : _
-         visit 3:
-            intra _tup239     : _
-            intra tgi_        : {TyGamInfo}
-            intra lUniq       : {UID}
-            intra ty          : {Ty}
-         visit 4:
-            intra _tup239     : _
-            intra tgi_        : {TyGamInfo}
-            intra lUniq       : {UID}
-            intra ty          : {Ty}
-         visit 5:
-            local lUniq_ki    : {UID}
-            local _tup238     : _
-            local tyKiGamNew  : _
-            intra _tup239     : _
-            intra tgi_        : {TyGamInfo}
-            intra lUniq       : {UID}
-            intra ty          : {Ty}
-         visit 6:
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            local tyVarId     : {UID}
-            intra _tup238     : _
-            intra lUniq       : {UID}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Quant:
-         child hsrange        : {Range}
-         child qu             : {TyQu}
-         child tyVar          : {HsName}
-         child tyExpr         : TyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup242     : _
-         visit 2:
-            local lUniq_ki    : {UID}
-            local lUniq       : {UID}
-            local _tup241     : _
-            local tkgi_       : {TyKiGamInfo}
-            local tgi_        : {TyGamInfo}
-            local tv          : {UID}
-            local ty          : {Ty}
-            intra _tup242     : _
-         visit 3:
-            intra tkgi_       : {TyKiGamInfo}
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-         visit 4:
-            intra tkgi_       : {TyKiGamInfo}
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-         visit 5:
-            local tyKiGamNew  : _
-            intra tkgi_       : {TyKiGamInfo}
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-         visit 6:
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Row:
-         child hsrange        : {Range}
-         child rowTyExpr      : RowTyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 2:
-            local ty          : {Ty}
-         visit 3:
-            intra ty          : {Ty}
-         visit 4:
-            intra ty          : {Ty}
-         visit 5:
-            intra ty          : {Ty}
-         visit 6:
-            local ki          : {Ty}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Pred:
-         child hsrange        : {Range}
-         child prExpr         : PrExpr 
-         visit 0:
-            local range       : {Range}
-         visit 8:
-            local pp          : _
-      alternative Impls:
-         child hsrange        : {Range}
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup243     : _
-         visit 2:
-            local lUniq       : {UID}
-            local implsVarId  : {UID}
-            local tgi_        : {TyGamInfo}
-            local ty          : {Ty}
-            intra _tup243     : _
-         visit 3:
-            intra implsVarId  : {UID}
-            intra ty          : {Ty}
-         visit 4:
-            intra implsVarId  : {UID}
-            intra ty          : {Ty}
-         visit 5:
-            intra implsVarId  : {UID}
-            intra ty          : {Ty}
-         visit 6:
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            intra implsVarId  : {UID}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative NoImpls:
-         child hsrange        : {Range}
-         visit 0:
-            local range       : {Range}
-         visit 2:
-            local tgi_        : {TyGamInfo}
-            local ty          : {Ty}
-         visit 3:
-            intra ty          : {Ty}
-         visit 4:
-            intra ty          : {Ty}
-         visit 5:
-            intra ty          : {Ty}
-         visit 6:
-            local tkgi_       : {TyKiGamInfo}
-            local ki          : {Ty}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
-      alternative Lam:
-         child hsrange        : {Range}
-         child tyVar          : {HsName}
-         child tyExpr         : TyExpr 
-         visit 0:
-            local range       : {Range}
-         visit 1:
-            local _tup245     : _
-         visit 2:
-            local lUniq_ki    : {UID}
-            local lUniq       : {UID}
-            local _tup244     : _
-            local tgi_        : {TyGamInfo}
-            local tv          : {UID}
-            local ty          : {Ty}
-            intra _tup245     : _
-         visit 3:
-            intra _tup245     : _
-            intra _tup244     : _
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-         visit 4:
-            local lUniq_17_polRes : {UID}
-            local lUniq_17_polArg : {UID}
-            local lUniq_17_fitsIn_pol : {UID}
-            local polResVar   : {Ty}
-            local polArgVar   : {Ty}
-            local foPol       : {FIOut}
-            intra _tup245     : _
-            intra _tup244     : _
-            intra tgi_        : {TyGamInfo}
-            intra ty          : {Ty}
-         visit 5:
-            local tkgi_       : {TyKiGamInfo}
-            local tyKiGamNew  : _
-            intra _tup244     : _
-            intra tgi_        : {TyGamInfo}
-            intra polArgVar   : {Ty}
-            intra ty          : {Ty}
-         visit 6:
-            local ki          : {Ty}
-            intra tkgi_       : {TyKiGamInfo}
-            intra polArgVar   : {Ty}
-            intra ty          : {Ty}
-         visit 7:
-            intra ty          : {Ty}
-         visit 8:
-            local pp          : _
--}
-sem_TyExpr_Con :: Range ->
-                  HsName ->
-                  T_TyExpr
-
-sem_TyExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_Con_1 :: T_TyExpr_1
-                  sem_TyExpr_Con_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_17_fitsIn_pol) -> (__cont,lUniq_17_fitsIn_pol)} )) of
-                             { __tup226 | __tup226 `seq` (True) ->
-                             (case (__tup226) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_TyExpr_Con_2 :: T_TyExpr_2
-                                          sem_TyExpr_Con_2 =
-                                              (\ _lhsItyGam ->
-                                                   _lhsItyGam `seq`
-                                                   ((case (Ty_Con nm_) of
-                                                     { _ty | _ty `seq` (True) ->
-                                                     (case (_ty) of
-                                                      { _lhsOty | _lhsOty `seq` (True) ->
-                                                      (case (_lhsItyGam) of
-                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                       (case ((let sem_TyExpr_Con_3 :: T_TyExpr_3
-                                                                   sem_TyExpr_Con_3 =
-                                                                       (\ _lhsIknPolCtx ->
-                                                                            _lhsIknPolCtx `seq`
-                                                                            ((case ([]) of
-                                                                              { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                              (case ((let sem_TyExpr_Con_4 :: T_TyExpr_4
-                                                                                          sem_TyExpr_Con_4 =
-                                                                                              (\ _lhsIpolGam
-                                                                                                 _lhsIpolVarMp ->
-                                                                                                   _lhsIpolGam `seq`
-                                                                                                   (_lhsIpolVarMp `seq`
-                                                                                                    ((case (Nothing) of
-                                                                                                      { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                      (case (__tup226) of
-                                                                                                       { (_,_lUniq_17_fitsIn_pol) | _lUniq_17_fitsIn_pol `seq` (True) ->
-                                                                                                       (case (polGamLookupErr nm_ _lhsIpolGam) of
-                                                                                                        { __tup222 | __tup222 `seq` (True) ->
-                                                                                                        (case (__tup222) of
-                                                                                                         { (_pgi_,_) | _pgi_ `seq` (True) ->
-                                                                                                         (case (pgiPol _pgi_) of
-                                                                                                          { _polFromEnv | _polFromEnv `seq` (True) ->
-                                                                                                          (case (fitsIn weakFIOpts defaultFIEnv _lUniq_17_fitsIn_pol _lhsIpolVarMp _polFromEnv _lhsIknPolCtx) of
-                                                                                                           { _foPol | _foPol `seq` (True) ->
-                                                                                                           (case (foVarMp _foPol `varUpd` _lhsIpolVarMp) of
-                                                                                                            { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                            (case ((let sem_TyExpr_Con_5 :: T_TyExpr_5
-                                                                                                                        sem_TyExpr_Con_5 =
-                                                                                                                            (\ _lhsItyKiGam ->
-                                                                                                                                 _lhsItyKiGam `seq`
-                                                                                                                                 ((case (emptyGam) of
-                                                                                                                                   { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                   (case (_lhsItyKiGam) of
-                                                                                                                                    { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                    (case ((let sem_TyExpr_Con_6 :: T_TyExpr_6
-                                                                                                                                                sem_TyExpr_Con_6 =
-                                                                                                                                                    (\ _lhsIkiVarMp ->
-                                                                                                                                                         _lhsIkiVarMp `seq`
-                                                                                                                                                         ((case (emptyGam) of
-                                                                                                                                                           { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                           (case (tyKiGamLookupByNameErr nm_ _lhsItyKiGam) of
-                                                                                                                                                            { __tup225 | __tup225 `seq` (True) ->
-                                                                                                                                                            (case (__tup225) of
-                                                                                                                                                             { (_tkgi_,_) | _tkgi_ `seq` (True) ->
-                                                                                                                                                             (case (tkgiKi _tkgi_) of
-                                                                                                                                                              { _ki | _ki `seq` (True) ->
-                                                                                                                                                              (case (_ki) of
-                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                               (case (_lhsIkiVarMp) of
-                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                (case (foTy _foPol) of
-                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                 (case (Map.empty) of
-                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                  (case ((let sem_TyExpr_Con_7 :: T_TyExpr_7
-                                                                                                                                                                              sem_TyExpr_Con_7 =
-                                                                                                                                                                                  (\ _lhsIclGam ->
-                                                                                                                                                                                       _lhsIclGam `seq`
-                                                                                                                                                                                       ((case (_ty) of
-                                                                                                                                                                                         { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                         (case ((let sem_TyExpr_Con_8 :: T_TyExpr_8
-                                                                                                                                                                                                     sem_TyExpr_Con_8 =
-                                                                                                                                                                                                         (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                            _lhsIfinTyKiGam
-                                                                                                                                                                                                            _lhsIfinTyVarMp
-                                                                                                                                                                                                            _lhsIkiGam
-                                                                                                                                                                                                            _lhsImoduleNm
-                                                                                                                                                                                                            _lhsIopts
-                                                                                                                                                                                                            _lhsIsysfEnv
-                                                                                                                                                                                                            _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                            _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                              _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                              (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                               (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                (_lhsIkiGam `seq`
-                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                  (_lhsIopts `seq`
-                                                                                                                                                                                                                   (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                      (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                        ((case (Seq.empty) of
-                                                                                                                                                                                                                          { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                          (case ([]) of
-                                                                                                                                                                                                                           { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                           (case (nm_) of
-                                                                                                                                                                                                                            { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                            (case (ppCon nm_) of
-                                                                                                                                                                                                                             { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                             (case (_pp) of
-                                                                                                                                                                                                                              { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                              (case (Set.empty) of
-                                                                                                                                                                                                                               { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                               (case (Set.empty) of
-                                                                                                                                                                                                                                { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                (case (__tup225) of
-                                                                                                                                                                                                                                 { (_,_nmErrs2) | _nmErrs2 `seq` (True) ->
-                                                                                                                                                                                                                                 (case (tyGamLookupErr nm_ _lhsItyGam) of
-                                                                                                                                                                                                                                  { __tup224 | __tup224 `seq` (True) ->
-                                                                                                                                                                                                                                  (case (__tup224) of
-                                                                                                                                                                                                                                   { (_,_nmErrs) | _nmErrs `seq` (True) ->
-                                                                                                                                                                                                                                   (case (__tup222) of
-                                                                                                                                                                                                                                    { (_,_nmPolErrs) | _nmPolErrs `seq` (True) ->
-                                                                                                                                                                                                                                    (case (rngLift _range mkNestErr' _pp [Seq.fromList $ firstNotEmpty [_nmErrs,_nmErrs2,_nmPolErrs], foErrSq _foPol    ]) of
-                                                                                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                     (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Type nm_) of
-                                                                                                                                                                                                                                      { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                      (case (_gathMentrelFilterMp) of
-                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                        (case ([]) of
-                                                                                                                                                                                                                                         { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                 in  sem_TyExpr_Con_8)) of
-                                                                                                                                                                                          { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                          ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                          in  sem_TyExpr_Con_7)) of
-                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) })))
-                                                                                                                                            in  sem_TyExpr_Con_6)) of
-                                                                                                                                     { ( sem_TyExpr_6) | True ->
-                                                                                                                                     ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
-                                                                                                                    in  sem_TyExpr_Con_5)) of
-                                                                                                             { ( sem_TyExpr_5) | True ->
-                                                                                                             ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
-                                                                                      in  sem_TyExpr_Con_4)) of
-                                                                               { ( sem_TyExpr_4) | True ->
-                                                                               ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                               in  sem_TyExpr_Con_3)) of
-                                                        { ( sem_TyExpr_3) | True ->
-                                                        ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) })))
-                                      in  sem_TyExpr_Con_2)) of
-                               { ( sem_TyExpr_2) | True ->
-                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
-              in  sem_TyExpr_Con_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_App :: Range ->
-                  T_TyExpr ->
-                  T_TyExpr ->
-                  T_TyExpr
-
-sem_TyExpr_App hsrange_ func_ arg_ | hsrange_ `seq` (func_ `seq` (arg_ `seq` (True))) =
-    (case (arg_) of
-     { ( _argIrange,arg_1) | True ->
-         (case (func_) of
-          { ( _funcIrange,func_1) | True ->
-              (case (rangeUnions [hsrange_, _funcIrange   , _argIrange   ]) of
-               { _range | _range `seq` (True) ->
-               (case (_range) of
-                { _lhsOrange | _lhsOrange `seq` (True) ->
-                (case ((let sem_TyExpr_App_1 :: T_TyExpr_1
-                            sem_TyExpr_App_1 =
-                                (\ _lhsIgUniq ->
-                                     _lhsIgUniq `seq`
-                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_17_polArg) -> (__cont,lUniq,lUniq2,lUniq_17_polArg)}}} )) of
-                                       { __tup228 | __tup228 `seq` (True) ->
-                                       (case (__tup228) of
-                                        { (_funcOgUniq,_,_,_) | _funcOgUniq `seq` (True) ->
-                                        (case (func_1 _funcOgUniq) of
-                                         { ( _funcIgUniq,func_2) | True ->
-                                             (case (_funcIgUniq) of
-                                              { _argOgUniq | _argOgUniq `seq` (True) ->
-                                              (case (arg_1 _argOgUniq) of
-                                               { ( _argIgUniq,arg_2) | True ->
-                                                   (case (_argIgUniq) of
-                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                                    (case ((let sem_TyExpr_App_2 :: T_TyExpr_2
-                                                                sem_TyExpr_App_2 =
-                                                                    (\ _lhsItyGam ->
-                                                                         _lhsItyGam `seq`
-                                                                         ((case (_lhsItyGam) of
-                                                                           { _funcOtyGam | _funcOtyGam `seq` (True) ->
-                                                                           (case (func_2 _funcOtyGam) of
-                                                                            { ( _funcIty,_funcItyGam,func_3) | True ->
-                                                                                (case (_funcItyGam) of
-                                                                                 { _argOtyGam | _argOtyGam `seq` (True) ->
-                                                                                 (case (arg_2 _argOtyGam) of
-                                                                                  { ( _argIty,_argItyGam,arg_3) | True ->
-                                                                                      (case (Ty_App _funcIty _argIty) of
-                                                                                       { _ty | _ty `seq` (True) ->
-                                                                                       (case (_ty) of
-                                                                                        { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                        (case (_argItyGam) of
-                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                                         (case ((let sem_TyExpr_App_3 :: T_TyExpr_3
-                                                                                                     sem_TyExpr_App_3 =
-                                                                                                         (\ _lhsIknPolCtx ->
-                                                                                                              _lhsIknPolCtx `seq`
-                                                                                                              ((case ([]) of
-                                                                                                                { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                                                (case ((let sem_TyExpr_App_4 :: T_TyExpr_4
-                                                                                                                            sem_TyExpr_App_4 =
-                                                                                                                                (\ _lhsIpolGam
-                                                                                                                                   _lhsIpolVarMp ->
-                                                                                                                                     _lhsIpolGam `seq`
-                                                                                                                                     (_lhsIpolVarMp `seq`
-                                                                                                                                      ((case (Nothing) of
-                                                                                                                                        { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                                        (case (_lhsIpolVarMp) of
-                                                                                                                                         { _funcOpolVarMp | _funcOpolVarMp `seq` (True) ->
-                                                                                                                                         (case (_lhsIpolGam) of
-                                                                                                                                          { _funcOpolGam | _funcOpolGam `seq` (True) ->
-                                                                                                                                          (case (__tup228) of
-                                                                                                                                           { (_,_,_,_lUniq_17_polArg) | _lUniq_17_polArg `seq` (True) ->
-                                                                                                                                           (case (mkPolVar _lUniq_17_polArg) of
-                                                                                                                                            { _polArgVar | _polArgVar `seq` (True) ->
-                                                                                                                                            (case ([_polArgVar] `appArr` _lhsIknPolCtx) of
-                                                                                                                                             { _knFuncPol | _knFuncPol `seq` (True) ->
-                                                                                                                                             (case (_knFuncPol) of
-                                                                                                                                              { _funcOknPolCtx | _funcOknPolCtx `seq` (True) ->
-                                                                                                                                              (case (func_3 _funcOknPolCtx) of
-                                                                                                                                               { ( _funcIpolVarL,func_4) | True ->
-                                                                                                                                                   (case (func_4 _funcOpolGam _funcOpolVarMp) of
-                                                                                                                                                    { ( _funcImbStrictness,_funcIpolVarMp,func_5) | True ->
-                                                                                                                                                        (case (_funcIpolVarMp) of
-                                                                                                                                                         { _argOpolVarMp | _argOpolVarMp `seq` (True) ->
-                                                                                                                                                         (case (_lhsIpolGam) of
-                                                                                                                                                          { _argOpolGam | _argOpolGam `seq` (True) ->
-                                                                                                                                                          (case (_polArgVar) of
-                                                                                                                                                           { _argOknPolCtx | _argOknPolCtx `seq` (True) ->
-                                                                                                                                                           (case (arg_3 _argOknPolCtx) of
-                                                                                                                                                            { ( _argIpolVarL,arg_4) | True ->
-                                                                                                                                                                (case (arg_4 _argOpolGam _argOpolVarMp) of
-                                                                                                                                                                 { ( _argImbStrictness,_argIpolVarMp,arg_5) | True ->
-                                                                                                                                                                     (case (_argIpolVarMp) of
-                                                                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                                      (case ((let sem_TyExpr_App_5 :: T_TyExpr_5
-                                                                                                                                                                                  sem_TyExpr_App_5 =
-                                                                                                                                                                                      (\ _lhsItyKiGam ->
-                                                                                                                                                                                           _lhsItyKiGam `seq`
-                                                                                                                                                                                           ((case (_lhsItyKiGam) of
-                                                                                                                                                                                             { _funcOtyKiGam | _funcOtyKiGam `seq` (True) ->
-                                                                                                                                                                                             (case (func_5 _funcOtyKiGam) of
-                                                                                                                                                                                              { ( _funcIintlTyKiGam,_funcItyKiGam,func_6) | True ->
-                                                                                                                                                                                                  (case (_funcItyKiGam) of
-                                                                                                                                                                                                   { _argOtyKiGam | _argOtyKiGam `seq` (True) ->
-                                                                                                                                                                                                   (case (arg_5 _argOtyKiGam) of
-                                                                                                                                                                                                    { ( _argIintlTyKiGam,_argItyKiGam,arg_6) | True ->
-                                                                                                                                                                                                        (case (_funcIintlTyKiGam `gamUnion` _argIintlTyKiGam) of
-                                                                                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                                                         (case (_argItyKiGam) of
-                                                                                                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                                                          (case ((let sem_TyExpr_App_6 :: T_TyExpr_6
-                                                                                                                                                                                                                      sem_TyExpr_App_6 =
-                                                                                                                                                                                                                          (\ _lhsIkiVarMp ->
-                                                                                                                                                                                                                               _lhsIkiVarMp `seq`
-                                                                                                                                                                                                                               ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                                                                 { _funcOkiVarMp | _funcOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                 (case (func_6 _funcOkiVarMp) of
-                                                                                                                                                                                                                                  { ( _funcIgathTyVarPolGam,_funcIki,_funcIkiVarMp,_funcIpol,_funcItyVarWildMp,func_7) | True ->
-                                                                                                                                                                                                                                      (case (_funcIkiVarMp) of
-                                                                                                                                                                                                                                       { _argOkiVarMp | _argOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                       (case (arg_6 _argOkiVarMp) of
-                                                                                                                                                                                                                                        { ( _argIgathTyVarPolGam,_argIki,_argIkiVarMp,_argIpol,_argItyVarWildMp,arg_7) | True ->
-                                                                                                                                                                                                                                            (case (_funcIgathTyVarPolGam `gamUnion` _argIgathTyVarPolGam) of
-                                                                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                                                                             (case (__tup228) of
-                                                                                                                                                                                                                                              { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                                                                                                                                                                                                              (case (mkNewTyVar _lUniq) of
-                                                                                                                                                                                                                                               { _knResKi | _knResKi `seq` (True) ->
-                                                                                                                                                                                                                                               (case (_knResKi) of
-                                                                                                                                                                                                                                                { _ki | _ki `seq` (True) ->
-                                                                                                                                                                                                                                                (case (_ki) of
-                                                                                                                                                                                                                                                 { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                                                                                 (case (__tup228) of
-                                                                                                                                                                                                                                                  { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
-                                                                                                                                                                                                                                                  (case ([_argIki] `appArr` _knResKi) of
-                                                                                                                                                                                                                                                   { _knFunKi | _knFunKi `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (fitsIn weakFIOpts defaultFIEnv _lUniq2 _argIkiVarMp _funcIki _knFunKi) of
-                                                                                                                                                                                                                                                    { _fo_ | _fo_ `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (foVarMp _fo_ `varUpd` _argIkiVarMp) of
-                                                                                                                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_lhsIknPolCtx) of
-                                                                                                                                                                                                                                                      { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (_funcItyVarWildMp `Map.union` _argItyVarWildMp) of
-                                                                                                                                                                                                                                                       { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                                                                       (case ((let sem_TyExpr_App_7 :: T_TyExpr_7
-                                                                                                                                                                                                                                                                   sem_TyExpr_App_7 =
-                                                                                                                                                                                                                                                                       (\ _lhsIclGam ->
-                                                                                                                                                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                                                                                                                                                            ((case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                              { _argOclGam | _argOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                               { _funcOclGam | _funcOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (arg_7 _argOclGam) of
-                                                                                                                                                                                                                                                                                { ( _argIevTy,arg_8) | True ->
-                                                                                                                                                                                                                                                                                    (case (func_7 _funcOclGam) of
-                                                                                                                                                                                                                                                                                     { ( _funcIevTy,func_8) | True ->
-                                                                                                                                                                                                                                                                                         (case (Ty_App _funcIevTy _argIevTy) of
-                                                                                                                                                                                                                                                                                          { _evTy | _evTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_evTy) of
-                                                                                                                                                                                                                                                                                           { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case ((let sem_TyExpr_App_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                                                                                       sem_TyExpr_App_8 =
-                                                                                                                                                                                                                                                                                                           (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                                                                              _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                                                                              _lhsIkiGam
-                                                                                                                                                                                                                                                                                                              _lhsImoduleNm
-                                                                                                                                                                                                                                                                                                              _lhsIopts
-                                                                                                                                                                                                                                                                                                              _lhsIsysfEnv
-                                                                                                                                                                                                                                                                                                              _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                              _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                                                                              _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                                                                              _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                                                                                _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                                                                                (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                                                                                 (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                                                                  (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                                                                                   (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                                                                    (_lhsIopts `seq`
-                                                                                                                                                                                                                                                                                                                     (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                        (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                                                                          ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                            { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                            (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                             { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                              { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                              (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                               { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                                 { _argOopts | _argOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                  { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                  (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                                   { _argOkiGam | _argOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                    { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                     { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                      { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                      (case (arg_8 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOkiGam _argOmoduleNm _argOopts _argOsysfEnv _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                       { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIclMissNmS,_argIclNmS,_argIerrSq,_argIgathMentrelFilterMp,_argIpp,_argItyWildL) | True ->
-                                                                                                                                                                                                                                                                                                                                           (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                            { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                            (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                             { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                              { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                              (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                               { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                                                                                { _funcOsysfEnv | _funcOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                                                                                 { _funcOopts | _funcOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                 (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                                                                                  { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                                                                                   { _funcOkiGam | _funcOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                                                                                    { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                                                                                     { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                                                                                      { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                      (case (func_8 _funcOfinKiVarMp _funcOfinTyKiGam _funcOfinTyVarMp _funcOkiGam _funcOmoduleNm _funcOopts _funcOsysfEnv _funcOtyKiGlobFreeTvarS _funcOtyTyGlobFreeTvarS _funcOtyTyTySigFreeTvarS _funcOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                                                                                       { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIclMissNmS,_funcIclNmS,_funcIerrSq,_funcIgathMentrelFilterMp,_funcIpp,_funcItyWildL) | True ->
-                                                                                                                                                                                                                                                                                                                                                           (case (_funcIallErrSq `Seq.union` _argIallErrSq) of
-                                                                                                                                                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                            (case (mkExtAppPP  (_funcIappFunNm,_funcIappFunPP,_funcIappArgPPL)
-                                                                                                                                                                                                                                                                                                                                                                               (_argIappFunNm,_argIappFunPP,_argIappArgPPL,_argIpp)) of
-                                                                                                                                                                                                                                                                                                                                                             { __tup227 | __tup227 `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                             (case (__tup227) of
-                                                                                                                                                                                                                                                                                                                                                              { (_,_lhsOappArgPPL) | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                              (case (_funcIappFunNm) of
-                                                                                                                                                                                                                                                                                                                                                               { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                               (case (__tup227) of
-                                                                                                                                                                                                                                                                                                                                                                { (_lhsOappFunPP,_) | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                (case (_funcIclMissNmS `Set.union` _argIclMissNmS) of
-                                                                                                                                                                                                                                                                                                                                                                 { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                 (case (_funcIclNmS `Set.union` _argIclNmS) of
-                                                                                                                                                                                                                                                                                                                                                                  { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                  (case (_funcIpp >#< _argIpp) of
-                                                                                                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                   (case (rngLift _range mkNestErr' _pp [ _funcIerrSq, _argIerrSq
-                                                                                                                                                                                                                                                                                                                                                                                                        , foErrSq _fo_
-                                                                                                                                                                                                                                                                                                                                                                                                        ]) of
-                                                                                                                                                                                                                                                                                                                                                                    { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                    (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                                                                                     { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                     (case (_pp) of
-                                                                                                                                                                                                                                                                                                                                                                      { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                      (case (_funcItyWildL ++ _argItyWildL) of
-                                                                                                                                                                                                                                                                                                                                                                       { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                                                                                                   in  sem_TyExpr_App_8)) of
-                                                                                                                                                                                                                                                                                            { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                                                                                            ( _lhsOevTy,sem_TyExpr_8) }) }) }) }) }) }) })))
-                                                                                                                                                                                                                                                               in  sem_TyExpr_App_7)) of
-                                                                                                                                                                                                                                                        { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                                                                        ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
-                                                                                                                                                                                                                  in  sem_TyExpr_App_6)) of
-                                                                                                                                                                                                           { ( sem_TyExpr_6) | True ->
-                                                                                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) }) })))
-                                                                                                                                                                              in  sem_TyExpr_App_5)) of
-                                                                                                                                                                       { ( sem_TyExpr_5) | True ->
-                                                                                                                                                                       ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))
-                                                                                                                        in  sem_TyExpr_App_4)) of
-                                                                                                                 { ( sem_TyExpr_4) | True ->
-                                                                                                                 ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                                                 in  sem_TyExpr_App_3)) of
-                                                                                          { ( sem_TyExpr_3) | True ->
-                                                                                          ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) })))
-                                                            in  sem_TyExpr_App_2)) of
-                                                     { ( sem_TyExpr_2) | True ->
-                                                     ( _lhsOgUniq,sem_TyExpr_2) }) }) }) }) }) }) })))
-                        in  sem_TyExpr_App_1)) of
-                 { ( sem_TyExpr_1) | True ->
-                 ( _lhsOrange,sem_TyExpr_1) }) }) }) }) })
-
-sem_TyExpr_AppTop :: Range ->
-                     T_TyExpr ->
-                     T_TyExpr
-
-sem_TyExpr_AppTop hsrange_ tyExpr_ | hsrange_ `seq` (tyExpr_ `seq` (True)) =
-    (case (tyExpr_) of
-     { ( _tyExprIrange,tyExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_AppTop_1 :: T_TyExpr_1
-                       sem_TyExpr_AppTop_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _tyExprOgUniq | _tyExprOgUniq `seq` (True) ->
-                                  (case (tyExpr_1 _tyExprOgUniq) of
-                                   { ( _tyExprIgUniq,tyExpr_2) | True ->
-                                       (case (_tyExprIgUniq) of
-                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                        (case ((let sem_TyExpr_AppTop_2 :: T_TyExpr_2
-                                                    sem_TyExpr_AppTop_2 =
-                                                        (\ _lhsItyGam ->
-                                                             _lhsItyGam `seq`
-                                                             ((case (_lhsItyGam) of
-                                                               { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
-                                                               (case (tyExpr_2 _tyExprOtyGam) of
-                                                                { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
-                                                                    (case (_tyExprIty) of
-                                                                     { _lhsOty | _lhsOty `seq` (True) ->
-                                                                     (case (_tyExprItyGam) of
-                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                      (case ((let sem_TyExpr_AppTop_3 :: T_TyExpr_3
-                                                                                  sem_TyExpr_AppTop_3 =
-                                                                                      (\ _lhsIknPolCtx ->
-                                                                                           _lhsIknPolCtx `seq`
-                                                                                           ((case ([]) of
-                                                                                             { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                             (case ((let sem_TyExpr_AppTop_4 :: T_TyExpr_4
-                                                                                                         sem_TyExpr_AppTop_4 =
-                                                                                                             (\ _lhsIpolGam
-                                                                                                                _lhsIpolVarMp ->
-                                                                                                                  _lhsIpolGam `seq`
-                                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                                   ((case (Nothing) of
-                                                                                                                     { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                     (case (_lhsIpolVarMp) of
-                                                                                                                      { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_lhsIpolGam) of
-                                                                                                                       { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
-                                                                                                                       (case (_lhsIknPolCtx) of
-                                                                                                                        { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
-                                                                                                                        (case (tyExpr_3 _tyExprOknPolCtx) of
-                                                                                                                         { ( _tyExprIpolVarL,tyExpr_4) | True ->
-                                                                                                                             (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
-                                                                                                                              { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
-                                                                                                                                  (case (_tyExprIpolVarMp) of
-                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                   (case ((let sem_TyExpr_AppTop_5 :: T_TyExpr_5
-                                                                                                                                               sem_TyExpr_AppTop_5 =
-                                                                                                                                                   (\ _lhsItyKiGam ->
-                                                                                                                                                        _lhsItyKiGam `seq`
-                                                                                                                                                        ((case (_lhsItyKiGam) of
-                                                                                                                                                          { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                          (case (tyExpr_5 _tyExprOtyKiGam) of
-                                                                                                                                                           { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
-                                                                                                                                                               (case (_tyExprIintlTyKiGam) of
-                                                                                                                                                                { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                (case (_tyExprItyKiGam) of
-                                                                                                                                                                 { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                 (case ((let sem_TyExpr_AppTop_6 :: T_TyExpr_6
-                                                                                                                                                                             sem_TyExpr_AppTop_6 =
-                                                                                                                                                                                 (\ _lhsIkiVarMp ->
-                                                                                                                                                                                      _lhsIkiVarMp `seq`
-                                                                                                                                                                                      ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                        { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                        (case (tyExpr_6 _tyExprOkiVarMp) of
-                                                                                                                                                                                         { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
-                                                                                                                                                                                             (case (_tyExprIgathTyVarPolGam) of
-                                                                                                                                                                                              { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                              (case (_tyExprIki) of
-                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                               (case (_tyExprIkiVarMp) of
-                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                (case (_tyExprIpol) of
-                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                 (case (_tyExprItyVarWildMp) of
-                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                  (case ((let sem_TyExpr_AppTop_7 :: T_TyExpr_7
-                                                                                                                                                                                                              sem_TyExpr_AppTop_7 =
-                                                                                                                                                                                                                  (\ _lhsIclGam ->
-                                                                                                                                                                                                                       _lhsIclGam `seq`
-                                                                                                                                                                                                                       ((case (_lhsIclGam) of
-                                                                                                                                                                                                                         { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                         (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                          { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                              (case (_tyExprIevTy) of
-                                                                                                                                                                                                                               { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                               (case ((let sem_TyExpr_AppTop_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                           sem_TyExpr_AppTop_8 =
-                                                                                                                                                                                                                                               (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                  _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                  _lhsIkiGam
-                                                                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                                                                  _lhsIopts
-                                                                                                                                                                                                                                                  _lhsIsysfEnv
-                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                    _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                    (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                      (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                        (_lhsIopts `seq`
-                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                    { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                     { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                      { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                       { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                        { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                         { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                          { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                               (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (ppAppTop  (_tyExprIappFunNm,_tyExprIappFunPP)
-                                                                                                                                                                                                                                                                                                   _tyExprIappArgPPL _tyExprIpp) of
-                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (rngLift _range mkNestErr' _pp [_tyExprIerrSq]) of
-                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_pp) of
-                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_tyExprItyWildL) of
-                                                                                                                                                                                                                                                                                          { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                                       in  sem_TyExpr_AppTop_8)) of
-                                                                                                                                                                                                                                { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                                ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
-                                                                                                                                                                                                          in  sem_TyExpr_AppTop_7)) of
-                                                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                                                         in  sem_TyExpr_AppTop_6)) of
-                                                                                                                                                                  { ( sem_TyExpr_6) | True ->
-                                                                                                                                                                  ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
-                                                                                                                                           in  sem_TyExpr_AppTop_5)) of
-                                                                                                                                    { ( sem_TyExpr_5) | True ->
-                                                                                                                                    ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
-                                                                                                     in  sem_TyExpr_AppTop_4)) of
-                                                                                              { ( sem_TyExpr_4) | True ->
-                                                                                              ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                              in  sem_TyExpr_AppTop_3)) of
-                                                                       { ( sem_TyExpr_3) | True ->
-                                                                       ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
-                                                in  sem_TyExpr_AppTop_2)) of
-                                         { ( sem_TyExpr_2) | True ->
-                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
-                   in  sem_TyExpr_AppTop_1)) of
-            { ( sem_TyExpr_1) | True ->
-            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
-
-sem_TyExpr_Parens :: Range ->
-                     T_TyExpr ->
-                     T_TyExpr
-
-sem_TyExpr_Parens hsrange_ tyExpr_ | hsrange_ `seq` (tyExpr_ `seq` (True)) =
-    (case (tyExpr_) of
-     { ( _tyExprIrange,tyExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_Parens_1 :: T_TyExpr_1
-                       sem_TyExpr_Parens_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _tyExprOgUniq | _tyExprOgUniq `seq` (True) ->
-                                  (case (tyExpr_1 _tyExprOgUniq) of
-                                   { ( _tyExprIgUniq,tyExpr_2) | True ->
-                                       (case (_tyExprIgUniq) of
-                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                        (case ((let sem_TyExpr_Parens_2 :: T_TyExpr_2
-                                                    sem_TyExpr_Parens_2 =
-                                                        (\ _lhsItyGam ->
-                                                             _lhsItyGam `seq`
-                                                             ((case (_lhsItyGam) of
-                                                               { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
-                                                               (case (tyExpr_2 _tyExprOtyGam) of
-                                                                { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
-                                                                    (case (_tyExprIty) of
-                                                                     { _lhsOty | _lhsOty `seq` (True) ->
-                                                                     (case (_tyExprItyGam) of
-                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                      (case ((let sem_TyExpr_Parens_3 :: T_TyExpr_3
-                                                                                  sem_TyExpr_Parens_3 =
-                                                                                      (\ _lhsIknPolCtx ->
-                                                                                           _lhsIknPolCtx `seq`
-                                                                                           ((case ([]) of
-                                                                                             { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                             (case ((let sem_TyExpr_Parens_4 :: T_TyExpr_4
-                                                                                                         sem_TyExpr_Parens_4 =
-                                                                                                             (\ _lhsIpolGam
-                                                                                                                _lhsIpolVarMp ->
-                                                                                                                  _lhsIpolGam `seq`
-                                                                                                                  (_lhsIpolVarMp `seq`
-                                                                                                                   ((case (Nothing) of
-                                                                                                                     { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                     (case (_lhsIpolVarMp) of
-                                                                                                                      { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
-                                                                                                                      (case (_lhsIpolGam) of
-                                                                                                                       { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
-                                                                                                                       (case (_lhsIknPolCtx) of
-                                                                                                                        { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
-                                                                                                                        (case (tyExpr_3 _tyExprOknPolCtx) of
-                                                                                                                         { ( _tyExprIpolVarL,tyExpr_4) | True ->
-                                                                                                                             (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
-                                                                                                                              { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
-                                                                                                                                  (case (_tyExprIpolVarMp) of
-                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                   (case ((let sem_TyExpr_Parens_5 :: T_TyExpr_5
-                                                                                                                                               sem_TyExpr_Parens_5 =
-                                                                                                                                                   (\ _lhsItyKiGam ->
-                                                                                                                                                        _lhsItyKiGam `seq`
-                                                                                                                                                        ((case (_lhsItyKiGam) of
-                                                                                                                                                          { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                          (case (tyExpr_5 _tyExprOtyKiGam) of
-                                                                                                                                                           { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
-                                                                                                                                                               (case (_tyExprIintlTyKiGam) of
-                                                                                                                                                                { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                (case (_tyExprItyKiGam) of
-                                                                                                                                                                 { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                 (case ((let sem_TyExpr_Parens_6 :: T_TyExpr_6
-                                                                                                                                                                             sem_TyExpr_Parens_6 =
-                                                                                                                                                                                 (\ _lhsIkiVarMp ->
-                                                                                                                                                                                      _lhsIkiVarMp `seq`
-                                                                                                                                                                                      ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                        { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                        (case (tyExpr_6 _tyExprOkiVarMp) of
-                                                                                                                                                                                         { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
-                                                                                                                                                                                             (case (_tyExprIgathTyVarPolGam) of
-                                                                                                                                                                                              { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                              (case (_tyExprIki) of
-                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                               (case (_tyExprIkiVarMp) of
-                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                (case (_tyExprIpol) of
-                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                 (case (_tyExprItyVarWildMp) of
-                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                  (case ((let sem_TyExpr_Parens_7 :: T_TyExpr_7
-                                                                                                                                                                                                              sem_TyExpr_Parens_7 =
-                                                                                                                                                                                                                  (\ _lhsIclGam ->
-                                                                                                                                                                                                                       _lhsIclGam `seq`
-                                                                                                                                                                                                                       ((case (_lhsIclGam) of
-                                                                                                                                                                                                                         { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                         (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                          { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                              (case (_tyExprIevTy) of
-                                                                                                                                                                                                                               { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                               (case ((let sem_TyExpr_Parens_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                           sem_TyExpr_Parens_8 =
-                                                                                                                                                                                                                                               (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                  _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                  _lhsIkiGam
-                                                                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                                                                  _lhsIopts
-                                                                                                                                                                                                                                                  _lhsIsysfEnv
-                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                    _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                    (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                      (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                        (_lhsIopts `seq`
-                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                    { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                     { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                      { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                       { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                        { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                         { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                          { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                               (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (ppParens _tyExprIpp) of
-                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_tyExprIerrSq) of
-                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_pp) of
-                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_tyExprItyWildL) of
-                                                                                                                                                                                                                                                                                          { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                                       in  sem_TyExpr_Parens_8)) of
-                                                                                                                                                                                                                                { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                                ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
-                                                                                                                                                                                                          in  sem_TyExpr_Parens_7)) of
-                                                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                                                         in  sem_TyExpr_Parens_6)) of
-                                                                                                                                                                  { ( sem_TyExpr_6) | True ->
-                                                                                                                                                                  ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
-                                                                                                                                           in  sem_TyExpr_Parens_5)) of
-                                                                                                                                    { ( sem_TyExpr_5) | True ->
-                                                                                                                                    ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
-                                                                                                     in  sem_TyExpr_Parens_4)) of
-                                                                                              { ( sem_TyExpr_4) | True ->
-                                                                                              ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                              in  sem_TyExpr_Parens_3)) of
-                                                                       { ( sem_TyExpr_3) | True ->
-                                                                       ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
-                                                in  sem_TyExpr_Parens_2)) of
-                                         { ( sem_TyExpr_2) | True ->
-                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
-                   in  sem_TyExpr_Parens_1)) of
-            { ( sem_TyExpr_1) | True ->
-            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
-
-sem_TyExpr_Ann :: Range ->
-                  T_TyExprAnn ->
-                  T_TyExpr ->
-                  T_TyExpr
-
-sem_TyExpr_Ann hsrange_ ann_ tyExpr_ | hsrange_ `seq` (ann_ `seq` (tyExpr_ `seq` (True))) =
-    (case (tyExpr_) of
-     { ( _tyExprIrange,tyExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_Ann_1 :: T_TyExpr_1
-                       sem_TyExpr_Ann_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _tyExprOgUniq | _tyExprOgUniq `seq` (True) ->
-                                  (case (tyExpr_1 _tyExprOgUniq) of
-                                   { ( _tyExprIgUniq,tyExpr_2) | True ->
-                                       (case (_tyExprIgUniq) of
-                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                        (case ((let sem_TyExpr_Ann_2 :: T_TyExpr_2
-                                                    sem_TyExpr_Ann_2 =
-                                                        (\ _lhsItyGam ->
-                                                             _lhsItyGam `seq`
-                                                             ((case (_lhsItyGam) of
-                                                               { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
-                                                               (case (tyExpr_2 _tyExprOtyGam) of
-                                                                { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
-                                                                    (case (ann_) of
-                                                                     { ( _annIann,_annIisEmpty,_annImbStrictness,_annIpp) | True ->
-                                                                         (case (if _annIisEmpty
-                                                                                then _tyExprIty
-                                                                                else Ty_Ann _annIann _tyExprIty) of
-                                                                          { _ty | _ty `seq` (True) ->
-                                                                          (case (_ty) of
-                                                                           { _lhsOty | _lhsOty `seq` (True) ->
-                                                                           (case (_tyExprItyGam) of
-                                                                            { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                            (case ((let sem_TyExpr_Ann_3 :: T_TyExpr_3
-                                                                                        sem_TyExpr_Ann_3 =
-                                                                                            (\ _lhsIknPolCtx ->
-                                                                                                 _lhsIknPolCtx `seq`
-                                                                                                 ((case ([]) of
-                                                                                                   { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                                   (case ((let sem_TyExpr_Ann_4 :: T_TyExpr_4
-                                                                                                               sem_TyExpr_Ann_4 =
-                                                                                                                   (\ _lhsIpolGam
-                                                                                                                      _lhsIpolVarMp ->
-                                                                                                                        _lhsIpolGam `seq`
-                                                                                                                        (_lhsIpolVarMp `seq`
-                                                                                                                         ((case (_lhsIknPolCtx) of
-                                                                                                                           { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
-                                                                                                                           (case (tyExpr_3 _tyExprOknPolCtx) of
-                                                                                                                            { ( _tyExprIpolVarL,tyExpr_4) | True ->
-                                                                                                                                (case (_lhsIpolVarMp) of
-                                                                                                                                 { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
-                                                                                                                                 (case (_lhsIpolGam) of
-                                                                                                                                  { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
-                                                                                                                                  (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
-                                                                                                                                   { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
-                                                                                                                                       (case (_annImbStrictness <|> _tyExprImbStrictness) of
-                                                                                                                                        { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                                        (case (_tyExprIpolVarMp) of
-                                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                         (case ((let sem_TyExpr_Ann_5 :: T_TyExpr_5
-                                                                                                                                                     sem_TyExpr_Ann_5 =
-                                                                                                                                                         (\ _lhsItyKiGam ->
-                                                                                                                                                              _lhsItyKiGam `seq`
-                                                                                                                                                              ((case (_lhsItyKiGam) of
-                                                                                                                                                                { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                                (case (tyExpr_5 _tyExprOtyKiGam) of
-                                                                                                                                                                 { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
-                                                                                                                                                                     (case (_tyExprIintlTyKiGam) of
-                                                                                                                                                                      { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                      (case (_tyExprItyKiGam) of
-                                                                                                                                                                       { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                       (case ((let sem_TyExpr_Ann_6 :: T_TyExpr_6
-                                                                                                                                                                                   sem_TyExpr_Ann_6 =
-                                                                                                                                                                                       (\ _lhsIkiVarMp ->
-                                                                                                                                                                                            _lhsIkiVarMp `seq`
-                                                                                                                                                                                            ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                              { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                              (case (tyExpr_6 _tyExprOkiVarMp) of
-                                                                                                                                                                                               { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
-                                                                                                                                                                                                   (case (_tyExprIgathTyVarPolGam) of
-                                                                                                                                                                                                    { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                                    (case (_tyExprIki) of
-                                                                                                                                                                                                     { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                                     (case (_tyExprIkiVarMp) of
-                                                                                                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                      (case (_tyExprIpol) of
-                                                                                                                                                                                                       { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                       (case (_tyExprItyVarWildMp) of
-                                                                                                                                                                                                        { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                        (case ((let sem_TyExpr_Ann_7 :: T_TyExpr_7
-                                                                                                                                                                                                                    sem_TyExpr_Ann_7 =
-                                                                                                                                                                                                                        (\ _lhsIclGam ->
-                                                                                                                                                                                                                             _lhsIclGam `seq`
-                                                                                                                                                                                                                             ((case (_lhsIclGam) of
-                                                                                                                                                                                                                               { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                               (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                                { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                                    (case (_tyExprIevTy) of
-                                                                                                                                                                                                                                     { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                                     (case ((let sem_TyExpr_Ann_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                                 sem_TyExpr_Ann_8 =
-                                                                                                                                                                                                                                                     (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                        _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                        _lhsIkiGam
-                                                                                                                                                                                                                                                        _lhsImoduleNm
-                                                                                                                                                                                                                                                        _lhsIopts
-                                                                                                                                                                                                                                                        _lhsIsysfEnv
-                                                                                                                                                                                                                                                        _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                        _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                        _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                        _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                          _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                          (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                           (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                            (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                             (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                              (_lhsIopts `seq`
-                                                                                                                                                                                                                                                               (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                 (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                  (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                   (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                    ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                      { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                       { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                        { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                         { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                          { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                           { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                            { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                             { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                              { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                               { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                 { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                                     (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                      { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case ([]) of
-                                                                                                                                                                                                                                                                                       { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                        { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_annIpp >#< _tyExprIpp) of
-                                                                                                                                                                                                                                                                                         { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_pp) of
-                                                                                                                                                                                                                                                                                          { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (_tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                           { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                            { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_tyExprIerrSq) of
-                                                                                                                                                                                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_pp) of
-                                                                                                                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_tyExprItyWildL) of
-                                                                                                                                                                                                                                                                                                { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                                             in  sem_TyExpr_Ann_8)) of
-                                                                                                                                                                                                                                      { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                                      ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
-                                                                                                                                                                                                                in  sem_TyExpr_Ann_7)) of
-                                                                                                                                                                                                         { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                         ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                                                               in  sem_TyExpr_Ann_6)) of
-                                                                                                                                                                        { ( sem_TyExpr_6) | True ->
-                                                                                                                                                                        ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
-                                                                                                                                                 in  sem_TyExpr_Ann_5)) of
-                                                                                                                                          { ( sem_TyExpr_5) | True ->
-                                                                                                                                          ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
-                                                                                                           in  sem_TyExpr_Ann_4)) of
-                                                                                                    { ( sem_TyExpr_4) | True ->
-                                                                                                    ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                                    in  sem_TyExpr_Ann_3)) of
-                                                                             { ( sem_TyExpr_3) | True ->
-                                                                             ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
-                                                in  sem_TyExpr_Ann_2)) of
-                                         { ( sem_TyExpr_2) | True ->
-                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
-                   in  sem_TyExpr_Ann_1)) of
-            { ( sem_TyExpr_1) | True ->
-            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
-
-sem_TyExpr_Wild :: Range ->
-                   T_TyExpr
-
-sem_TyExpr_Wild hsrange_ | hsrange_ `seq` (True) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_Wild_1 :: T_TyExpr_1
-                  sem_TyExpr_Wild_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup229 | __tup229 `seq` (True) ->
-                             (case (__tup229) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_TyExpr_Wild_2 :: T_TyExpr_2
-                                          sem_TyExpr_Wild_2 =
-                                              (\ _lhsItyGam ->
-                                                   _lhsItyGam `seq`
-                                                   ((case (__tup229) of
-                                                     { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                     (case (_lUniq) of
-                                                      { _tyVarId | _tyVarId `seq` (True) ->
-                                                      (case (mkNewTyVar _tyVarId) of
-                                                       { _tvarv | _tvarv `seq` (True) ->
-                                                       (case (mkTGI _tvarv) of
-                                                        { _tgi_ | _tgi_ `seq` (True) ->
-                                                        (case (tgiTy _tgi_) of
-                                                         { _ty | _ty `seq` (True) ->
-                                                         (case (_ty) of
-                                                          { _lhsOty | _lhsOty `seq` (True) ->
-                                                          (case (_lhsItyGam) of
-                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                           (case ((let sem_TyExpr_Wild_3 :: T_TyExpr_3
-                                                                       sem_TyExpr_Wild_3 =
-                                                                           (\ _lhsIknPolCtx ->
-                                                                                _lhsIknPolCtx `seq`
-                                                                                ((case ([]) of
-                                                                                  { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                  (case ((let sem_TyExpr_Wild_4 :: T_TyExpr_4
-                                                                                              sem_TyExpr_Wild_4 =
-                                                                                                  (\ _lhsIpolGam
-                                                                                                     _lhsIpolVarMp ->
-                                                                                                       _lhsIpolGam `seq`
-                                                                                                       (_lhsIpolVarMp `seq`
-                                                                                                        ((case (Nothing) of
-                                                                                                          { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                          (case (_lhsIpolVarMp) of
-                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                           (case ((let sem_TyExpr_Wild_5 :: T_TyExpr_5
-                                                                                                                       sem_TyExpr_Wild_5 =
-                                                                                                                           (\ _lhsItyKiGam ->
-                                                                                                                                _lhsItyKiGam `seq`
-                                                                                                                                ((case (emptyGam) of
-                                                                                                                                  { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                  (case (_lhsItyKiGam) of
-                                                                                                                                   { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                   (case ((let sem_TyExpr_Wild_6 :: T_TyExpr_6
-                                                                                                                                               sem_TyExpr_Wild_6 =
-                                                                                                                                                   (\ _lhsIkiVarMp ->
-                                                                                                                                                        _lhsIkiVarMp `seq`
-                                                                                                                                                        ((case (emptyGam) of
-                                                                                                                                                          { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                          (case (TyKiGamInfo _tvarv) of
-                                                                                                                                                           { _tkgi_ | _tkgi_ `seq` (True) ->
-                                                                                                                                                           (case (tkgiKi _tkgi_) of
-                                                                                                                                                            { _ki | _ki `seq` (True) ->
-                                                                                                                                                            (case (_ki) of
-                                                                                                                                                             { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                             (case (_lhsIkiVarMp) of
-                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                              (case (_lhsIknPolCtx) of
-                                                                                                                                                               { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                               (case (Map.singleton _tyVarId TyVarWild_NoQuantTyExpr_YesQuantLetBinding) of
-                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                (case ((let sem_TyExpr_Wild_7 :: T_TyExpr_7
-                                                                                                                                                                            sem_TyExpr_Wild_7 =
-                                                                                                                                                                                (\ _lhsIclGam ->
-                                                                                                                                                                                     _lhsIclGam `seq`
-                                                                                                                                                                                     ((case (_ty) of
-                                                                                                                                                                                       { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                       (case ((let sem_TyExpr_Wild_8 :: T_TyExpr_8
-                                                                                                                                                                                                   sem_TyExpr_Wild_8 =
-                                                                                                                                                                                                       (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                                                          _lhsIfinTyVarMp
-                                                                                                                                                                                                          _lhsIkiGam
-                                                                                                                                                                                                          _lhsImoduleNm
-                                                                                                                                                                                                          _lhsIopts
-                                                                                                                                                                                                          _lhsIsysfEnv
-                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                            _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                              (_lhsIkiGam `seq`
-                                                                                                                                                                                                               (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                (_lhsIopts `seq`
-                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                      ((case (Seq.empty) of
-                                                                                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                        (case ([]) of
-                                                                                                                                                                                                                         { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                         (case (hsnUnknown) of
-                                                                                                                                                                                                                          { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                          (case (pp "...") of
-                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                           (case (_pp) of
-                                                                                                                                                                                                                            { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                            (case (Set.empty) of
-                                                                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                             (case (Set.empty) of
-                                                                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                              (case (Seq.empty) of
-                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                               (case (Map.empty) of
-                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                (case (_pp) of
-                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                  { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                               in  sem_TyExpr_Wild_8)) of
-                                                                                                                                                                                        { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                        ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                        in  sem_TyExpr_Wild_7)) of
-                                                                                                                                                                 { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                           in  sem_TyExpr_Wild_6)) of
-                                                                                                                                    { ( sem_TyExpr_6) | True ->
-                                                                                                                                    ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
-                                                                                                                   in  sem_TyExpr_Wild_5)) of
-                                                                                                            { ( sem_TyExpr_5) | True ->
-                                                                                                            ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
-                                                                                          in  sem_TyExpr_Wild_4)) of
-                                                                                   { ( sem_TyExpr_4) | True ->
-                                                                                   ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                   in  sem_TyExpr_Wild_3)) of
-                                                            { ( sem_TyExpr_3) | True ->
-                                                            ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) })))
-                                      in  sem_TyExpr_Wild_2)) of
-                               { ( sem_TyExpr_2) | True ->
-                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
-              in  sem_TyExpr_Wild_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_Mono :: Range ->
-                   T_TyExpr
-
-sem_TyExpr_Mono hsrange_ | hsrange_ `seq` (True) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_Mono_1 :: T_TyExpr_1
-                  sem_TyExpr_Mono_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup230 | __tup230 `seq` (True) ->
-                             (case (__tup230) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_TyExpr_Mono_2 :: T_TyExpr_2
-                                          sem_TyExpr_Mono_2 =
-                                              (\ _lhsItyGam ->
-                                                   _lhsItyGam `seq`
-                                                   ((case (__tup230) of
-                                                     { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                     (case (_lUniq) of
-                                                      { _tyVarId | _tyVarId `seq` (True) ->
-                                                      (case (mkNewTyVar _tyVarId) of
-                                                       { _tvarv | _tvarv `seq` (True) ->
-                                                       (case (mkTGI (Ty_Ann TyAnn_Mono _tvarv)) of
-                                                        { _tgi_ | _tgi_ `seq` (True) ->
-                                                        (case (tgiTy _tgi_) of
-                                                         { _ty | _ty `seq` (True) ->
-                                                         (case (_ty) of
-                                                          { _lhsOty | _lhsOty `seq` (True) ->
-                                                          (case (_lhsItyGam) of
-                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                           (case ((let sem_TyExpr_Mono_3 :: T_TyExpr_3
-                                                                       sem_TyExpr_Mono_3 =
-                                                                           (\ _lhsIknPolCtx ->
-                                                                                _lhsIknPolCtx `seq`
-                                                                                ((case ([]) of
-                                                                                  { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                  (case ((let sem_TyExpr_Mono_4 :: T_TyExpr_4
-                                                                                              sem_TyExpr_Mono_4 =
-                                                                                                  (\ _lhsIpolGam
-                                                                                                     _lhsIpolVarMp ->
-                                                                                                       _lhsIpolGam `seq`
-                                                                                                       (_lhsIpolVarMp `seq`
-                                                                                                        ((case (Nothing) of
-                                                                                                          { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                          (case (_lhsIpolVarMp) of
-                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                           (case ((let sem_TyExpr_Mono_5 :: T_TyExpr_5
-                                                                                                                       sem_TyExpr_Mono_5 =
-                                                                                                                           (\ _lhsItyKiGam ->
-                                                                                                                                _lhsItyKiGam `seq`
-                                                                                                                                ((case (emptyGam) of
-                                                                                                                                  { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                  (case (_lhsItyKiGam) of
-                                                                                                                                   { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                   (case ((let sem_TyExpr_Mono_6 :: T_TyExpr_6
-                                                                                                                                               sem_TyExpr_Mono_6 =
-                                                                                                                                                   (\ _lhsIkiVarMp ->
-                                                                                                                                                        _lhsIkiVarMp `seq`
-                                                                                                                                                        ((case (emptyGam) of
-                                                                                                                                                          { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                          (case (TyKiGamInfo _tvarv) of
-                                                                                                                                                           { _tkgi_ | _tkgi_ `seq` (True) ->
-                                                                                                                                                           (case (tkgiKi _tkgi_) of
-                                                                                                                                                            { _ki | _ki `seq` (True) ->
-                                                                                                                                                            (case (_ki) of
-                                                                                                                                                             { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                             (case (_lhsIkiVarMp) of
-                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                              (case (_lhsIknPolCtx) of
-                                                                                                                                                               { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                               (case (Map.singleton _tyVarId TyVarWild_NoQuantTyExpr_NoQuantLetBinding) of
-                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                (case ((let sem_TyExpr_Mono_7 :: T_TyExpr_7
-                                                                                                                                                                            sem_TyExpr_Mono_7 =
-                                                                                                                                                                                (\ _lhsIclGam ->
-                                                                                                                                                                                     _lhsIclGam `seq`
-                                                                                                                                                                                     ((case (_ty) of
-                                                                                                                                                                                       { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                       (case ((let sem_TyExpr_Mono_8 :: T_TyExpr_8
-                                                                                                                                                                                                   sem_TyExpr_Mono_8 =
-                                                                                                                                                                                                       (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                                                          _lhsIfinTyVarMp
-                                                                                                                                                                                                          _lhsIkiGam
-                                                                                                                                                                                                          _lhsImoduleNm
-                                                                                                                                                                                                          _lhsIopts
-                                                                                                                                                                                                          _lhsIsysfEnv
-                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                            _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                              (_lhsIkiGam `seq`
-                                                                                                                                                                                                               (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                (_lhsIopts `seq`
-                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                      ((case (Seq.empty) of
-                                                                                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                        (case ([]) of
-                                                                                                                                                                                                                         { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                         (case (hsnUnknown) of
-                                                                                                                                                                                                                          { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                          (case (pp "%...") of
-                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                           (case (_pp) of
-                                                                                                                                                                                                                            { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                            (case (Set.empty) of
-                                                                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                             (case (Set.empty) of
-                                                                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                              (case (Seq.empty) of
-                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                               (case (Map.empty) of
-                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                (case (_pp) of
-                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                 (case ([]) of
-                                                                                                                                                                                                                                  { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                  ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                               in  sem_TyExpr_Mono_8)) of
-                                                                                                                                                                                        { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                        ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                        in  sem_TyExpr_Mono_7)) of
-                                                                                                                                                                 { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                           in  sem_TyExpr_Mono_6)) of
-                                                                                                                                    { ( sem_TyExpr_6) | True ->
-                                                                                                                                    ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
-                                                                                                                   in  sem_TyExpr_Mono_5)) of
-                                                                                                            { ( sem_TyExpr_5) | True ->
-                                                                                                            ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
-                                                                                          in  sem_TyExpr_Mono_4)) of
-                                                                                   { ( sem_TyExpr_4) | True ->
-                                                                                   ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                   in  sem_TyExpr_Mono_3)) of
-                                                            { ( sem_TyExpr_3) | True ->
-                                                            ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) })))
-                                      in  sem_TyExpr_Mono_2)) of
-                               { ( sem_TyExpr_2) | True ->
-                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
-              in  sem_TyExpr_Mono_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_Var :: Range ->
-                  HsName ->
-                  T_TyExpr
-
-sem_TyExpr_Var hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_Var_1 :: T_TyExpr_1
-                  sem_TyExpr_Var_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_17_fitsIn_pol) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_17_fitsIn_pol,lUniq_ki)}}} )) of
-                             { __tup235 | __tup235 `seq` (True) ->
-                             (case (__tup235) of
-                              { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_TyExpr_Var_2 :: T_TyExpr_2
-                                          sem_TyExpr_Var_2 =
-                                              (\ _lhsItyGam ->
-                                                   _lhsItyGam `seq`
-                                                   ((case (__tup235) of
-                                                     { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
-                                                     (case (tyGamLookupOrAdd _lUniq nm_ _lhsItyGam _lhsItyGam) of
-                                                      { __tup233 | __tup233 `seq` (True) ->
-                                                      (case (__tup233) of
-                                                       { (_tgi_,_) | _tgi_ `seq` (True) ->
-                                                       (case (tgiTy _tgi_) of
-                                                        { _ty | _ty `seq` (True) ->
-                                                        (case (_ty) of
-                                                         { _lhsOty | _lhsOty `seq` (True) ->
-                                                         (case (__tup233) of
-                                                          { (_,_lhsOtyGam) | _lhsOtyGam `seq` (True) ->
-                                                          (case ((let sem_TyExpr_Var_3 :: T_TyExpr_3
-                                                                      sem_TyExpr_Var_3 =
-                                                                          (\ _lhsIknPolCtx ->
-                                                                               _lhsIknPolCtx `seq`
-                                                                               ((case ([_lhsIknPolCtx]) of
-                                                                                 { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                 (case ((let sem_TyExpr_Var_4 :: T_TyExpr_4
-                                                                                             sem_TyExpr_Var_4 =
-                                                                                                 (\ _lhsIpolGam
-                                                                                                    _lhsIpolVarMp ->
-                                                                                                      _lhsIpolGam `seq`
-                                                                                                      (_lhsIpolVarMp `seq`
-                                                                                                       ((case (Nothing) of
-                                                                                                         { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                         (case (__tup235) of
-                                                                                                          { (_,_,_lUniq_17_fitsIn_pol,_) | _lUniq_17_fitsIn_pol `seq` (True) ->
-                                                                                                          (case (polGamLookupErr nm_ _lhsIpolGam) of
-                                                                                                           { __tup231 | __tup231 `seq` (True) ->
-                                                                                                           (case (__tup231) of
-                                                                                                            { (_pgi_,_) | _pgi_ `seq` (True) ->
-                                                                                                            (case (pgiPol _pgi_) of
-                                                                                                             { _polFromEnv | _polFromEnv `seq` (True) ->
-                                                                                                             (case (fitsIn weakFIOpts defaultFIEnv _lUniq_17_fitsIn_pol _lhsIpolVarMp _polFromEnv _lhsIknPolCtx) of
-                                                                                                              { _foPol | _foPol `seq` (True) ->
-                                                                                                              (case (foVarMp _foPol `varUpd` _lhsIpolVarMp) of
-                                                                                                               { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                               (case ((let sem_TyExpr_Var_5 :: T_TyExpr_5
-                                                                                                                           sem_TyExpr_Var_5 =
-                                                                                                                               (\ _lhsItyKiGam ->
-                                                                                                                                    _lhsItyKiGam `seq`
-                                                                                                                                    ((case (__tup235) of
-                                                                                                                                      { (_,_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
-                                                                                                                                      (case (tyKiGamLookupOrAdd _lUniq_ki (tgiTy _tgi_) _lhsItyKiGam) of
-                                                                                                                                       { __tup234 | __tup234 `seq` (True) ->
-                                                                                                                                       (case (__tup234) of
-                                                                                                                                        { (_,_,_tyKiGamNew) | _tyKiGamNew `seq` (True) ->
-                                                                                                                                        (case (_tyKiGamNew) of
-                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                         (case (__tup234) of
-                                                                                                                                          { (_,_lhsOtyKiGam,_) | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                          (case ((let sem_TyExpr_Var_6 :: T_TyExpr_6
-                                                                                                                                                      sem_TyExpr_Var_6 =
-                                                                                                                                                          (\ _lhsIkiVarMp ->
-                                                                                                                                                               _lhsIkiVarMp `seq`
-                                                                                                                                                               ((case (gamSingleton nm_ (mkPGI _lhsIknPolCtx)) of
-                                                                                                                                                                 { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                 (case (__tup234) of
-                                                                                                                                                                  { (_tkgi_,_,_) | _tkgi_ `seq` (True) ->
-                                                                                                                                                                  (case (tkgiKi _tkgi_) of
-                                                                                                                                                                   { _ki | _ki `seq` (True) ->
-                                                                                                                                                                   (case (_ki) of
-                                                                                                                                                                    { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                    (case (_lhsIkiVarMp) of
-                                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                     (case (foTy _foPol) of
-                                                                                                                                                                      { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                      (case (Map.empty) of
-                                                                                                                                                                       { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                       (case ((let sem_TyExpr_Var_7 :: T_TyExpr_7
-                                                                                                                                                                                   sem_TyExpr_Var_7 =
-                                                                                                                                                                                       (\ _lhsIclGam ->
-                                                                                                                                                                                            _lhsIclGam `seq`
-                                                                                                                                                                                            ((case (_ty) of
-                                                                                                                                                                                              { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                              (case ((let sem_TyExpr_Var_8 :: T_TyExpr_8
-                                                                                                                                                                                                          sem_TyExpr_Var_8 =
-                                                                                                                                                                                                              (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                 _lhsIfinTyKiGam
-                                                                                                                                                                                                                 _lhsIfinTyVarMp
-                                                                                                                                                                                                                 _lhsIkiGam
-                                                                                                                                                                                                                 _lhsImoduleNm
-                                                                                                                                                                                                                 _lhsIopts
-                                                                                                                                                                                                                 _lhsIsysfEnv
-                                                                                                                                                                                                                 _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                 _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                 _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                 _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                   _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                   (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                    (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                     (_lhsIkiGam `seq`
-                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                       (_lhsIopts `seq`
-                                                                                                                                                                                                                        (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                          (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                           (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                            (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                             ((case (Seq.empty) of
-                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                               (case ([]) of
-                                                                                                                                                                                                                                { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                (case (hsnUnknown) of
-                                                                                                                                                                                                                                 { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                 (case (pp nm_) of
-                                                                                                                                                                                                                                  { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                  (case (_pp) of
-                                                                                                                                                                                                                                   { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                   (case (Set.empty) of
-                                                                                                                                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                    (case (Set.empty) of
-                                                                                                                                                                                                                                     { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                     (case (rngLift _range mkNestErr' _pp [foErrSq _foPol    ]) of
-                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                      (case (Map.empty) of
-                                                                                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                        (case ([]) of
-                                                                                                                                                                                                                                         { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                         ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                      in  sem_TyExpr_Var_8)) of
-                                                                                                                                                                                               { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                               ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                               in  sem_TyExpr_Var_7)) of
-                                                                                                                                                                        { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                        ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                                  in  sem_TyExpr_Var_6)) of
-                                                                                                                                           { ( sem_TyExpr_6) | True ->
-                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) })))
-                                                                                                                       in  sem_TyExpr_Var_5)) of
-                                                                                                                { ( sem_TyExpr_5) | True ->
-                                                                                                                ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
-                                                                                         in  sem_TyExpr_Var_4)) of
-                                                                                  { ( sem_TyExpr_4) | True ->
-                                                                                  ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                  in  sem_TyExpr_Var_3)) of
-                                                           { ( sem_TyExpr_3) | True ->
-                                                           ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
-                                      in  sem_TyExpr_Var_2)) of
-                               { ( sem_TyExpr_2) | True ->
-                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
-              in  sem_TyExpr_Var_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_VarWild :: Range ->
-                      HsName ->
-                      T_TyExpr
-
-sem_TyExpr_VarWild hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_VarWild_1 :: T_TyExpr_1
-                  sem_TyExpr_VarWild_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_ki)}} )) of
-                             { __tup239 | __tup239 `seq` (True) ->
-                             (case (__tup239) of
-                              { (_lhsOgUniq,_,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_TyExpr_VarWild_2 :: T_TyExpr_2
-                                          sem_TyExpr_VarWild_2 =
-                                              (\ _lhsItyGam ->
-                                                   _lhsItyGam `seq`
-                                                   ((case (__tup239) of
-                                                     { (_,_lUniq,_) | _lUniq `seq` (True) ->
-                                                     (case (tyGamLookupOrAdd _lUniq nm_ _lhsItyGam _lhsItyGam) of
-                                                      { __tup237 | __tup237 `seq` (True) ->
-                                                      (case (__tup237) of
-                                                       { (_tgi_,_) | _tgi_ `seq` (True) ->
-                                                       (case (tgiTy _tgi_) of
-                                                        { _ty | _ty `seq` (True) ->
-                                                        (case (_ty) of
-                                                         { _lhsOty | _lhsOty `seq` (True) ->
-                                                         (case (__tup237) of
-                                                          { (_,_lhsOtyGam) | _lhsOtyGam `seq` (True) ->
-                                                          (case ((let sem_TyExpr_VarWild_3 :: T_TyExpr_3
-                                                                      sem_TyExpr_VarWild_3 =
-                                                                          (\ _lhsIknPolCtx ->
-                                                                               _lhsIknPolCtx `seq`
-                                                                               ((case ([]) of
-                                                                                 { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                 (case ((let sem_TyExpr_VarWild_4 :: T_TyExpr_4
-                                                                                             sem_TyExpr_VarWild_4 =
-                                                                                                 (\ _lhsIpolGam
-                                                                                                    _lhsIpolVarMp ->
-                                                                                                      _lhsIpolGam `seq`
-                                                                                                      (_lhsIpolVarMp `seq`
-                                                                                                       ((case (Nothing) of
-                                                                                                         { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                         (case (_lhsIpolVarMp) of
-                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                          (case ((let sem_TyExpr_VarWild_5 :: T_TyExpr_5
-                                                                                                                      sem_TyExpr_VarWild_5 =
-                                                                                                                          (\ _lhsItyKiGam ->
-                                                                                                                               _lhsItyKiGam `seq`
-                                                                                                                               ((case (__tup239) of
-                                                                                                                                 { (_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
-                                                                                                                                 (case (tyKiGamLookupOrAdd _lUniq_ki (tgiTy _tgi_) _lhsItyKiGam) of
-                                                                                                                                  { __tup238 | __tup238 `seq` (True) ->
-                                                                                                                                  (case (__tup238) of
-                                                                                                                                   { (_,_,_tyKiGamNew) | _tyKiGamNew `seq` (True) ->
-                                                                                                                                   (case (_tyKiGamNew) of
-                                                                                                                                    { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                    (case (__tup238) of
-                                                                                                                                     { (_,_lhsOtyKiGam,_) | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                     (case ((let sem_TyExpr_VarWild_6 :: T_TyExpr_6
-                                                                                                                                                 sem_TyExpr_VarWild_6 =
-                                                                                                                                                     (\ _lhsIkiVarMp ->
-                                                                                                                                                          _lhsIkiVarMp `seq`
-                                                                                                                                                          ((case (emptyGam) of
-                                                                                                                                                            { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                            (case (__tup238) of
-                                                                                                                                                             { (_tkgi_,_,_) | _tkgi_ `seq` (True) ->
-                                                                                                                                                             (case (tkgiKi _tkgi_) of
-                                                                                                                                                              { _ki | _ki `seq` (True) ->
-                                                                                                                                                              (case (_ki) of
-                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                               (case (_lhsIkiVarMp) of
-                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                (case (_lhsIknPolCtx) of
-                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                 (case (_lUniq) of
-                                                                                                                                                                  { _tyVarId | _tyVarId `seq` (True) ->
-                                                                                                                                                                  (case (Map.singleton _tyVarId TyVarWild_NoQuantTyExpr_YesQuantLetBinding) of
-                                                                                                                                                                   { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                   (case ((let sem_TyExpr_VarWild_7 :: T_TyExpr_7
-                                                                                                                                                                               sem_TyExpr_VarWild_7 =
-                                                                                                                                                                                   (\ _lhsIclGam ->
-                                                                                                                                                                                        _lhsIclGam `seq`
-                                                                                                                                                                                        ((case (_ty) of
-                                                                                                                                                                                          { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                          (case ((let sem_TyExpr_VarWild_8 :: T_TyExpr_8
-                                                                                                                                                                                                      sem_TyExpr_VarWild_8 =
-                                                                                                                                                                                                          (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                             _lhsIfinTyKiGam
-                                                                                                                                                                                                             _lhsIfinTyVarMp
-                                                                                                                                                                                                             _lhsIkiGam
-                                                                                                                                                                                                             _lhsImoduleNm
-                                                                                                                                                                                                             _lhsIopts
-                                                                                                                                                                                                             _lhsIsysfEnv
-                                                                                                                                                                                                             _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                             _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                               _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                 (_lhsIkiGam `seq`
-                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                   (_lhsIopts `seq`
-                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                         ((case (Seq.empty) of
-                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                           (case ([]) of
-                                                                                                                                                                                                                            { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                            (case (hsnUnknown) of
-                                                                                                                                                                                                                             { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                             (case ("%" >|< pp nm_) of
-                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                              (case (_pp) of
-                                                                                                                                                                                                                               { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                               (case (Set.empty) of
-                                                                                                                                                                                                                                { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                (case (Set.empty) of
-                                                                                                                                                                                                                                 { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                 (case (Seq.empty) of
-                                                                                                                                                                                                                                  { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                  (case (Map.empty) of
-                                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                                                                                     { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                  in  sem_TyExpr_VarWild_8)) of
-                                                                                                                                                                                           { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                           ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                           in  sem_TyExpr_VarWild_7)) of
-                                                                                                                                                                    { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                    ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) })))
-                                                                                                                                             in  sem_TyExpr_VarWild_6)) of
-                                                                                                                                      { ( sem_TyExpr_6) | True ->
-                                                                                                                                      ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) })))
-                                                                                                                  in  sem_TyExpr_VarWild_5)) of
-                                                                                                           { ( sem_TyExpr_5) | True ->
-                                                                                                           ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
-                                                                                         in  sem_TyExpr_VarWild_4)) of
-                                                                                  { ( sem_TyExpr_4) | True ->
-                                                                                  ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                  in  sem_TyExpr_VarWild_3)) of
-                                                           { ( sem_TyExpr_3) | True ->
-                                                           ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
-                                      in  sem_TyExpr_VarWild_2)) of
-                               { ( sem_TyExpr_2) | True ->
-                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
-              in  sem_TyExpr_VarWild_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_Quant :: Range ->
-                    TyQu ->
-                    HsName ->
-                    T_TyExpr ->
-                    T_TyExpr
-
-sem_TyExpr_Quant hsrange_ qu_ tyVar_ tyExpr_ | hsrange_ `seq` (qu_ `seq` (tyVar_ `seq` (tyExpr_ `seq` (True)))) =
-    (case (tyExpr_) of
-     { ( _tyExprIrange,tyExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_Quant_1 :: T_TyExpr_1
-                       sem_TyExpr_Quant_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_ki)}} )) of
-                                  { __tup242 | __tup242 `seq` (True) ->
-                                  (case (__tup242) of
-                                   { (_tyExprOgUniq,_,_) | _tyExprOgUniq `seq` (True) ->
-                                   (case (tyExpr_1 _tyExprOgUniq) of
-                                    { ( _tyExprIgUniq,tyExpr_2) | True ->
-                                        (case (_tyExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_TyExpr_Quant_2 :: T_TyExpr_2
-                                                     sem_TyExpr_Quant_2 =
-                                                         (\ _lhsItyGam ->
-                                                              _lhsItyGam `seq`
-                                                              ((case (__tup242) of
-                                                                { (_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
-                                                                (case (__tup242) of
-                                                                 { (_,_lUniq,_) | _lUniq `seq` (True) ->
-                                                                 (case (let  t = mkTyVar _lUniq
-                                                                        in   (_lUniq,mkTGI t,TyKiGamInfo (mkNewTyVar _lUniq_ki))) of
-                                                                  { __tup241 | __tup241 `seq` (True) ->
-                                                                  (case (__tup241) of
-                                                                   { (_,_,_tkgi_) | _tkgi_ `seq` (True) ->
-                                                                   (case (__tup241) of
-                                                                    { (_,_tgi_,_) | _tgi_ `seq` (True) ->
-                                                                    (case (__tup241) of
-                                                                     { (_tv,_,_) | _tv `seq` (True) ->
-                                                                     (case (tvGathFlowIn  (tyVar_ `gamSingleton` _tgi_) _lhsItyGam) of
-                                                                      { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
-                                                                      (case (tyExpr_2 _tyExprOtyGam) of
-                                                                       { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
-                                                                           (case (Ty_TBind qu_ _tv
-                                                                                           (tkgiKi _tkgi_)
-                                                                                           _tyExprIty) of
-                                                                            { _ty | _ty `seq` (True) ->
-                                                                            (case (_ty) of
-                                                                             { _lhsOty | _lhsOty `seq` (True) ->
-                                                                             (case (tvGathFlowOut _lhsItyGam _tyExprItyGam) of
-                                                                              { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                              (case ((let sem_TyExpr_Quant_3 :: T_TyExpr_3
-                                                                                          sem_TyExpr_Quant_3 =
-                                                                                              (\ _lhsIknPolCtx ->
-                                                                                                   _lhsIknPolCtx `seq`
-                                                                                                   ((case ([]) of
-                                                                                                     { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                                     (case ((let sem_TyExpr_Quant_4 :: T_TyExpr_4
-                                                                                                                 sem_TyExpr_Quant_4 =
-                                                                                                                     (\ _lhsIpolGam
-                                                                                                                        _lhsIpolVarMp ->
-                                                                                                                          _lhsIpolGam `seq`
-                                                                                                                          (_lhsIpolVarMp `seq`
-                                                                                                                           ((case (Nothing) of
-                                                                                                                             { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                             (case (_lhsIpolVarMp) of
-                                                                                                                              { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
-                                                                                                                              (case (_lhsIpolGam) of
-                                                                                                                               { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
-                                                                                                                               (case (_lhsIknPolCtx) of
-                                                                                                                                { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
-                                                                                                                                (case (tyExpr_3 _tyExprOknPolCtx) of
-                                                                                                                                 { ( _tyExprIpolVarL,tyExpr_4) | True ->
-                                                                                                                                     (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
-                                                                                                                                      { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
-                                                                                                                                          (case (_tyExprIpolVarMp) of
-                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                           (case ((let sem_TyExpr_Quant_5 :: T_TyExpr_5
-                                                                                                                                                       sem_TyExpr_Quant_5 =
-                                                                                                                                                           (\ _lhsItyKiGam ->
-                                                                                                                                                                _lhsItyKiGam `seq`
-                                                                                                                                                                ((case (tgiTy _tgi_ `tyKiGamSingleton` _tkgi_) of
-                                                                                                                                                                  { _tyKiGamNew | _tyKiGamNew `seq` (True) ->
-                                                                                                                                                                  (case (tvGathFlowIn  _tyKiGamNew _lhsItyKiGam) of
-                                                                                                                                                                   { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                                   (case (tyExpr_5 _tyExprOtyKiGam) of
-                                                                                                                                                                    { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
-                                                                                                                                                                        (case (gamUnions [_tyKiGamNew,_tyExprIintlTyKiGam]) of
-                                                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                         (case (tvGathFlowOut _lhsItyKiGam _tyExprItyKiGam) of
-                                                                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                          (case ((let sem_TyExpr_Quant_6 :: T_TyExpr_6
-                                                                                                                                                                                      sem_TyExpr_Quant_6 =
-                                                                                                                                                                                          (\ _lhsIkiVarMp ->
-                                                                                                                                                                                               _lhsIkiVarMp `seq`
-                                                                                                                                                                                               ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                                 { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                 (case (tyExpr_6 _tyExprOkiVarMp) of
-                                                                                                                                                                                                  { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
-                                                                                                                                                                                                      (case (_tyExprIgathTyVarPolGam) of
-                                                                                                                                                                                                       { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                                       (case (_tyExprIki) of
-                                                                                                                                                                                                        { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                                        (case (_tyExprIkiVarMp) of
-                                                                                                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                         (case (_tyExprIpol) of
-                                                                                                                                                                                                          { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                          (case (_tyExprItyVarWildMp) of
-                                                                                                                                                                                                           { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                           (case ((let sem_TyExpr_Quant_7 :: T_TyExpr_7
-                                                                                                                                                                                                                       sem_TyExpr_Quant_7 =
-                                                                                                                                                                                                                           (\ _lhsIclGam ->
-                                                                                                                                                                                                                                _lhsIclGam `seq`
-                                                                                                                                                                                                                                ((case (_ty) of
-                                                                                                                                                                                                                                  { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                                  (case ((let sem_TyExpr_Quant_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                              sem_TyExpr_Quant_8 =
-                                                                                                                                                                                                                                                  (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                     _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                     _lhsIkiGam
-                                                                                                                                                                                                                                                     _lhsImoduleNm
-                                                                                                                                                                                                                                                     _lhsIopts
-                                                                                                                                                                                                                                                     _lhsIsysfEnv
-                                                                                                                                                                                                                                                     _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                     _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                     _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                     _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                       _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                       (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                         (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                           (_lhsIopts `seq`
-                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                 ((case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                   { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                                                                    { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                                                                        (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                         { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                          { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                            { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                             { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                              { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                               { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                 { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                  { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                   { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                    { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                                        (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (showTyQu qu_ >#< tyVar_ >#< "." >#< _tyExprIpp) of
-                                                                                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_pp) of
-                                                                                                                                                                                                                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                              { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                               { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_tyExprIerrSq) of
-                                                                                                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (_pp) of
-                                                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case (_tyExprItyWildL) of
-                                                                                                                                                                                                                                                                                                   { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                                          in  sem_TyExpr_Quant_8)) of
-                                                                                                                                                                                                                                   { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                                   ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                                                                   in  sem_TyExpr_Quant_7)) of
-                                                                                                                                                                                                            { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                            ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                                                                  in  sem_TyExpr_Quant_6)) of
-                                                                                                                                                                           { ( sem_TyExpr_6) | True ->
-                                                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) })))
-                                                                                                                                                   in  sem_TyExpr_Quant_5)) of
-                                                                                                                                            { ( sem_TyExpr_5) | True ->
-                                                                                                                                            ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
-                                                                                                             in  sem_TyExpr_Quant_4)) of
-                                                                                                      { ( sem_TyExpr_4) | True ->
-                                                                                                      ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                                      in  sem_TyExpr_Quant_3)) of
-                                                                               { ( sem_TyExpr_3) | True ->
-                                                                               ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) }) }) }) }) })))
-                                                 in  sem_TyExpr_Quant_2)) of
-                                          { ( sem_TyExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_TyExpr_2) }) }) }) }) })))
-                   in  sem_TyExpr_Quant_1)) of
-            { ( sem_TyExpr_1) | True ->
-            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
-
-sem_TyExpr_Row :: Range ->
-                  T_RowTyExpr ->
-                  T_TyExpr
-
-sem_TyExpr_Row hsrange_ rowTyExpr_ | hsrange_ `seq` (rowTyExpr_ `seq` (True)) =
-    (case (rowTyExpr_) of
-     { ( _rowTyExprIrange,rowTyExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _rowTyExprIrange
-                                                     , _rowTyExprIrange
-                                                                    ]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_Row_1 :: T_TyExpr_1
-                       sem_TyExpr_Row_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _rowTyExprOgUniq | _rowTyExprOgUniq `seq` (True) ->
-                                  (case (positionalFldNames) of
-                                   { _rowTyExprOpositionalFldNmL | _rowTyExprOpositionalFldNmL `seq` (True) ->
-                                   (case (rowTyExpr_1 _rowTyExprOgUniq _rowTyExprOpositionalFldNmL) of
-                                    { ( _rowTyExprIgUniq,_rowTyExprIpositionalFldNmL,rowTyExpr_2) | True ->
-                                        (case (_rowTyExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_TyExpr_Row_2 :: T_TyExpr_2
-                                                     sem_TyExpr_Row_2 =
-                                                         (\ _lhsItyGam ->
-                                                              _lhsItyGam `seq`
-                                                              ((case (_lhsItyGam) of
-                                                                { _rowTyExprOtyGam | _rowTyExprOtyGam `seq` (True) ->
-                                                                (case (rowTyExpr_2 _rowTyExprOtyGam) of
-                                                                 { ( _rowTyExprItyGam,_rowTyExprItyRow,rowTyExpr_3) | True ->
-                                                                     (case (_rowTyExprItyRow) of
-                                                                      { _ty | _ty `seq` (True) ->
-                                                                      (case (_ty) of
-                                                                       { _lhsOty | _lhsOty `seq` (True) ->
-                                                                       (case (_rowTyExprItyGam) of
-                                                                        { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                        (case ((let sem_TyExpr_Row_3 :: T_TyExpr_3
-                                                                                    sem_TyExpr_Row_3 =
-                                                                                        (\ _lhsIknPolCtx ->
-                                                                                             _lhsIknPolCtx `seq`
-                                                                                             ((case ([]) of
-                                                                                               { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                               (case ((let sem_TyExpr_Row_4 :: T_TyExpr_4
-                                                                                                           sem_TyExpr_Row_4 =
-                                                                                                               (\ _lhsIpolGam
-                                                                                                                  _lhsIpolVarMp ->
-                                                                                                                    _lhsIpolGam `seq`
-                                                                                                                    (_lhsIpolVarMp `seq`
-                                                                                                                     ((case (Nothing) of
-                                                                                                                       { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                       (case (_lhsIpolVarMp) of
-                                                                                                                        { _rowTyExprOpolVarMp | _rowTyExprOpolVarMp `seq` (True) ->
-                                                                                                                        (case (_lhsIpolGam) of
-                                                                                                                         { _rowTyExprOpolGam | _rowTyExprOpolGam `seq` (True) ->
-                                                                                                                         (case (_lhsIknPolCtx) of
-                                                                                                                          { _rowTyExprOknPolCtx | _rowTyExprOknPolCtx `seq` (True) ->
-                                                                                                                          (case (rowTyExpr_3 _rowTyExprOknPolCtx _rowTyExprOpolGam _rowTyExprOpolVarMp) of
-                                                                                                                           { ( _rowTyExprIpolVarMp,rowTyExpr_4) | True ->
-                                                                                                                               (case (_rowTyExprIpolVarMp) of
-                                                                                                                                { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                (case ((let sem_TyExpr_Row_5 :: T_TyExpr_5
-                                                                                                                                            sem_TyExpr_Row_5 =
-                                                                                                                                                (\ _lhsItyKiGam ->
-                                                                                                                                                     _lhsItyKiGam `seq`
-                                                                                                                                                     ((case (_lhsItyKiGam) of
-                                                                                                                                                       { _rowTyExprOtyKiGam | _rowTyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                       (case (rowTyExpr_4 _rowTyExprOtyKiGam) of
-                                                                                                                                                        { ( _rowTyExprIintlTyKiGam,_rowTyExprItyKiGam,rowTyExpr_5) | True ->
-                                                                                                                                                            (case (_rowTyExprIintlTyKiGam) of
-                                                                                                                                                             { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                             (case (_rowTyExprItyKiGam) of
-                                                                                                                                                              { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                              (case ((let sem_TyExpr_Row_6 :: T_TyExpr_6
-                                                                                                                                                                          sem_TyExpr_Row_6 =
-                                                                                                                                                                              (\ _lhsIkiVarMp ->
-                                                                                                                                                                                   _lhsIkiVarMp `seq`
-                                                                                                                                                                                   ((case (emptyGam) of
-                                                                                                                                                                                     { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                     (case (kiRow) of
-                                                                                                                                                                                      { _ki | _ki `seq` (True) ->
-                                                                                                                                                                                      (case (_ki) of
-                                                                                                                                                                                       { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                       (case (_lhsIkiVarMp) of
-                                                                                                                                                                                        { _rowTyExprOkiVarMp | _rowTyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                        (case (rowTyExpr_5 _rowTyExprOkiVarMp) of
-                                                                                                                                                                                         { ( _rowTyExprIkiVarMp,_rowTyExprItyVarWildMp,rowTyExpr_6) | True ->
-                                                                                                                                                                                             (case (_rowTyExprIkiVarMp) of
-                                                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                              (case (_lhsIknPolCtx) of
-                                                                                                                                                                                               { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                               (case (_rowTyExprItyVarWildMp) of
-                                                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                (case ((let sem_TyExpr_Row_7 :: T_TyExpr_7
-                                                                                                                                                                                                            sem_TyExpr_Row_7 =
-                                                                                                                                                                                                                (\ _lhsIclGam ->
-                                                                                                                                                                                                                     _lhsIclGam `seq`
-                                                                                                                                                                                                                     ((case (_ty) of
-                                                                                                                                                                                                                       { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                       (case ((let sem_TyExpr_Row_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                   sem_TyExpr_Row_8 =
-                                                                                                                                                                                                                                       (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                          _lhsIfinTyKiGam
-                                                                                                                                                                                                                                          _lhsIfinTyVarMp
-                                                                                                                                                                                                                                          _lhsIkiGam
-                                                                                                                                                                                                                                          _lhsImoduleNm
-                                                                                                                                                                                                                                          _lhsIopts
-                                                                                                                                                                                                                                          _lhsIsysfEnv
-                                                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                            _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                              (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                (_lhsIopts `seq`
-                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                      ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                        { _rowTyExprOvalTyGlobFreeTvarS | _rowTyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                         { _rowTyExprOtyTyTySigFreeTvarS | _rowTyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                          { _rowTyExprOtyTyGlobFreeTvarS | _rowTyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                           { _rowTyExprOtyKiGlobFreeTvarS | _rowTyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                            { _rowTyExprOsysfEnv | _rowTyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIopts) of
-                                                                                                                                                                                                                                                             { _rowTyExprOopts | _rowTyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                              { _rowTyExprOmoduleNm | _rowTyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                               { _rowTyExprOkiGam | _rowTyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                { _rowTyExprOfinTyVarMp | _rowTyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                 { _rowTyExprOfinTyKiGam | _rowTyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                  { _rowTyExprOfinKiVarMp | _rowTyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                   { _rowTyExprOclGam | _rowTyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (rowTyExpr_6 _rowTyExprOclGam _rowTyExprOfinKiVarMp _rowTyExprOfinTyKiGam _rowTyExprOfinTyVarMp _rowTyExprOkiGam _rowTyExprOmoduleNm _rowTyExprOopts _rowTyExprOsysfEnv _rowTyExprOtyKiGlobFreeTvarS _rowTyExprOtyTyGlobFreeTvarS _rowTyExprOtyTyTySigFreeTvarS _rowTyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                    { ( _rowTyExprIallErrSq,_rowTyExprIclMissNmS,_rowTyExprIclNmS,_rowTyExprIerrSq,_rowTyExprIextNm,_rowTyExprIgathMentrelFilterMp,_rowTyExprIpp,_rowTyExprIppL) | True ->
-                                                                                                                                                                                                                                                                        (case (_rowTyExprIallErrSq) of
-                                                                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (reverse _rowTyExprIppL) of
-                                                                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (_rowTyExprIextNm) of
-                                                                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_rowTyExprIpp) of
-                                                                                                                                                                                                                                                                            { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_rowTyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_rowTyExprIclNmS) of
-                                                                                                                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_rowTyExprIerrSq) of
-                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_rowTyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (ppAppTop  (hsnRow,mkPPAppFun hsnRow _rowTyExprIpp)
-                                                                                                                                                                                                                                                                                                 (reverse _rowTyExprIppL) _rowTyExprIpp) of
-                                                                                                                                                                                                                                                                                 { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_pp) of
-                                                                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case ([]) of
-                                                                                                                                                                                                                                                                                   { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                               in  sem_TyExpr_Row_8)) of
-                                                                                                                                                                                                                        { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                        ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                                                        in  sem_TyExpr_Row_7)) of
-                                                                                                                                                                                                 { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) })))
-                                                                                                                                                                      in  sem_TyExpr_Row_6)) of
-                                                                                                                                                               { ( sem_TyExpr_6) | True ->
-                                                                                                                                                               ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
-                                                                                                                                        in  sem_TyExpr_Row_5)) of
-                                                                                                                                 { ( sem_TyExpr_5) | True ->
-                                                                                                                                 ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }))))
-                                                                                                       in  sem_TyExpr_Row_4)) of
-                                                                                                { ( sem_TyExpr_4) | True ->
-                                                                                                ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                                in  sem_TyExpr_Row_3)) of
-                                                                         { ( sem_TyExpr_3) | True ->
-                                                                         ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) })))
-                                                 in  sem_TyExpr_Row_2)) of
-                                          { ( sem_TyExpr_2) | True ->
-                                          ( _lhsOgUniq,sem_TyExpr_2) }) }) }) }) })))
-                   in  sem_TyExpr_Row_1)) of
-            { ( sem_TyExpr_1) | True ->
-            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
-
-sem_TyExpr_Pred :: Range ->
-                   T_PrExpr ->
-                   T_TyExpr
-
-sem_TyExpr_Pred hsrange_ prExpr_ | hsrange_ `seq` (prExpr_ `seq` (True)) =
-    (case (prExpr_) of
-     { ( _prExprIrange,prExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _prExprIrange , _prExprIrange]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_Pred_1 :: T_TyExpr_1
-                       sem_TyExpr_Pred_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (_lhsIgUniq) of
-                                  { _prExprOgUniq | _prExprOgUniq `seq` (True) ->
-                                  (case (prExpr_1 _prExprOgUniq) of
-                                   { ( _prExprIgUniq,prExpr_2) | True ->
-                                       (case (_prExprIgUniq) of
-                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                        (case ((let sem_TyExpr_Pred_2 :: T_TyExpr_2
-                                                    sem_TyExpr_Pred_2 =
-                                                        (\ _lhsItyGam ->
-                                                             _lhsItyGam `seq`
-                                                             ((case (_lhsItyGam) of
-                                                               { _prExprOtyGam | _prExprOtyGam `seq` (True) ->
-                                                               (case (prExpr_2 _prExprOtyGam) of
-                                                                { ( _prExprIprTy,_prExprIty,_prExprItyGam,prExpr_3) | True ->
-                                                                    (case (_prExprIty) of
-                                                                     { _lhsOty | _lhsOty `seq` (True) ->
-                                                                     (case (_prExprItyGam) of
-                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                      (case ((let sem_TyExpr_Pred_3 :: T_TyExpr_3
-                                                                                  sem_TyExpr_Pred_3 =
-                                                                                      (\ _lhsIknPolCtx ->
-                                                                                           _lhsIknPolCtx `seq`
-                                                                                           ((case (_lhsIknPolCtx) of
-                                                                                             { _prExprOknPolCtx | _prExprOknPolCtx `seq` (True) ->
-                                                                                             (case (prExpr_3 _prExprOknPolCtx) of
-                                                                                              { ( _prExprIpolVarL,prExpr_4) | True ->
-                                                                                                  (case (_prExprIpolVarL) of
-                                                                                                   { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                                   (case ((let sem_TyExpr_Pred_4 :: T_TyExpr_4
-                                                                                                               sem_TyExpr_Pred_4 =
-                                                                                                                   (\ _lhsIpolGam
-                                                                                                                      _lhsIpolVarMp ->
-                                                                                                                        _lhsIpolGam `seq`
-                                                                                                                        (_lhsIpolVarMp `seq`
-                                                                                                                         ((case (Nothing) of
-                                                                                                                           { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                           (case (_lhsIpolVarMp) of
-                                                                                                                            { _prExprOpolVarMp | _prExprOpolVarMp `seq` (True) ->
-                                                                                                                            (case (_lhsIpolGam) of
-                                                                                                                             { _prExprOpolGam | _prExprOpolGam `seq` (True) ->
-                                                                                                                             (case (prExpr_4 _prExprOpolGam _prExprOpolVarMp) of
-                                                                                                                              { ( _prExprIpolVarMp,prExpr_5) | True ->
-                                                                                                                                  (case (_prExprIpolVarMp) of
-                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                   (case ((let sem_TyExpr_Pred_5 :: T_TyExpr_5
-                                                                                                                                               sem_TyExpr_Pred_5 =
-                                                                                                                                                   (\ _lhsItyKiGam ->
-                                                                                                                                                        _lhsItyKiGam `seq`
-                                                                                                                                                        ((case (_lhsItyKiGam) of
-                                                                                                                                                          { _prExprOtyKiGam | _prExprOtyKiGam `seq` (True) ->
-                                                                                                                                                          (case (prExpr_5 _prExprOtyKiGam) of
-                                                                                                                                                           { ( _prExprIintlTyKiGam,_prExprItyKiGam,prExpr_6) | True ->
-                                                                                                                                                               (case (_prExprIintlTyKiGam) of
-                                                                                                                                                                { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                (case (_prExprItyKiGam) of
-                                                                                                                                                                 { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                 (case ((let sem_TyExpr_Pred_6 :: T_TyExpr_6
-                                                                                                                                                                             sem_TyExpr_Pred_6 =
-                                                                                                                                                                                 (\ _lhsIkiVarMp ->
-                                                                                                                                                                                      _lhsIkiVarMp `seq`
-                                                                                                                                                                                      ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                        { _prExprOkiVarMp | _prExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                        (case (prExpr_6 _prExprOkiVarMp) of
-                                                                                                                                                                                         { ( _prExprIgathTyVarPolGam,_prExprIki,_prExprIkiVarMp,_prExprItyVarWildMp,prExpr_7) | True ->
-                                                                                                                                                                                             (case (_prExprIgathTyVarPolGam) of
-                                                                                                                                                                                              { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                              (case (_prExprIki) of
-                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                               (case (_prExprIkiVarMp) of
-                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                (case (_lhsIknPolCtx) of
-                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                 (case (_prExprItyVarWildMp) of
-                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                  (case ((let sem_TyExpr_Pred_7 :: T_TyExpr_7
-                                                                                                                                                                                                              sem_TyExpr_Pred_7 =
-                                                                                                                                                                                                                  (\ _lhsIclGam ->
-                                                                                                                                                                                                                       _lhsIclGam `seq`
-                                                                                                                                                                                                                       ((case (_lhsIclGam) of
-                                                                                                                                                                                                                         { _prExprOclGam | _prExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                         (case (prExpr_7 _prExprOclGam) of
-                                                                                                                                                                                                                          { ( _prExprIevTy,prExpr_8) | True ->
-                                                                                                                                                                                                                              (case (_prExprIevTy) of
-                                                                                                                                                                                                                               { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                               (case ((let sem_TyExpr_Pred_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                           sem_TyExpr_Pred_8 =
-                                                                                                                                                                                                                                               (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                  _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                  _lhsIkiGam
-                                                                                                                                                                                                                                                  _lhsImoduleNm
-                                                                                                                                                                                                                                                  _lhsIopts
-                                                                                                                                                                                                                                                  _lhsIsysfEnv
-                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                    _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                    (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                      (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                        (_lhsIopts `seq`
-                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                              ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                { _prExprOvalTyGlobFreeTvarS | _prExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                 { _prExprOtyTyTySigFreeTvarS | _prExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                  { _prExprOtyTyGlobFreeTvarS | _prExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                   { _prExprOtyKiGlobFreeTvarS | _prExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                    { _prExprOsysfEnv | _prExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                     { _prExprOopts | _prExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                      { _prExprOmoduleNm | _prExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                      (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                       { _prExprOkiGam | _prExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                        { _prExprOfinTyVarMp | _prExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                         { _prExprOfinTyKiGam | _prExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                          { _prExprOfinKiVarMp | _prExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (prExpr_8 _prExprOfinKiVarMp _prExprOfinTyKiGam _prExprOfinTyVarMp _prExprOkiGam _prExprOmoduleNm _prExprOopts _prExprOsysfEnv _prExprOtyKiGlobFreeTvarS _prExprOtyTyGlobFreeTvarS _prExprOtyTyTySigFreeTvarS _prExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { ( _prExprIallErrSq,_prExprIclMissNmS,_prExprIclNmS,_prExprIerrSq,_prExprIgathMentrelFilterMp,_prExprIpp,_prExprIpr) | True ->
-                                                                                                                                                                                                                                                                               (case (_prExprIallErrSq) of
-                                                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (hsnOImpl >#< _prExprIpp >#< hsnCImpl) of
-                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_prExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_prExprIclNmS) of
-                                                                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_prExprIerrSq) of
-                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_prExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_pp) of
-                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case ([]) of
-                                                                                                                                                                                                                                                                                          { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                                                                       in  sem_TyExpr_Pred_8)) of
-                                                                                                                                                                                                                                { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                                                                ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
-                                                                                                                                                                                                          in  sem_TyExpr_Pred_7)) of
-                                                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                                                         in  sem_TyExpr_Pred_6)) of
-                                                                                                                                                                  { ( sem_TyExpr_6) | True ->
-                                                                                                                                                                  ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
-                                                                                                                                           in  sem_TyExpr_Pred_5)) of
-                                                                                                                                    { ( sem_TyExpr_5) | True ->
-                                                                                                                                    ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }))))
-                                                                                                           in  sem_TyExpr_Pred_4)) of
-                                                                                                    { ( sem_TyExpr_4) | True ->
-                                                                                                    ( _lhsOpolVarL,sem_TyExpr_4) }) }) }) })))
-                                                                              in  sem_TyExpr_Pred_3)) of
-                                                                       { ( sem_TyExpr_3) | True ->
-                                                                       ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
-                                                in  sem_TyExpr_Pred_2)) of
-                                         { ( sem_TyExpr_2) | True ->
-                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
-                   in  sem_TyExpr_Pred_1)) of
-            { ( sem_TyExpr_1) | True ->
-            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
-
-sem_TyExpr_Impls :: Range ->
-                    T_TyExpr
-
-sem_TyExpr_Impls hsrange_ | hsrange_ `seq` (True) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_Impls_1 :: T_TyExpr_1
-                  sem_TyExpr_Impls_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
-                             { __tup243 | __tup243 `seq` (True) ->
-                             (case (__tup243) of
-                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
-                              (case ((let sem_TyExpr_Impls_2 :: T_TyExpr_2
-                                          sem_TyExpr_Impls_2 =
-                                              (\ _lhsItyGam ->
-                                                   _lhsItyGam `seq`
-                                                   ((case (__tup243) of
-                                                     { (_,_lUniq) | _lUniq `seq` (True) ->
-                                                     (case (_lUniq) of
-                                                      { _implsVarId | _implsVarId `seq` (True) ->
-                                                      (case (mkTGI (Ty_Impls (Impls_Tail _implsVarId []))) of
-                                                       { _tgi_ | _tgi_ `seq` (True) ->
-                                                       (case (tgiTy _tgi_) of
-                                                        { _ty | _ty `seq` (True) ->
-                                                        (case (_ty) of
-                                                         { _lhsOty | _lhsOty `seq` (True) ->
-                                                         (case (_lhsItyGam) of
-                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                          (case ((let sem_TyExpr_Impls_3 :: T_TyExpr_3
-                                                                      sem_TyExpr_Impls_3 =
-                                                                          (\ _lhsIknPolCtx ->
-                                                                               _lhsIknPolCtx `seq`
-                                                                               ((case ([]) of
-                                                                                 { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                 (case ((let sem_TyExpr_Impls_4 :: T_TyExpr_4
-                                                                                             sem_TyExpr_Impls_4 =
-                                                                                                 (\ _lhsIpolGam
-                                                                                                    _lhsIpolVarMp ->
-                                                                                                      _lhsIpolGam `seq`
-                                                                                                      (_lhsIpolVarMp `seq`
-                                                                                                       ((case (Nothing) of
-                                                                                                         { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                         (case (_lhsIpolVarMp) of
-                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                          (case ((let sem_TyExpr_Impls_5 :: T_TyExpr_5
-                                                                                                                      sem_TyExpr_Impls_5 =
-                                                                                                                          (\ _lhsItyKiGam ->
-                                                                                                                               _lhsItyKiGam `seq`
-                                                                                                                               ((case (emptyGam) of
-                                                                                                                                 { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                 (case (_lhsItyKiGam) of
-                                                                                                                                  { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                  (case ((let sem_TyExpr_Impls_6 :: T_TyExpr_6
-                                                                                                                                              sem_TyExpr_Impls_6 =
-                                                                                                                                                  (\ _lhsIkiVarMp ->
-                                                                                                                                                       _lhsIkiVarMp `seq`
-                                                                                                                                                       ((case (emptyGam) of
-                                                                                                                                                         { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                         (case (TyKiGamInfo kiStar) of
-                                                                                                                                                          { _tkgi_ | _tkgi_ `seq` (True) ->
-                                                                                                                                                          (case (tkgiKi _tkgi_) of
-                                                                                                                                                           { _ki | _ki `seq` (True) ->
-                                                                                                                                                           (case (_ki) of
-                                                                                                                                                            { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                            (case (_lhsIkiVarMp) of
-                                                                                                                                                             { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                             (case (_lhsIknPolCtx) of
-                                                                                                                                                              { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                              (case (Map.singleton _implsVarId TyVarWild_NoQuantTyExpr_YesQuantLetBinding) of
-                                                                                                                                                               { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                               (case ((let sem_TyExpr_Impls_7 :: T_TyExpr_7
-                                                                                                                                                                           sem_TyExpr_Impls_7 =
-                                                                                                                                                                               (\ _lhsIclGam ->
-                                                                                                                                                                                    _lhsIclGam `seq`
-                                                                                                                                                                                    ((case (_ty) of
-                                                                                                                                                                                      { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                      (case ((let sem_TyExpr_Impls_8 :: T_TyExpr_8
-                                                                                                                                                                                                  sem_TyExpr_Impls_8 =
-                                                                                                                                                                                                      (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                         _lhsIfinTyKiGam
-                                                                                                                                                                                                         _lhsIfinTyVarMp
-                                                                                                                                                                                                         _lhsIkiGam
-                                                                                                                                                                                                         _lhsImoduleNm
-                                                                                                                                                                                                         _lhsIopts
-                                                                                                                                                                                                         _lhsIsysfEnv
-                                                                                                                                                                                                         _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                         _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                         _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                         _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                           _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                           (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                            (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                             (_lhsIkiGam `seq`
-                                                                                                                                                                                                              (_lhsImoduleNm `seq`
-                                                                                                                                                                                                               (_lhsIopts `seq`
-                                                                                                                                                                                                                (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                     ((case (Seq.empty) of
-                                                                                                                                                                                                                       { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                                                                        { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                        (case (hsnUnknown) of
-                                                                                                                                                                                                                         { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                         (case (hsnOImpl >#< "..." >#< hsnCImpl) of
-                                                                                                                                                                                                                          { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                          (case (_pp) of
-                                                                                                                                                                                                                           { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                           (case (Set.empty) of
-                                                                                                                                                                                                                            { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                            (case (Set.empty) of
-                                                                                                                                                                                                                             { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                             (case (Seq.empty) of
-                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                              (case (Map.empty) of
-                                                                                                                                                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                               (case (_pp) of
-                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                 { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                              in  sem_TyExpr_Impls_8)) of
-                                                                                                                                                                                       { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                       ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                       in  sem_TyExpr_Impls_7)) of
-                                                                                                                                                                { ( sem_TyExpr_7) | True ->
-                                                                                                                                                                ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                          in  sem_TyExpr_Impls_6)) of
-                                                                                                                                   { ( sem_TyExpr_6) | True ->
-                                                                                                                                   ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
-                                                                                                                  in  sem_TyExpr_Impls_5)) of
-                                                                                                           { ( sem_TyExpr_5) | True ->
-                                                                                                           ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
-                                                                                         in  sem_TyExpr_Impls_4)) of
-                                                                                  { ( sem_TyExpr_4) | True ->
-                                                                                  ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                                  in  sem_TyExpr_Impls_3)) of
-                                                           { ( sem_TyExpr_3) | True ->
-                                                           ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
-                                      in  sem_TyExpr_Impls_2)) of
-                               { ( sem_TyExpr_2) | True ->
-                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
-              in  sem_TyExpr_Impls_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_NoImpls :: Range ->
-                      T_TyExpr
-
-sem_TyExpr_NoImpls hsrange_ | hsrange_ `seq` (True) =
-    (case (hsrange_) of
-     { _range | _range `seq` (True) ->
-     (case (_range) of
-      { _lhsOrange | _lhsOrange `seq` (True) ->
-      (case ((let sem_TyExpr_NoImpls_1 :: T_TyExpr_1
-                  sem_TyExpr_NoImpls_1 =
-                      (\ _lhsIgUniq ->
-                           _lhsIgUniq `seq`
-                           ((case (_lhsIgUniq) of
-                             { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                             (case ((let sem_TyExpr_NoImpls_2 :: T_TyExpr_2
-                                         sem_TyExpr_NoImpls_2 =
-                                             (\ _lhsItyGam ->
-                                                  _lhsItyGam `seq`
-                                                  ((case (mkTGI (Ty_Impls Impls_Nil)) of
-                                                    { _tgi_ | _tgi_ `seq` (True) ->
-                                                    (case (tgiTy _tgi_) of
-                                                     { _ty | _ty `seq` (True) ->
-                                                     (case (_ty) of
-                                                      { _lhsOty | _lhsOty `seq` (True) ->
-                                                      (case (_lhsItyGam) of
-                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                       (case ((let sem_TyExpr_NoImpls_3 :: T_TyExpr_3
-                                                                   sem_TyExpr_NoImpls_3 =
-                                                                       (\ _lhsIknPolCtx ->
-                                                                            _lhsIknPolCtx `seq`
-                                                                            ((case ([]) of
-                                                                              { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                              (case ((let sem_TyExpr_NoImpls_4 :: T_TyExpr_4
-                                                                                          sem_TyExpr_NoImpls_4 =
-                                                                                              (\ _lhsIpolGam
-                                                                                                 _lhsIpolVarMp ->
-                                                                                                   _lhsIpolGam `seq`
-                                                                                                   (_lhsIpolVarMp `seq`
-                                                                                                    ((case (Nothing) of
-                                                                                                      { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                      (case (_lhsIpolVarMp) of
-                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                       (case ((let sem_TyExpr_NoImpls_5 :: T_TyExpr_5
-                                                                                                                   sem_TyExpr_NoImpls_5 =
-                                                                                                                       (\ _lhsItyKiGam ->
-                                                                                                                            _lhsItyKiGam `seq`
-                                                                                                                            ((case (emptyGam) of
-                                                                                                                              { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                              (case (_lhsItyKiGam) of
-                                                                                                                               { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                               (case ((let sem_TyExpr_NoImpls_6 :: T_TyExpr_6
-                                                                                                                                           sem_TyExpr_NoImpls_6 =
-                                                                                                                                               (\ _lhsIkiVarMp ->
-                                                                                                                                                    _lhsIkiVarMp `seq`
-                                                                                                                                                    ((case (emptyGam) of
-                                                                                                                                                      { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                      (case (TyKiGamInfo kiStar) of
-                                                                                                                                                       { _tkgi_ | _tkgi_ `seq` (True) ->
-                                                                                                                                                       (case (tkgiKi _tkgi_) of
-                                                                                                                                                        { _ki | _ki `seq` (True) ->
-                                                                                                                                                        (case (_ki) of
-                                                                                                                                                         { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                         (case (_lhsIkiVarMp) of
-                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                          (case (_lhsIknPolCtx) of
-                                                                                                                                                           { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                           (case (Map.empty) of
-                                                                                                                                                            { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                            (case ((let sem_TyExpr_NoImpls_7 :: T_TyExpr_7
-                                                                                                                                                                        sem_TyExpr_NoImpls_7 =
-                                                                                                                                                                            (\ _lhsIclGam ->
-                                                                                                                                                                                 _lhsIclGam `seq`
-                                                                                                                                                                                 ((case (_ty) of
-                                                                                                                                                                                   { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                   (case ((let sem_TyExpr_NoImpls_8 :: T_TyExpr_8
-                                                                                                                                                                                               sem_TyExpr_NoImpls_8 =
-                                                                                                                                                                                                   (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                      _lhsIfinTyKiGam
-                                                                                                                                                                                                      _lhsIfinTyVarMp
-                                                                                                                                                                                                      _lhsIkiGam
-                                                                                                                                                                                                      _lhsImoduleNm
-                                                                                                                                                                                                      _lhsIopts
-                                                                                                                                                                                                      _lhsIsysfEnv
-                                                                                                                                                                                                      _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                      _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                      _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                      _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                        _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                        (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                         (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                          (_lhsIkiGam `seq`
-                                                                                                                                                                                                           (_lhsImoduleNm `seq`
-                                                                                                                                                                                                            (_lhsIopts `seq`
-                                                                                                                                                                                                             (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                              (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                  ((case (Seq.empty) of
-                                                                                                                                                                                                                    { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                    (case ([]) of
-                                                                                                                                                                                                                     { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                     (case (hsnUnknown) of
-                                                                                                                                                                                                                      { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                      (case (hsnOImpl >#< "_" >#< hsnCImpl) of
-                                                                                                                                                                                                                       { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                       (case (_pp) of
-                                                                                                                                                                                                                        { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                        (case (Set.empty) of
-                                                                                                                                                                                                                         { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                         (case (Set.empty) of
-                                                                                                                                                                                                                          { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                          (case (Seq.empty) of
-                                                                                                                                                                                                                           { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                           (case (Map.empty) of
-                                                                                                                                                                                                                            { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                            (case (_pp) of
-                                                                                                                                                                                                                             { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                             (case ([]) of
-                                                                                                                                                                                                                              { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                              ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) })))))))))))))
-                                                                                                                                                                                           in  sem_TyExpr_NoImpls_8)) of
-                                                                                                                                                                                    { ( sem_TyExpr_8) | True ->
-                                                                                                                                                                                    ( _lhsOevTy,sem_TyExpr_8) }) })))
-                                                                                                                                                                    in  sem_TyExpr_NoImpls_7)) of
-                                                                                                                                                             { ( sem_TyExpr_7) | True ->
-                                                                                                                                                             ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
-                                                                                                                                       in  sem_TyExpr_NoImpls_6)) of
-                                                                                                                                { ( sem_TyExpr_6) | True ->
-                                                                                                                                ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
-                                                                                                               in  sem_TyExpr_NoImpls_5)) of
-                                                                                                        { ( sem_TyExpr_5) | True ->
-                                                                                                        ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
-                                                                                      in  sem_TyExpr_NoImpls_4)) of
-                                                                               { ( sem_TyExpr_4) | True ->
-                                                                               ( _lhsOpolVarL,sem_TyExpr_4) }) })))
-                                                               in  sem_TyExpr_NoImpls_3)) of
-                                                        { ( sem_TyExpr_3) | True ->
-                                                        ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
-                                     in  sem_TyExpr_NoImpls_2)) of
-                              { ( sem_TyExpr_2) | True ->
-                              ( _lhsOgUniq,sem_TyExpr_2) }) })))
-              in  sem_TyExpr_NoImpls_1)) of
-       { ( sem_TyExpr_1) | True ->
-       ( _lhsOrange,sem_TyExpr_1) }) }) })
-
-sem_TyExpr_Lam :: Range ->
-                  HsName ->
-                  T_TyExpr ->
-                  T_TyExpr
-
-sem_TyExpr_Lam hsrange_ tyVar_ tyExpr_ | hsrange_ `seq` (tyVar_ `seq` (tyExpr_ `seq` (True))) =
-    (case (tyExpr_) of
-     { ( _tyExprIrange,tyExpr_1) | True ->
-         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
-          { _range | _range `seq` (True) ->
-          (case (_range) of
-           { _lhsOrange | _lhsOrange `seq` (True) ->
-           (case ((let sem_TyExpr_Lam_1 :: T_TyExpr_1
-                       sem_TyExpr_Lam_1 =
-                           (\ _lhsIgUniq ->
-                                _lhsIgUniq `seq`
-                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_17_fitsIn_pol) -> case nextUnique __cont of { (__cont, lUniq_17_polArg) -> case nextUnique __cont of { (__cont, lUniq_17_polRes) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_17_fitsIn_pol,lUniq_17_polArg,lUniq_17_polRes,lUniq_ki)}}}}} )) of
-                                  { __tup245 | __tup245 `seq` (True) ->
-                                  (case (__tup245) of
-                                   { (_tyExprOgUniq,_,_,_,_,_) | _tyExprOgUniq `seq` (True) ->
-                                   (case (tyExpr_1 _tyExprOgUniq) of
-                                    { ( _tyExprIgUniq,tyExpr_2) | True ->
-                                        (case (_tyExprIgUniq) of
-                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
-                                         (case ((let sem_TyExpr_Lam_2 :: T_TyExpr_2
-                                                     sem_TyExpr_Lam_2 =
-                                                         (\ _lhsItyGam ->
-                                                              _lhsItyGam `seq`
-                                                              ((case (__tup245) of
-                                                                { (_,_,_,_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
-                                                                (case (__tup245) of
-                                                                 { (_,_lUniq,_,_,_,_) | _lUniq `seq` (True) ->
-                                                                 (case (let  t = mkTyVar _lUniq
-                                                                        in   (_lUniq,mkTGI t,TyKiGamInfo (mkNewTyVar _lUniq_ki))) of
-                                                                  { __tup244 | __tup244 `seq` (True) ->
-                                                                  (case (__tup244) of
-                                                                   { (_,_tgi_,_) | _tgi_ `seq` (True) ->
-                                                                   (case (tvGathFlowIn  (tyVar_ `gamSingleton` _tgi_) _lhsItyGam) of
-                                                                    { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
-                                                                    (case (__tup244) of
-                                                                     { (_tv,_,_) | _tv `seq` (True) ->
-                                                                     (case (tyExpr_2 _tyExprOtyGam) of
-                                                                      { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
-                                                                          (case (mkTyLam [_tv] _tyExprIty) of
-                                                                           { _ty | _ty `seq` (True) ->
-                                                                           (case (_ty) of
-                                                                            { _lhsOty | _lhsOty `seq` (True) ->
-                                                                            (case (tvGathFlowOut _lhsItyGam _tyExprItyGam) of
-                                                                             { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
-                                                                             (case ((let sem_TyExpr_Lam_3 :: T_TyExpr_3
-                                                                                         sem_TyExpr_Lam_3 =
-                                                                                             (\ _lhsIknPolCtx ->
-                                                                                                  _lhsIknPolCtx `seq`
-                                                                                                  ((case ([]) of
-                                                                                                    { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
-                                                                                                    (case ((let sem_TyExpr_Lam_4 :: T_TyExpr_4
-                                                                                                                sem_TyExpr_Lam_4 =
-                                                                                                                    (\ _lhsIpolGam
-                                                                                                                       _lhsIpolVarMp ->
-                                                                                                                         _lhsIpolGam `seq`
-                                                                                                                         (_lhsIpolVarMp `seq`
-                                                                                                                          ((case (Nothing) of
-                                                                                                                            { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
-                                                                                                                            (case (__tup245) of
-                                                                                                                             { (_,_,_,_,_lUniq_17_polRes,_) | _lUniq_17_polRes `seq` (True) ->
-                                                                                                                             (case (__tup245) of
-                                                                                                                              { (_,_,_,_lUniq_17_polArg,_,_) | _lUniq_17_polArg `seq` (True) ->
-                                                                                                                              (case (__tup245) of
-                                                                                                                               { (_,_,_lUniq_17_fitsIn_pol,_,_,_) | _lUniq_17_fitsIn_pol `seq` (True) ->
-                                                                                                                               (case (mkPolVar _lUniq_17_polRes) of
-                                                                                                                                { _polResVar | _polResVar `seq` (True) ->
-                                                                                                                                (case (mkPolVar _lUniq_17_polArg) of
-                                                                                                                                 { _polArgVar | _polArgVar `seq` (True) ->
-                                                                                                                                 (case (fitsIn weakFIOpts defaultFIEnv _lUniq_17_fitsIn_pol _lhsIpolVarMp ([_polArgVar] `appArr` _polResVar) _lhsIknPolCtx) of
-                                                                                                                                  { _foPol | _foPol `seq` (True) ->
-                                                                                                                                  (case (foVarMp _foPol `varUpd` _lhsIpolVarMp) of
-                                                                                                                                   { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
-                                                                                                                                   (case (gamAdd tyVar_ (mkPGI _polArgVar) _lhsIpolGam) of
-                                                                                                                                    { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
-                                                                                                                                    (case (_polResVar) of
-                                                                                                                                     { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
-                                                                                                                                     (case (tyExpr_3 _tyExprOknPolCtx) of
-                                                                                                                                      { ( _tyExprIpolVarL,tyExpr_4) | True ->
-                                                                                                                                          (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
-                                                                                                                                           { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
-                                                                                                                                               (case (_tyExprIpolVarMp) of
-                                                                                                                                                { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
-                                                                                                                                                (case ((let sem_TyExpr_Lam_5 :: T_TyExpr_5
-                                                                                                                                                            sem_TyExpr_Lam_5 =
-                                                                                                                                                                (\ _lhsItyKiGam ->
-                                                                                                                                                                     _lhsItyKiGam `seq`
-                                                                                                                                                                     ((case (__tup244) of
-                                                                                                                                                                       { (_,_,_tkgi_) | _tkgi_ `seq` (True) ->
-                                                                                                                                                                       (case (tgiTy _tgi_ `tyKiGamSingleton` _tkgi_) of
-                                                                                                                                                                        { _tyKiGamNew | _tyKiGamNew `seq` (True) ->
-                                                                                                                                                                        (case (tvGathFlowIn  _tyKiGamNew _lhsItyKiGam) of
-                                                                                                                                                                         { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
-                                                                                                                                                                         (case (tyExpr_5 _tyExprOtyKiGam) of
-                                                                                                                                                                          { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
-                                                                                                                                                                              (case (gamUnions [_tyKiGamNew,_tyExprIintlTyKiGam]) of
-                                                                                                                                                                               { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                                                                                                               (case (tvGathFlowOut _lhsItyKiGam _tyExprItyKiGam) of
-                                                                                                                                                                                { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
-                                                                                                                                                                                (case ((let sem_TyExpr_Lam_6 :: T_TyExpr_6
-                                                                                                                                                                                            sem_TyExpr_Lam_6 =
-                                                                                                                                                                                                (\ _lhsIkiVarMp ->
-                                                                                                                                                                                                     _lhsIkiVarMp `seq`
-                                                                                                                                                                                                     ((case (_lhsIkiVarMp) of
-                                                                                                                                                                                                       { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                       (case (tyExpr_6 _tyExprOkiVarMp) of
-                                                                                                                                                                                                        { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
-                                                                                                                                                                                                            (case (_tyExprIgathTyVarPolGam) of
-                                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                                                                                                                                             (case ([tkgiKi _tkgi_] `appArr` _tyExprIki) of
-                                                                                                                                                                                                              { _ki | _ki `seq` (True) ->
-                                                                                                                                                                                                              (case (_ki) of
-                                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
-                                                                                                                                                                                                               (case (_tyExprIkiVarMp) of
-                                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
-                                                                                                                                                                                                                (case ([_polArgVar] `appArr` _tyExprIpol) of
-                                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
-                                                                                                                                                                                                                 (case (_tyExprItyVarWildMp) of
-                                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
-                                                                                                                                                                                                                  (case ((let sem_TyExpr_Lam_7 :: T_TyExpr_7
-                                                                                                                                                                                                                              sem_TyExpr_Lam_7 =
-                                                                                                                                                                                                                                  (\ _lhsIclGam ->
-                                                                                                                                                                                                                                       _lhsIclGam `seq`
-                                                                                                                                                                                                                                       ((case (_ty) of
-                                                                                                                                                                                                                                         { _lhsOevTy | _lhsOevTy `seq` (True) ->
-                                                                                                                                                                                                                                         (case ((let sem_TyExpr_Lam_8 :: T_TyExpr_8
-                                                                                                                                                                                                                                                     sem_TyExpr_Lam_8 =
-                                                                                                                                                                                                                                                         (\ _lhsIfinKiVarMp
-                                                                                                                                                                                                                                                            _lhsIfinTyKiGam
-                                                                                                                                                                                                                                                            _lhsIfinTyVarMp
-                                                                                                                                                                                                                                                            _lhsIkiGam
-                                                                                                                                                                                                                                                            _lhsImoduleNm
-                                                                                                                                                                                                                                                            _lhsIopts
-                                                                                                                                                                                                                                                            _lhsIsysfEnv
-                                                                                                                                                                                                                                                            _lhsItyKiGlobFreeTvarS
-                                                                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
-                                                                                                                                                                                                                                                            _lhsItyTyTySigFreeTvarS
-                                                                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
-                                                                                                                                                                                                                                                              _lhsIfinKiVarMp `seq`
-                                                                                                                                                                                                                                                              (_lhsIfinTyKiGam `seq`
-                                                                                                                                                                                                                                                               (_lhsIfinTyVarMp `seq`
-                                                                                                                                                                                                                                                                (_lhsIkiGam `seq`
-                                                                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
-                                                                                                                                                                                                                                                                  (_lhsIopts `seq`
-                                                                                                                                                                                                                                                                   (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                                                    (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                     (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                      (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                                       (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                                        ((case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                          { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                          (case (tyExpr_7 _tyExprOclGam) of
-                                                                                                                                                                                                                                                                           { ( _tyExprIevTy,tyExpr_8) | True ->
-                                                                                                                                                                                                                                                                               (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                                 { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                  { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                   { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                                    { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                     { _tyExprOopts | _tyExprOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                      { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                      (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                       { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                        { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                        (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                         { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                         (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                          { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                          (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                           { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItyWildL) | True ->
-                                                                                                                                                                                                                                                                                               (case (_tyExprIallErrSq) of
-                                                                                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case ([]) of
-                                                                                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 (case (hsnUnknown) of
-                                                                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                                  (case ("\\" >|< tyVar_ >#< "->" >#< _tyExprIpp) of
-                                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                   (case (_pp) of
-                                                                                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
-                                                                                                                                                                                                                                                                                                    (case (_tyExprIclMissNmS) of
-                                                                                                                                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                     (case (_tyExprIclNmS) of
-                                                                                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                                      (case (_tyExprIerrSq) of
-                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                                       (case (_tyExprIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                        (case (_pp) of
-                                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                         (case (_tyExprItyWildL) of
-                                                                                                                                                                                                                                                                                                          { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                          ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
+import UHC.Light.Compiler.VarMp
+import UHC.Light.Compiler.Substitutable
+import Data.Maybe
+import UHC.Light.Compiler.Ty.Utils1
+import UHC.Light.Compiler.Ty.Trf.Quantify
+import UHC.Light.Compiler.Ty.Trf.Instantiate
+import UHC.Light.Compiler.Ty
+import UHC.Light.Compiler.Ty.FitsInCommon2
+import UHC.Light.Compiler.Ty.FIEnv2
+import qualified Data.Set as Set
+import qualified Data.Map as Map
+import Data.Set (Set)
+import Data.Map (Map)
+import UHC.Light.Compiler.Ty.Trf.FreshVar
+import UHC.Light.Compiler.Ty.Ftv
+import UHC.Util.Utils (groupSortOn)
+import Control.Applicative ((<|>))
+import UHC.Light.Compiler.AbstractCore
+import UHC.Light.Compiler.AbstractCore.Utils
+import UHC.Light.Compiler.Core
+import UHC.Light.Compiler.Core.FFI
+import UHC.Light.Compiler.Core.Utils
+import UHC.Light.Compiler.Core.Pretty
+import UHC.Light.Compiler.Foreign.Extract
+import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import qualified UHC.Light.Compiler.Core.SysF.AsTy as SysF
+import UHC.Light.Compiler.FinalEnv
+import UHC.Light.Compiler.Core.BindExtract
+import UHC.Light.Compiler.Core.Subst
+import Control.Monad.State
+import UHC.Light.Compiler.Ty.Utils2
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Core.Coercion
+import UHC.Light.Compiler.Ty.Trf.MergePreds
+import UHC.Light.Compiler.Ty.Trf.Canonic
+import UHC.Light.Compiler.Gam.ClGam
+import UHC.Light.Compiler.Pred
+import UHC.Light.Compiler.Pred.RedGraph (redPruneReductionsUntil)
+import UHC.Light.Compiler.CHR
+import UHC.Light.Compiler.CHR.Constraint
+import UHC.Light.Compiler.Pred.CHR
+import UHC.Light.Compiler.Pred.ToCHR
+import UHC.Light.Compiler.Pred.Heuristics
+import UHC.Light.Compiler.CHR.Solve
+import UHC.Light.Compiler.Pred.EvidenceToCore
+import UHC.Light.Compiler.Gam.ClassDefaultGam
+import UHC.Light.Compiler.Ty.Trf.BetaReduce (tyBetaRedFull)
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Ty.UsedNames
+import UHC.Light.Compiler.CodeGen.ImportUsedModules
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CodeGen.BuiltinPrims
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Pretty
+import UHC.Light.Compiler.Deriving
+import UHC.Light.Compiler.Generics
+import UHC.Light.Compiler.VarMp.Utils
+
+import UHC.Light.Compiler.EH.MainAG_common
+
+-- TyExpr ------------------------------------------------------
+{-
+   visit 0:
+      synthesized attribute:
+         range                : Range
+   visit 1:
+      chained attribute:
+         gUniq                : UID
+   visit 2:
+      chained attribute:
+         tyGam                : TyGam
+      synthesized attribute:
+         ty                   : Ty
+   visit 3:
+      inherited attribute:
+         knPolCtx             : Polarity
+      synthesized attribute:
+         polVarL              : [Polarity]
+   visit 4:
+      inherited attribute:
+         polGam               : PolGam
+      chained attribute:
+         polVarMp             : VarMp
+      synthesized attribute:
+         mbStrictness         : Maybe Strictness
+   visit 5:
+      chained attribute:
+         tyKiGam              : TyKiGam
+      synthesized attribute:
+         intlTyKiGam          : TyKiGam
+   visit 6:
+      chained attribute:
+         kiVarMp              : VarMp
+      synthesized attributes:
+         gathTyVarPolGam      : PolGam
+         ki                   : Ty
+         pol                  : Polarity
+         tyVarWildMp          : TyVarWildMp
+   visit 7:
+      inherited attribute:
+         clGam                : ClGam
+      synthesized attribute:
+         evTy                 : Ty
+   visit 8:
+      inherited attributes:
+         finKiVarMp           : VarMp
+         finTyKiGam           : TyKiGam
+         finTyVarMp           : VarMp
+         kiGam                : KiGam
+         moduleNm             : HsName
+         opts                 : EHCOpts
+         sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+         tyKiGlobFreeTvarS    : TyVarIdS
+         tyTyGlobFreeTvarS    : TyVarIdS
+         tyTyTySigFreeTvarS   : TyVarIdS
+         valTyGlobFreeTvarS   : TyVarIdS
+      synthesized attributes:
+         allErrSq             : ErrSq
+         appArgPPL            : [PP_Doc]
+         appFunNm             : HsName
+         appFunPP             : PP_Doc
+         clMissNmS            : HsNameS
+         clNmS                : HsNameS
+         errSq                : ErrSq
+         gathMentrelFilterMp  : ModEntRelFilterMp
+         pp                   : PP_Doc
+         trpp                 : TrPP
+         tyWildL              : TyL
+   alternatives:
+      alternative Con:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup232     : _
+            intra range       : {Range}
+         visit 2:
+            local ty          : {Ty}
+            intra _tup232     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup232     : _
+            intra ty          : {Ty}
+            intra range       : {Range}
+         visit 4:
+            local lUniq_17_fitsIn_pol : {UID}
+            local _tup228     : _
+            local pgi_        : {PolGamInfo}
+            local polFromEnv  : _
+            local foPol       : {FIOut}
+            intra _tup232     : _
+            intra ty          : {Ty}
+            intra range       : {Range}
+         visit 5:
+            intra foPol       : {FIOut}
+            intra ty          : {Ty}
+            intra _tup228     : _
+            intra range       : {Range}
+         visit 6:
+            local _tup231     : _
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            intra foPol       : {FIOut}
+            intra ty          : {Ty}
+            intra _tup228     : _
+            intra range       : {Range}
+         visit 7:
+            intra ty          : {Ty}
+            intra _tup231     : _
+            intra _tup228     : _
+            intra foPol       : {FIOut}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            local nmErrs2     : {ErrL}
+            local _tup230     : _
+            local nmErrs      : {ErrL}
+            local nmPolErrs   : {ErrL}
+            local gathMentrelFilterMp : _
+            intra _tup231     : _
+            intra _tup228     : _
+            intra foPol       : {FIOut}
+            intra range       : {Range}
+      alternative App:
+         child hsrange        : {Range}
+         child func           : TyExpr 
+         child arg            : TyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup234     : _
+            intra range       : {Range}
+         visit 2:
+            local ty          : {Ty}
+            intra _tup234     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup234     : _
+            intra range       : {Range}
+         visit 4:
+            local lUniq_17_polArg : {UID}
+            local polArgVar   : {Ty}
+            local knFuncPol   : _
+            intra _tup234     : _
+            intra range       : {Range}
+         visit 5:
+            intra _tup234     : _
+            intra range       : {Range}
+         visit 6:
+            local lUniq       : {UID}
+            local knResKi     : _
+            local ki          : {Ty}
+            local lUniq2      : {UID}
+            local knFunKi     : {Ty}
+            local fo_         : {FIOut}
+            intra _tup234     : _
+            intra range       : {Range}
+         visit 7:
+            local evTy        : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+         visit 8:
+            local _tup233     : _
+            local pp          : _
+            intra fo_         : {FIOut}
+            intra range       : {Range}
+      alternative AppTop:
+         child hsrange        : {Range}
+         child tyExpr         : TyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            intra range       : {Range}
+         visit 2:
+            intra range       : {Range}
+         visit 3:
+            intra range       : {Range}
+         visit 4:
+            intra range       : {Range}
+         visit 5:
+            intra range       : {Range}
+         visit 6:
+            intra range       : {Range}
+         visit 7:
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            intra range       : {Range}
+      alternative Parens:
+         child hsrange        : {Range}
+         child tyExpr         : TyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 8:
+            local pp          : _
+      alternative Ann:
+         child hsrange        : {Range}
+         child ann            : TyExprAnn 
+         child tyExpr         : TyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 2:
+            local ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Wild:
+         child hsrange        : {Range}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup235     : _
+         visit 2:
+            local lUniq       : {UID}
+            local tyVarId     : {UID}
+            local tvarv       : {Ty}
+            local tgi_        : {TyGamInfo}
+            local ty          : {Ty}
+            intra _tup235     : _
+         visit 3:
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 4:
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 5:
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 6:
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Mono:
+         child hsrange        : {Range}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup236     : _
+         visit 2:
+            local lUniq       : {UID}
+            local tyVarId     : {UID}
+            local tvarv       : {Ty}
+            local tgi_        : {TyGamInfo}
+            local ty          : {Ty}
+            intra _tup236     : _
+         visit 3:
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 4:
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 5:
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 6:
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            intra tvarv       : {Ty}
+            intra tyVarId     : {UID}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Var:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup241     : _
+            intra range       : {Range}
+         visit 2:
+            local lUniq       : {UID}
+            local _tup239     : _
+            local tgi_        : {TyGamInfo}
+            local ty          : {Ty}
+            intra _tup241     : _
+            intra range       : {Range}
+         visit 3:
+            intra _tup241     : _
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+            intra range       : {Range}
+         visit 4:
+            local lUniq_17_fitsIn_pol : {UID}
+            local _tup237     : _
+            local pgi_        : {PolGamInfo}
+            local polFromEnv  : _
+            local foPol       : {FIOut}
+            intra _tup241     : _
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+            intra range       : {Range}
+         visit 5:
+            local lUniq_ki    : {UID}
+            local _tup240     : _
+            local tyKiGamNew  : _
+            intra _tup241     : _
+            intra tgi_        : {TyGamInfo}
+            intra foPol       : {FIOut}
+            intra ty          : {Ty}
+            intra range       : {Range}
+         visit 6:
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            intra _tup240     : _
+            intra foPol       : {FIOut}
+            intra ty          : {Ty}
+            intra range       : {Range}
+         visit 7:
+            intra ty          : {Ty}
+            intra foPol       : {FIOut}
+            intra range       : {Range}
+         visit 8:
+            local pp          : _
+            intra foPol       : {FIOut}
+            intra range       : {Range}
+      alternative VarWild:
+         child hsrange        : {Range}
+         child nm             : {HsName}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup245     : _
+         visit 2:
+            local lUniq       : {UID}
+            local _tup243     : _
+            local tgi_        : {TyGamInfo}
+            local ty          : {Ty}
+            intra _tup245     : _
+         visit 3:
+            intra _tup245     : _
+            intra tgi_        : {TyGamInfo}
+            intra lUniq       : {UID}
+            intra ty          : {Ty}
+         visit 4:
+            intra _tup245     : _
+            intra tgi_        : {TyGamInfo}
+            intra lUniq       : {UID}
+            intra ty          : {Ty}
+         visit 5:
+            local lUniq_ki    : {UID}
+            local _tup244     : _
+            local tyKiGamNew  : _
+            intra _tup245     : _
+            intra tgi_        : {TyGamInfo}
+            intra lUniq       : {UID}
+            intra ty          : {Ty}
+         visit 6:
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            local tyVarId     : {UID}
+            intra _tup244     : _
+            intra lUniq       : {UID}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Quant:
+         child hsrange        : {Range}
+         child qu             : {TyQu}
+         child tyVar          : {HsName}
+         child tyExpr         : TyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup248     : _
+         visit 2:
+            local lUniq_ki    : {UID}
+            local lUniq       : {UID}
+            local _tup247     : _
+            local tkgi_       : {TyKiGamInfo}
+            local tgi_        : {TyGamInfo}
+            local tv          : {UID}
+            local ty          : {Ty}
+            intra _tup248     : _
+         visit 3:
+            intra tkgi_       : {TyKiGamInfo}
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+         visit 4:
+            intra tkgi_       : {TyKiGamInfo}
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+         visit 5:
+            local tyKiGamNew  : _
+            intra tkgi_       : {TyKiGamInfo}
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+         visit 6:
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Row:
+         child hsrange        : {Range}
+         child rowTyExpr      : RowTyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 2:
+            local ty          : {Ty}
+         visit 3:
+            intra ty          : {Ty}
+         visit 4:
+            intra ty          : {Ty}
+         visit 5:
+            intra ty          : {Ty}
+         visit 6:
+            local ki          : {Ty}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Pred:
+         child hsrange        : {Range}
+         child prExpr         : PrExpr 
+         visit 0:
+            local range       : {Range}
+         visit 8:
+            local pp          : _
+      alternative Impls:
+         child hsrange        : {Range}
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup249     : _
+         visit 2:
+            local lUniq       : {UID}
+            local implsVarId  : {UID}
+            local tgi_        : {TyGamInfo}
+            local ty          : {Ty}
+            intra _tup249     : _
+         visit 3:
+            intra implsVarId  : {UID}
+            intra ty          : {Ty}
+         visit 4:
+            intra implsVarId  : {UID}
+            intra ty          : {Ty}
+         visit 5:
+            intra implsVarId  : {UID}
+            intra ty          : {Ty}
+         visit 6:
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            intra implsVarId  : {UID}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative NoImpls:
+         child hsrange        : {Range}
+         visit 0:
+            local range       : {Range}
+         visit 2:
+            local tgi_        : {TyGamInfo}
+            local ty          : {Ty}
+         visit 3:
+            intra ty          : {Ty}
+         visit 4:
+            intra ty          : {Ty}
+         visit 5:
+            intra ty          : {Ty}
+         visit 6:
+            local tkgi_       : {TyKiGamInfo}
+            local ki          : {Ty}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+      alternative Lam:
+         child hsrange        : {Range}
+         child tyVar          : {HsName}
+         child tyExpr         : TyExpr 
+         visit 0:
+            local range       : {Range}
+         visit 1:
+            local _tup251     : _
+         visit 2:
+            local lUniq_ki    : {UID}
+            local lUniq       : {UID}
+            local _tup250     : _
+            local tgi_        : {TyGamInfo}
+            local tv          : {UID}
+            local ty          : {Ty}
+            intra _tup251     : _
+         visit 3:
+            intra _tup251     : _
+            intra _tup250     : _
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+         visit 4:
+            local lUniq_17_polRes : {UID}
+            local lUniq_17_polArg : {UID}
+            local lUniq_17_fitsIn_pol : {UID}
+            local polResVar   : {Ty}
+            local polArgVar   : {Ty}
+            local foPol       : {FIOut}
+            intra _tup251     : _
+            intra _tup250     : _
+            intra tgi_        : {TyGamInfo}
+            intra ty          : {Ty}
+         visit 5:
+            local tkgi_       : {TyKiGamInfo}
+            local tyKiGamNew  : _
+            intra _tup250     : _
+            intra tgi_        : {TyGamInfo}
+            intra polArgVar   : {Ty}
+            intra ty          : {Ty}
+         visit 6:
+            local ki          : {Ty}
+            intra tkgi_       : {TyKiGamInfo}
+            intra polArgVar   : {Ty}
+            intra ty          : {Ty}
+         visit 7:
+            intra ty          : {Ty}
+         visit 8:
+            local pp          : _
+-}
+sem_TyExpr_Con :: Range ->
+                  HsName ->
+                  T_TyExpr
+
+sem_TyExpr_Con hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_Con_1 :: T_TyExpr_1
+                  sem_TyExpr_Con_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_17_fitsIn_pol) -> (__cont,lUniq_17_fitsIn_pol)} )) of
+                             { __tup232 | __tup232 `seq` (True) ->
+                             (case (__tup232) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_TyExpr_Con_2 :: T_TyExpr_2
+                                          sem_TyExpr_Con_2 =
+                                              (\ _lhsItyGam ->
+                                                   _lhsItyGam `seq`
+                                                   ((case (Ty_Con nm_) of
+                                                     { _ty | _ty `seq` (True) ->
+                                                     (case (_ty) of
+                                                      { _lhsOty | _lhsOty `seq` (True) ->
+                                                      (case (_lhsItyGam) of
+                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                       (case ((let sem_TyExpr_Con_3 :: T_TyExpr_3
+                                                                   sem_TyExpr_Con_3 =
+                                                                       (\ _lhsIknPolCtx ->
+                                                                            _lhsIknPolCtx `seq`
+                                                                            ((case ([]) of
+                                                                              { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                              (case ((let sem_TyExpr_Con_4 :: T_TyExpr_4
+                                                                                          sem_TyExpr_Con_4 =
+                                                                                              (\ _lhsIpolGam
+                                                                                                 _lhsIpolVarMp ->
+                                                                                                   _lhsIpolGam `seq`
+                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                    ((case (Nothing) of
+                                                                                                      { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                      (case (__tup232) of
+                                                                                                       { (_,_lUniq_17_fitsIn_pol) | _lUniq_17_fitsIn_pol `seq` (True) ->
+                                                                                                       (case (polGamLookupErr nm_ _lhsIpolGam) of
+                                                                                                        { __tup228 | __tup228 `seq` (True) ->
+                                                                                                        (case (__tup228) of
+                                                                                                         { (_pgi_,_) | _pgi_ `seq` (True) ->
+                                                                                                         (case (pgiPol _pgi_) of
+                                                                                                          { _polFromEnv | _polFromEnv `seq` (True) ->
+                                                                                                          (case (fitsIn weakFIOpts defaultFIEnv _lUniq_17_fitsIn_pol _lhsIpolVarMp _polFromEnv _lhsIknPolCtx) of
+                                                                                                           { _foPol | _foPol `seq` (True) ->
+                                                                                                           (case (foVarMp _foPol `varUpd` _lhsIpolVarMp) of
+                                                                                                            { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                            (case ((let sem_TyExpr_Con_5 :: T_TyExpr_5
+                                                                                                                        sem_TyExpr_Con_5 =
+                                                                                                                            (\ _lhsItyKiGam ->
+                                                                                                                                 _lhsItyKiGam `seq`
+                                                                                                                                 ((case (emptyGam) of
+                                                                                                                                   { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                   (case (_lhsItyKiGam) of
+                                                                                                                                    { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                    (case ((let sem_TyExpr_Con_6 :: T_TyExpr_6
+                                                                                                                                                sem_TyExpr_Con_6 =
+                                                                                                                                                    (\ _lhsIkiVarMp ->
+                                                                                                                                                         _lhsIkiVarMp `seq`
+                                                                                                                                                         ((case (emptyGam) of
+                                                                                                                                                           { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                           (case (tyKiGamLookupByNameErr nm_ _lhsItyKiGam) of
+                                                                                                                                                            { __tup231 | __tup231 `seq` (True) ->
+                                                                                                                                                            (case (__tup231) of
+                                                                                                                                                             { (_tkgi_,_) | _tkgi_ `seq` (True) ->
+                                                                                                                                                             (case (tkgiKi _tkgi_) of
+                                                                                                                                                              { _ki | _ki `seq` (True) ->
+                                                                                                                                                              (case (_ki) of
+                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                (case (foTy _foPol) of
+                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                 (case (Map.empty) of
+                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                  (case ((let sem_TyExpr_Con_7 :: T_TyExpr_7
+                                                                                                                                                                              sem_TyExpr_Con_7 =
+                                                                                                                                                                                  (\ _lhsIclGam ->
+                                                                                                                                                                                       _lhsIclGam `seq`
+                                                                                                                                                                                       ((case (_ty) of
+                                                                                                                                                                                         { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                         (case ((let sem_TyExpr_Con_8 :: T_TyExpr_8
+                                                                                                                                                                                                     sem_TyExpr_Con_8 =
+                                                                                                                                                                                                         (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                            _lhsIfinTyKiGam
+                                                                                                                                                                                                            _lhsIfinTyVarMp
+                                                                                                                                                                                                            _lhsIkiGam
+                                                                                                                                                                                                            _lhsImoduleNm
+                                                                                                                                                                                                            _lhsIopts
+                                                                                                                                                                                                            _lhsIsysfEnv
+                                                                                                                                                                                                            _lhsItr
+                                                                                                                                                                                                            _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                            _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                              _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                              (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                               (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                (_lhsIkiGam `seq`
+                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                  (_lhsIopts `seq`
+                                                                                                                                                                                                                   (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                    (_lhsItr `seq`
+                                                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                         ((case (Seq.empty) of
+                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                                                                            { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                            (case (nm_) of
+                                                                                                                                                                                                                             { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                             (case (ppCon nm_) of
+                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                               { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                               (case (Set.empty) of
+                                                                                                                                                                                                                                { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                (case (Set.empty) of
+                                                                                                                                                                                                                                 { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                 (case (__tup231) of
+                                                                                                                                                                                                                                  { (_,_nmErrs2) | _nmErrs2 `seq` (True) ->
+                                                                                                                                                                                                                                  (case (tyGamLookupErr nm_ _lhsItyGam) of
+                                                                                                                                                                                                                                   { __tup230 | __tup230 `seq` (True) ->
+                                                                                                                                                                                                                                   (case (__tup230) of
+                                                                                                                                                                                                                                    { (_,_nmErrs) | _nmErrs `seq` (True) ->
+                                                                                                                                                                                                                                    (case (__tup228) of
+                                                                                                                                                                                                                                     { (_,_nmPolErrs) | _nmPolErrs `seq` (True) ->
+                                                                                                                                                                                                                                     (case (rngLift _range mkNestErr' _pp [Seq.fromList $ firstNotEmpty [_nmErrs,_nmErrs2,_nmPolErrs], foErrSq _foPol    ]) of
+                                                                                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                      (case (mentrelFilterMpSingleton [_lhsImoduleNm] IdOcc_Type nm_) of
+                                                                                                                                                                                                                                       { _gathMentrelFilterMp | _gathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                       (case (_gathMentrelFilterMp) of
+                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_pp) of
+                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                         (case (trppEmpty) of
+                                                                                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                          (case ([]) of
+                                                                                                                                                                                                                                           { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                           ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                 in  sem_TyExpr_Con_8)) of
+                                                                                                                                                                                          { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                          ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                          in  sem_TyExpr_Con_7)) of
+                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) })))
+                                                                                                                                            in  sem_TyExpr_Con_6)) of
+                                                                                                                                     { ( sem_TyExpr_6) | True ->
+                                                                                                                                     ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
+                                                                                                                    in  sem_TyExpr_Con_5)) of
+                                                                                                             { ( sem_TyExpr_5) | True ->
+                                                                                                             ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
+                                                                                      in  sem_TyExpr_Con_4)) of
+                                                                               { ( sem_TyExpr_4) | True ->
+                                                                               ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                               in  sem_TyExpr_Con_3)) of
+                                                        { ( sem_TyExpr_3) | True ->
+                                                        ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) })))
+                                      in  sem_TyExpr_Con_2)) of
+                               { ( sem_TyExpr_2) | True ->
+                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
+              in  sem_TyExpr_Con_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_App :: Range ->
+                  T_TyExpr ->
+                  T_TyExpr ->
+                  T_TyExpr
+
+sem_TyExpr_App hsrange_ func_ arg_ | hsrange_ `seq` (func_ `seq` (arg_ `seq` (True))) =
+    (case (arg_) of
+     { ( _argIrange,arg_1) | True ->
+         (case (func_) of
+          { ( _funcIrange,func_1) | True ->
+              (case (rangeUnions [hsrange_, _funcIrange   , _argIrange   ]) of
+               { _range | _range `seq` (True) ->
+               (case (_range) of
+                { _lhsOrange | _lhsOrange `seq` (True) ->
+                (case ((let sem_TyExpr_App_1 :: T_TyExpr_1
+                            sem_TyExpr_App_1 =
+                                (\ _lhsIgUniq ->
+                                     _lhsIgUniq `seq`
+                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> case nextUnique __cont of { (__cont, lUniq_17_polArg) -> (__cont,lUniq,lUniq2,lUniq_17_polArg)}}} )) of
+                                       { __tup234 | __tup234 `seq` (True) ->
+                                       (case (__tup234) of
+                                        { (_funcOgUniq,_,_,_) | _funcOgUniq `seq` (True) ->
+                                        (case (func_1 _funcOgUniq) of
+                                         { ( _funcIgUniq,func_2) | True ->
+                                             (case (_funcIgUniq) of
+                                              { _argOgUniq | _argOgUniq `seq` (True) ->
+                                              (case (arg_1 _argOgUniq) of
+                                               { ( _argIgUniq,arg_2) | True ->
+                                                   (case (_argIgUniq) of
+                                                    { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                                    (case ((let sem_TyExpr_App_2 :: T_TyExpr_2
+                                                                sem_TyExpr_App_2 =
+                                                                    (\ _lhsItyGam ->
+                                                                         _lhsItyGam `seq`
+                                                                         ((case (_lhsItyGam) of
+                                                                           { _funcOtyGam | _funcOtyGam `seq` (True) ->
+                                                                           (case (func_2 _funcOtyGam) of
+                                                                            { ( _funcIty,_funcItyGam,func_3) | True ->
+                                                                                (case (_funcItyGam) of
+                                                                                 { _argOtyGam | _argOtyGam `seq` (True) ->
+                                                                                 (case (arg_2 _argOtyGam) of
+                                                                                  { ( _argIty,_argItyGam,arg_3) | True ->
+                                                                                      (case (Ty_App _funcIty _argIty) of
+                                                                                       { _ty | _ty `seq` (True) ->
+                                                                                       (case (_ty) of
+                                                                                        { _lhsOty | _lhsOty `seq` (True) ->
+                                                                                        (case (_argItyGam) of
+                                                                                         { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                                         (case ((let sem_TyExpr_App_3 :: T_TyExpr_3
+                                                                                                     sem_TyExpr_App_3 =
+                                                                                                         (\ _lhsIknPolCtx ->
+                                                                                                              _lhsIknPolCtx `seq`
+                                                                                                              ((case ([]) of
+                                                                                                                { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                                                (case ((let sem_TyExpr_App_4 :: T_TyExpr_4
+                                                                                                                            sem_TyExpr_App_4 =
+                                                                                                                                (\ _lhsIpolGam
+                                                                                                                                   _lhsIpolVarMp ->
+                                                                                                                                     _lhsIpolGam `seq`
+                                                                                                                                     (_lhsIpolVarMp `seq`
+                                                                                                                                      ((case (Nothing) of
+                                                                                                                                        { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                                        (case (_lhsIpolVarMp) of
+                                                                                                                                         { _funcOpolVarMp | _funcOpolVarMp `seq` (True) ->
+                                                                                                                                         (case (_lhsIpolGam) of
+                                                                                                                                          { _funcOpolGam | _funcOpolGam `seq` (True) ->
+                                                                                                                                          (case (__tup234) of
+                                                                                                                                           { (_,_,_,_lUniq_17_polArg) | _lUniq_17_polArg `seq` (True) ->
+                                                                                                                                           (case (mkPolVar _lUniq_17_polArg) of
+                                                                                                                                            { _polArgVar | _polArgVar `seq` (True) ->
+                                                                                                                                            (case ([_polArgVar] `appArr` _lhsIknPolCtx) of
+                                                                                                                                             { _knFuncPol | _knFuncPol `seq` (True) ->
+                                                                                                                                             (case (_knFuncPol) of
+                                                                                                                                              { _funcOknPolCtx | _funcOknPolCtx `seq` (True) ->
+                                                                                                                                              (case (func_3 _funcOknPolCtx) of
+                                                                                                                                               { ( _funcIpolVarL,func_4) | True ->
+                                                                                                                                                   (case (func_4 _funcOpolGam _funcOpolVarMp) of
+                                                                                                                                                    { ( _funcImbStrictness,_funcIpolVarMp,func_5) | True ->
+                                                                                                                                                        (case (_funcIpolVarMp) of
+                                                                                                                                                         { _argOpolVarMp | _argOpolVarMp `seq` (True) ->
+                                                                                                                                                         (case (_lhsIpolGam) of
+                                                                                                                                                          { _argOpolGam | _argOpolGam `seq` (True) ->
+                                                                                                                                                          (case (_polArgVar) of
+                                                                                                                                                           { _argOknPolCtx | _argOknPolCtx `seq` (True) ->
+                                                                                                                                                           (case (arg_3 _argOknPolCtx) of
+                                                                                                                                                            { ( _argIpolVarL,arg_4) | True ->
+                                                                                                                                                                (case (arg_4 _argOpolGam _argOpolVarMp) of
+                                                                                                                                                                 { ( _argImbStrictness,_argIpolVarMp,arg_5) | True ->
+                                                                                                                                                                     (case (_argIpolVarMp) of
+                                                                                                                                                                      { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                                      (case ((let sem_TyExpr_App_5 :: T_TyExpr_5
+                                                                                                                                                                                  sem_TyExpr_App_5 =
+                                                                                                                                                                                      (\ _lhsItyKiGam ->
+                                                                                                                                                                                           _lhsItyKiGam `seq`
+                                                                                                                                                                                           ((case (_lhsItyKiGam) of
+                                                                                                                                                                                             { _funcOtyKiGam | _funcOtyKiGam `seq` (True) ->
+                                                                                                                                                                                             (case (func_5 _funcOtyKiGam) of
+                                                                                                                                                                                              { ( _funcIintlTyKiGam,_funcItyKiGam,func_6) | True ->
+                                                                                                                                                                                                  (case (_funcItyKiGam) of
+                                                                                                                                                                                                   { _argOtyKiGam | _argOtyKiGam `seq` (True) ->
+                                                                                                                                                                                                   (case (arg_5 _argOtyKiGam) of
+                                                                                                                                                                                                    { ( _argIintlTyKiGam,_argItyKiGam,arg_6) | True ->
+                                                                                                                                                                                                        (case (_funcIintlTyKiGam `gamUnion` _argIintlTyKiGam) of
+                                                                                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                                                         (case (_argItyKiGam) of
+                                                                                                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                                                          (case ((let sem_TyExpr_App_6 :: T_TyExpr_6
+                                                                                                                                                                                                                      sem_TyExpr_App_6 =
+                                                                                                                                                                                                                          (\ _lhsIkiVarMp ->
+                                                                                                                                                                                                                               _lhsIkiVarMp `seq`
+                                                                                                                                                                                                                               ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                                                                 { _funcOkiVarMp | _funcOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                 (case (func_6 _funcOkiVarMp) of
+                                                                                                                                                                                                                                  { ( _funcIgathTyVarPolGam,_funcIki,_funcIkiVarMp,_funcIpol,_funcItyVarWildMp,func_7) | True ->
+                                                                                                                                                                                                                                      (case (_funcIkiVarMp) of
+                                                                                                                                                                                                                                       { _argOkiVarMp | _argOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                       (case (arg_6 _argOkiVarMp) of
+                                                                                                                                                                                                                                        { ( _argIgathTyVarPolGam,_argIki,_argIkiVarMp,_argIpol,_argItyVarWildMp,arg_7) | True ->
+                                                                                                                                                                                                                                            (case (_funcIgathTyVarPolGam `gamUnion` _argIgathTyVarPolGam) of
+                                                                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                                                                             (case (__tup234) of
+                                                                                                                                                                                                                                              { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                                                                                                                                                                                                              (case (mkNewTyVar _lUniq) of
+                                                                                                                                                                                                                                               { _knResKi | _knResKi `seq` (True) ->
+                                                                                                                                                                                                                                               (case (_knResKi) of
+                                                                                                                                                                                                                                                { _ki | _ki `seq` (True) ->
+                                                                                                                                                                                                                                                (case (_ki) of
+                                                                                                                                                                                                                                                 { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                                                                                 (case (__tup234) of
+                                                                                                                                                                                                                                                  { (_,_,_lUniq2,_) | _lUniq2 `seq` (True) ->
+                                                                                                                                                                                                                                                  (case ([_argIki] `appArr` _knResKi) of
+                                                                                                                                                                                                                                                   { _knFunKi | _knFunKi `seq` (True) ->
+                                                                                                                                                                                                                                                   (case (fitsIn weakFIOpts defaultFIEnv _lUniq2 _argIkiVarMp _funcIki _knFunKi) of
+                                                                                                                                                                                                                                                    { _fo_ | _fo_ `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (foVarMp _fo_ `varUpd` _argIkiVarMp) of
+                                                                                                                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (_lhsIknPolCtx) of
+                                                                                                                                                                                                                                                      { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (_funcItyVarWildMp `Map.union` _argItyVarWildMp) of
+                                                                                                                                                                                                                                                       { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                                                                       (case ((let sem_TyExpr_App_7 :: T_TyExpr_7
+                                                                                                                                                                                                                                                                   sem_TyExpr_App_7 =
+                                                                                                                                                                                                                                                                       (\ _lhsIclGam ->
+                                                                                                                                                                                                                                                                            _lhsIclGam `seq`
+                                                                                                                                                                                                                                                                            ((case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                              { _argOclGam | _argOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                               { _funcOclGam | _funcOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (arg_7 _argOclGam) of
+                                                                                                                                                                                                                                                                                { ( _argIevTy,arg_8) | True ->
+                                                                                                                                                                                                                                                                                    (case (func_7 _funcOclGam) of
+                                                                                                                                                                                                                                                                                     { ( _funcIevTy,func_8) | True ->
+                                                                                                                                                                                                                                                                                         (case (Ty_App _funcIevTy _argIevTy) of
+                                                                                                                                                                                                                                                                                          { _evTy | _evTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_evTy) of
+                                                                                                                                                                                                                                                                                           { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case ((let sem_TyExpr_App_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                                                                                       sem_TyExpr_App_8 =
+                                                                                                                                                                                                                                                                                                           (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                                                                              _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                                                                              _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                                                                              _lhsIkiGam
+                                                                                                                                                                                                                                                                                                              _lhsImoduleNm
+                                                                                                                                                                                                                                                                                                              _lhsIopts
+                                                                                                                                                                                                                                                                                                              _lhsIsysfEnv
+                                                                                                                                                                                                                                                                                                              _lhsItr
+                                                                                                                                                                                                                                                                                                              _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                              _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                                                                              _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                                                                              _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                                                                                _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                                                                                (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                                                                                 (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                                                                  (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                                                                                   (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                                                                    (_lhsIopts `seq`
+                                                                                                                                                                                                                                                                                                                     (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                                                                      (_lhsItr `seq`
+                                                                                                                                                                                                                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                         (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                                                                           ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                             { _argOvalTyGlobFreeTvarS | _argOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                             (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                              { _argOtyTyTySigFreeTvarS | _argOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                               { _argOtyTyGlobFreeTvarS | _argOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                { _argOtyKiGlobFreeTvarS | _argOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                 { _argOtr | _argOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                  { _argOsysfEnv | _argOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                  (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                                   { _argOopts | _argOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                    { _argOmoduleNm | _argOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                    (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                                     { _argOkiGam | _argOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                      { _argOfinTyVarMp | _argOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                       { _argOfinTyKiGam | _argOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                        { _argOfinKiVarMp | _argOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                        (case (arg_8 _argOfinKiVarMp _argOfinTyKiGam _argOfinTyVarMp _argOkiGam _argOmoduleNm _argOopts _argOsysfEnv _argOtr _argOtyKiGlobFreeTvarS _argOtyTyGlobFreeTvarS _argOtyTyTySigFreeTvarS _argOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                         { ( _argIallErrSq,_argIappArgPPL,_argIappFunNm,_argIappFunPP,_argIclMissNmS,_argIclNmS,_argIerrSq,_argIgathMentrelFilterMp,_argIpp,_argItrpp,_argItyWildL) | True ->
+                                                                                                                                                                                                                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                              { _funcOvalTyGlobFreeTvarS | _funcOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                               { _funcOtyTyTySigFreeTvarS | _funcOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                { _funcOtyTyGlobFreeTvarS | _funcOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                 { _funcOtyKiGlobFreeTvarS | _funcOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                                                                                  { _funcOtr | _funcOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                  (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                                                                                   { _funcOsysfEnv | _funcOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                   (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                                                                                    { _funcOopts | _funcOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                    (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                                                                                     { _funcOmoduleNm | _funcOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                     (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                                                                                      { _funcOkiGam | _funcOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                                                                                       { _funcOfinTyVarMp | _funcOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                       (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                                                                                        { _funcOfinTyKiGam | _funcOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                        (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                                                                                         { _funcOfinKiVarMp | _funcOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                         (case (func_8 _funcOfinKiVarMp _funcOfinTyKiGam _funcOfinTyVarMp _funcOkiGam _funcOmoduleNm _funcOopts _funcOsysfEnv _funcOtr _funcOtyKiGlobFreeTvarS _funcOtyTyGlobFreeTvarS _funcOtyTyTySigFreeTvarS _funcOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                                                                                          { ( _funcIallErrSq,_funcIappArgPPL,_funcIappFunNm,_funcIappFunPP,_funcIclMissNmS,_funcIclNmS,_funcIerrSq,_funcIgathMentrelFilterMp,_funcIpp,_funcItrpp,_funcItyWildL) | True ->
+                                                                                                                                                                                                                                                                                                                                                              (case (_funcIallErrSq `Seq.union` _argIallErrSq) of
+                                                                                                                                                                                                                                                                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                               (case (mkExtAppPP  (_funcIappFunNm,_funcIappFunPP,_funcIappArgPPL)
+                                                                                                                                                                                                                                                                                                                                                                                  (_argIappFunNm,_argIappFunPP,_argIappArgPPL,_argIpp)) of
+                                                                                                                                                                                                                                                                                                                                                                { __tup233 | __tup233 `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                (case (__tup233) of
+                                                                                                                                                                                                                                                                                                                                                                 { (_,_lhsOappArgPPL) | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                 (case (_funcIappFunNm) of
+                                                                                                                                                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                  (case (__tup233) of
+                                                                                                                                                                                                                                                                                                                                                                   { (_lhsOappFunPP,_) | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                   (case (_funcIclMissNmS `Set.union` _argIclMissNmS) of
+                                                                                                                                                                                                                                                                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                    (case (_funcIclNmS `Set.union` _argIclNmS) of
+                                                                                                                                                                                                                                                                                                                                                                     { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                     (case (_funcIpp >#< _argIpp) of
+                                                                                                                                                                                                                                                                                                                                                                      { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                      (case (rngLift _range mkNestErr' _pp [ _funcIerrSq, _argIerrSq
+                                                                                                                                                                                                                                                                                                                                                                                                           , foErrSq _fo_
+                                                                                                                                                                                                                                                                                                                                                                                                           ]) of
+                                                                                                                                                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                       (case (_funcIgathMentrelFilterMp `mentrelFilterMpUnion` _argIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                        (case (_pp) of
+                                                                                                                                                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                         (case (_funcItrpp >< _argItrpp) of
+                                                                                                                                                                                                                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                          (case (_funcItyWildL ++ _argItyWildL) of
+                                                                                                                                                                                                                                                                                                                                                                           { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                                                                                           ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                                                                                   in  sem_TyExpr_App_8)) of
+                                                                                                                                                                                                                                                                                            { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                                                                                            ( _lhsOevTy,sem_TyExpr_8) }) }) }) }) }) }) })))
+                                                                                                                                                                                                                                                               in  sem_TyExpr_App_7)) of
+                                                                                                                                                                                                                                                        { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                                                                        ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
+                                                                                                                                                                                                                  in  sem_TyExpr_App_6)) of
+                                                                                                                                                                                                           { ( sem_TyExpr_6) | True ->
+                                                                                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) }) })))
+                                                                                                                                                                              in  sem_TyExpr_App_5)) of
+                                                                                                                                                                       { ( sem_TyExpr_5) | True ->
+                                                                                                                                                                       ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))
+                                                                                                                        in  sem_TyExpr_App_4)) of
+                                                                                                                 { ( sem_TyExpr_4) | True ->
+                                                                                                                 ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                                                 in  sem_TyExpr_App_3)) of
+                                                                                          { ( sem_TyExpr_3) | True ->
+                                                                                          ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) })))
+                                                            in  sem_TyExpr_App_2)) of
+                                                     { ( sem_TyExpr_2) | True ->
+                                                     ( _lhsOgUniq,sem_TyExpr_2) }) }) }) }) }) }) })))
+                        in  sem_TyExpr_App_1)) of
+                 { ( sem_TyExpr_1) | True ->
+                 ( _lhsOrange,sem_TyExpr_1) }) }) }) }) })
+
+sem_TyExpr_AppTop :: Range ->
+                     T_TyExpr ->
+                     T_TyExpr
+
+sem_TyExpr_AppTop hsrange_ tyExpr_ | hsrange_ `seq` (tyExpr_ `seq` (True)) =
+    (case (tyExpr_) of
+     { ( _tyExprIrange,tyExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_AppTop_1 :: T_TyExpr_1
+                       sem_TyExpr_AppTop_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _tyExprOgUniq | _tyExprOgUniq `seq` (True) ->
+                                  (case (tyExpr_1 _tyExprOgUniq) of
+                                   { ( _tyExprIgUniq,tyExpr_2) | True ->
+                                       (case (_tyExprIgUniq) of
+                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                        (case ((let sem_TyExpr_AppTop_2 :: T_TyExpr_2
+                                                    sem_TyExpr_AppTop_2 =
+                                                        (\ _lhsItyGam ->
+                                                             _lhsItyGam `seq`
+                                                             ((case (_lhsItyGam) of
+                                                               { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
+                                                               (case (tyExpr_2 _tyExprOtyGam) of
+                                                                { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
+                                                                    (case (_tyExprIty) of
+                                                                     { _lhsOty | _lhsOty `seq` (True) ->
+                                                                     (case (_tyExprItyGam) of
+                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                      (case ((let sem_TyExpr_AppTop_3 :: T_TyExpr_3
+                                                                                  sem_TyExpr_AppTop_3 =
+                                                                                      (\ _lhsIknPolCtx ->
+                                                                                           _lhsIknPolCtx `seq`
+                                                                                           ((case ([]) of
+                                                                                             { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                             (case ((let sem_TyExpr_AppTop_4 :: T_TyExpr_4
+                                                                                                         sem_TyExpr_AppTop_4 =
+                                                                                                             (\ _lhsIpolGam
+                                                                                                                _lhsIpolVarMp ->
+                                                                                                                  _lhsIpolGam `seq`
+                                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                                   ((case (Nothing) of
+                                                                                                                     { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                     (case (_lhsIpolVarMp) of
+                                                                                                                      { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
+                                                                                                                      (case (_lhsIpolGam) of
+                                                                                                                       { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
+                                                                                                                       (case (_lhsIknPolCtx) of
+                                                                                                                        { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
+                                                                                                                        (case (tyExpr_3 _tyExprOknPolCtx) of
+                                                                                                                         { ( _tyExprIpolVarL,tyExpr_4) | True ->
+                                                                                                                             (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
+                                                                                                                              { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
+                                                                                                                                  (case (_tyExprIpolVarMp) of
+                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                   (case ((let sem_TyExpr_AppTop_5 :: T_TyExpr_5
+                                                                                                                                               sem_TyExpr_AppTop_5 =
+                                                                                                                                                   (\ _lhsItyKiGam ->
+                                                                                                                                                        _lhsItyKiGam `seq`
+                                                                                                                                                        ((case (_lhsItyKiGam) of
+                                                                                                                                                          { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                          (case (tyExpr_5 _tyExprOtyKiGam) of
+                                                                                                                                                           { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
+                                                                                                                                                               (case (_tyExprIintlTyKiGam) of
+                                                                                                                                                                { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                (case (_tyExprItyKiGam) of
+                                                                                                                                                                 { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                 (case ((let sem_TyExpr_AppTop_6 :: T_TyExpr_6
+                                                                                                                                                                             sem_TyExpr_AppTop_6 =
+                                                                                                                                                                                 (\ _lhsIkiVarMp ->
+                                                                                                                                                                                      _lhsIkiVarMp `seq`
+                                                                                                                                                                                      ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                        { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                        (case (tyExpr_6 _tyExprOkiVarMp) of
+                                                                                                                                                                                         { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
+                                                                                                                                                                                             (case (_tyExprIgathTyVarPolGam) of
+                                                                                                                                                                                              { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                              (case (_tyExprIki) of
+                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                               (case (_tyExprIkiVarMp) of
+                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                (case (_tyExprIpol) of
+                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                 (case (_tyExprItyVarWildMp) of
+                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                  (case ((let sem_TyExpr_AppTop_7 :: T_TyExpr_7
+                                                                                                                                                                                                              sem_TyExpr_AppTop_7 =
+                                                                                                                                                                                                                  (\ _lhsIclGam ->
+                                                                                                                                                                                                                       _lhsIclGam `seq`
+                                                                                                                                                                                                                       ((case (_lhsIclGam) of
+                                                                                                                                                                                                                         { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                         (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                          { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                              (case (_tyExprIevTy) of
+                                                                                                                                                                                                                               { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                               (case ((let sem_TyExpr_AppTop_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                           sem_TyExpr_AppTop_8 =
+                                                                                                                                                                                                                                               (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                  _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                  _lhsIkiGam
+                                                                                                                                                                                                                                                  _lhsImoduleNm
+                                                                                                                                                                                                                                                  _lhsIopts
+                                                                                                                                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                                                                                                                                  _lhsItr
+                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                    _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                    (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                      (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                        (_lhsIopts `seq`
+                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                          (_lhsItr `seq`
+                                                                                                                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                               ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                  { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                   { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItr) of
+                                                                                                                                                                                                                                                                     { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                      { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                       { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                        { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                         { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                          { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                           { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                            { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                 (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                                                                   { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (ppAppTop  (_tyExprIappFunNm,_tyExprIappFunPP)
+                                                                                                                                                                                                                                                                                                     _tyExprIappArgPPL _tyExprIpp) of
+                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                                      { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                       { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                        { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (rngLift _range mkNestErr' _pp [_tyExprIerrSq]) of
+                                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_tyExprItyWildL) of
+                                                                                                                                                                                                                                                                                             { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                       in  sem_TyExpr_AppTop_8)) of
+                                                                                                                                                                                                                                { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                                ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
+                                                                                                                                                                                                          in  sem_TyExpr_AppTop_7)) of
+                                                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                                                         in  sem_TyExpr_AppTop_6)) of
+                                                                                                                                                                  { ( sem_TyExpr_6) | True ->
+                                                                                                                                                                  ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
+                                                                                                                                           in  sem_TyExpr_AppTop_5)) of
+                                                                                                                                    { ( sem_TyExpr_5) | True ->
+                                                                                                                                    ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
+                                                                                                     in  sem_TyExpr_AppTop_4)) of
+                                                                                              { ( sem_TyExpr_4) | True ->
+                                                                                              ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                              in  sem_TyExpr_AppTop_3)) of
+                                                                       { ( sem_TyExpr_3) | True ->
+                                                                       ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
+                                                in  sem_TyExpr_AppTop_2)) of
+                                         { ( sem_TyExpr_2) | True ->
+                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
+                   in  sem_TyExpr_AppTop_1)) of
+            { ( sem_TyExpr_1) | True ->
+            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
+
+sem_TyExpr_Parens :: Range ->
+                     T_TyExpr ->
+                     T_TyExpr
+
+sem_TyExpr_Parens hsrange_ tyExpr_ | hsrange_ `seq` (tyExpr_ `seq` (True)) =
+    (case (tyExpr_) of
+     { ( _tyExprIrange,tyExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_Parens_1 :: T_TyExpr_1
+                       sem_TyExpr_Parens_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _tyExprOgUniq | _tyExprOgUniq `seq` (True) ->
+                                  (case (tyExpr_1 _tyExprOgUniq) of
+                                   { ( _tyExprIgUniq,tyExpr_2) | True ->
+                                       (case (_tyExprIgUniq) of
+                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                        (case ((let sem_TyExpr_Parens_2 :: T_TyExpr_2
+                                                    sem_TyExpr_Parens_2 =
+                                                        (\ _lhsItyGam ->
+                                                             _lhsItyGam `seq`
+                                                             ((case (_lhsItyGam) of
+                                                               { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
+                                                               (case (tyExpr_2 _tyExprOtyGam) of
+                                                                { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
+                                                                    (case (_tyExprIty) of
+                                                                     { _lhsOty | _lhsOty `seq` (True) ->
+                                                                     (case (_tyExprItyGam) of
+                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                      (case ((let sem_TyExpr_Parens_3 :: T_TyExpr_3
+                                                                                  sem_TyExpr_Parens_3 =
+                                                                                      (\ _lhsIknPolCtx ->
+                                                                                           _lhsIknPolCtx `seq`
+                                                                                           ((case ([]) of
+                                                                                             { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                             (case ((let sem_TyExpr_Parens_4 :: T_TyExpr_4
+                                                                                                         sem_TyExpr_Parens_4 =
+                                                                                                             (\ _lhsIpolGam
+                                                                                                                _lhsIpolVarMp ->
+                                                                                                                  _lhsIpolGam `seq`
+                                                                                                                  (_lhsIpolVarMp `seq`
+                                                                                                                   ((case (Nothing) of
+                                                                                                                     { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                     (case (_lhsIpolVarMp) of
+                                                                                                                      { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
+                                                                                                                      (case (_lhsIpolGam) of
+                                                                                                                       { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
+                                                                                                                       (case (_lhsIknPolCtx) of
+                                                                                                                        { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
+                                                                                                                        (case (tyExpr_3 _tyExprOknPolCtx) of
+                                                                                                                         { ( _tyExprIpolVarL,tyExpr_4) | True ->
+                                                                                                                             (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
+                                                                                                                              { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
+                                                                                                                                  (case (_tyExprIpolVarMp) of
+                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                   (case ((let sem_TyExpr_Parens_5 :: T_TyExpr_5
+                                                                                                                                               sem_TyExpr_Parens_5 =
+                                                                                                                                                   (\ _lhsItyKiGam ->
+                                                                                                                                                        _lhsItyKiGam `seq`
+                                                                                                                                                        ((case (_lhsItyKiGam) of
+                                                                                                                                                          { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                          (case (tyExpr_5 _tyExprOtyKiGam) of
+                                                                                                                                                           { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
+                                                                                                                                                               (case (_tyExprIintlTyKiGam) of
+                                                                                                                                                                { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                (case (_tyExprItyKiGam) of
+                                                                                                                                                                 { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                 (case ((let sem_TyExpr_Parens_6 :: T_TyExpr_6
+                                                                                                                                                                             sem_TyExpr_Parens_6 =
+                                                                                                                                                                                 (\ _lhsIkiVarMp ->
+                                                                                                                                                                                      _lhsIkiVarMp `seq`
+                                                                                                                                                                                      ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                        { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                        (case (tyExpr_6 _tyExprOkiVarMp) of
+                                                                                                                                                                                         { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
+                                                                                                                                                                                             (case (_tyExprIgathTyVarPolGam) of
+                                                                                                                                                                                              { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                              (case (_tyExprIki) of
+                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                               (case (_tyExprIkiVarMp) of
+                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                (case (_tyExprIpol) of
+                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                 (case (_tyExprItyVarWildMp) of
+                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                  (case ((let sem_TyExpr_Parens_7 :: T_TyExpr_7
+                                                                                                                                                                                                              sem_TyExpr_Parens_7 =
+                                                                                                                                                                                                                  (\ _lhsIclGam ->
+                                                                                                                                                                                                                       _lhsIclGam `seq`
+                                                                                                                                                                                                                       ((case (_lhsIclGam) of
+                                                                                                                                                                                                                         { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                         (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                          { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                              (case (_tyExprIevTy) of
+                                                                                                                                                                                                                               { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                               (case ((let sem_TyExpr_Parens_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                           sem_TyExpr_Parens_8 =
+                                                                                                                                                                                                                                               (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                  _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                  _lhsIkiGam
+                                                                                                                                                                                                                                                  _lhsImoduleNm
+                                                                                                                                                                                                                                                  _lhsIopts
+                                                                                                                                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                                                                                                                                  _lhsItr
+                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                    _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                    (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                      (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                        (_lhsIopts `seq`
+                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                          (_lhsItr `seq`
+                                                                                                                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                               ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                  { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                   { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItr) of
+                                                                                                                                                                                                                                                                     { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                      { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                       { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                        { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                         { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                          { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                           { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                            { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                 (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                                                                   { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (ppParens _tyExprIpp) of
+                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                                      { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                       { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                        { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_tyExprIerrSq) of
+                                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_tyExprItyWildL) of
+                                                                                                                                                                                                                                                                                             { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                       in  sem_TyExpr_Parens_8)) of
+                                                                                                                                                                                                                                { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                                ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
+                                                                                                                                                                                                          in  sem_TyExpr_Parens_7)) of
+                                                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                                                         in  sem_TyExpr_Parens_6)) of
+                                                                                                                                                                  { ( sem_TyExpr_6) | True ->
+                                                                                                                                                                  ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
+                                                                                                                                           in  sem_TyExpr_Parens_5)) of
+                                                                                                                                    { ( sem_TyExpr_5) | True ->
+                                                                                                                                    ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
+                                                                                                     in  sem_TyExpr_Parens_4)) of
+                                                                                              { ( sem_TyExpr_4) | True ->
+                                                                                              ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                              in  sem_TyExpr_Parens_3)) of
+                                                                       { ( sem_TyExpr_3) | True ->
+                                                                       ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
+                                                in  sem_TyExpr_Parens_2)) of
+                                         { ( sem_TyExpr_2) | True ->
+                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
+                   in  sem_TyExpr_Parens_1)) of
+            { ( sem_TyExpr_1) | True ->
+            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
+
+sem_TyExpr_Ann :: Range ->
+                  T_TyExprAnn ->
+                  T_TyExpr ->
+                  T_TyExpr
+
+sem_TyExpr_Ann hsrange_ ann_ tyExpr_ | hsrange_ `seq` (ann_ `seq` (tyExpr_ `seq` (True))) =
+    (case (tyExpr_) of
+     { ( _tyExprIrange,tyExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_Ann_1 :: T_TyExpr_1
+                       sem_TyExpr_Ann_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _tyExprOgUniq | _tyExprOgUniq `seq` (True) ->
+                                  (case (tyExpr_1 _tyExprOgUniq) of
+                                   { ( _tyExprIgUniq,tyExpr_2) | True ->
+                                       (case (_tyExprIgUniq) of
+                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                        (case ((let sem_TyExpr_Ann_2 :: T_TyExpr_2
+                                                    sem_TyExpr_Ann_2 =
+                                                        (\ _lhsItyGam ->
+                                                             _lhsItyGam `seq`
+                                                             ((case (_lhsItyGam) of
+                                                               { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
+                                                               (case (tyExpr_2 _tyExprOtyGam) of
+                                                                { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
+                                                                    (case (ann_) of
+                                                                     { ( _annIann,_annIisEmpty,_annImbStrictness,_annIpp) | True ->
+                                                                         (case (if _annIisEmpty
+                                                                                then _tyExprIty
+                                                                                else Ty_Ann _annIann _tyExprIty) of
+                                                                          { _ty | _ty `seq` (True) ->
+                                                                          (case (_ty) of
+                                                                           { _lhsOty | _lhsOty `seq` (True) ->
+                                                                           (case (_tyExprItyGam) of
+                                                                            { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                            (case ((let sem_TyExpr_Ann_3 :: T_TyExpr_3
+                                                                                        sem_TyExpr_Ann_3 =
+                                                                                            (\ _lhsIknPolCtx ->
+                                                                                                 _lhsIknPolCtx `seq`
+                                                                                                 ((case ([]) of
+                                                                                                   { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                                   (case ((let sem_TyExpr_Ann_4 :: T_TyExpr_4
+                                                                                                               sem_TyExpr_Ann_4 =
+                                                                                                                   (\ _lhsIpolGam
+                                                                                                                      _lhsIpolVarMp ->
+                                                                                                                        _lhsIpolGam `seq`
+                                                                                                                        (_lhsIpolVarMp `seq`
+                                                                                                                         ((case (_lhsIknPolCtx) of
+                                                                                                                           { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
+                                                                                                                           (case (tyExpr_3 _tyExprOknPolCtx) of
+                                                                                                                            { ( _tyExprIpolVarL,tyExpr_4) | True ->
+                                                                                                                                (case (_lhsIpolVarMp) of
+                                                                                                                                 { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
+                                                                                                                                 (case (_lhsIpolGam) of
+                                                                                                                                  { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
+                                                                                                                                  (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
+                                                                                                                                   { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
+                                                                                                                                       (case (_annImbStrictness <|> _tyExprImbStrictness) of
+                                                                                                                                        { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                                        (case (_tyExprIpolVarMp) of
+                                                                                                                                         { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                         (case ((let sem_TyExpr_Ann_5 :: T_TyExpr_5
+                                                                                                                                                     sem_TyExpr_Ann_5 =
+                                                                                                                                                         (\ _lhsItyKiGam ->
+                                                                                                                                                              _lhsItyKiGam `seq`
+                                                                                                                                                              ((case (_lhsItyKiGam) of
+                                                                                                                                                                { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                                (case (tyExpr_5 _tyExprOtyKiGam) of
+                                                                                                                                                                 { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
+                                                                                                                                                                     (case (_tyExprIintlTyKiGam) of
+                                                                                                                                                                      { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                      (case (_tyExprItyKiGam) of
+                                                                                                                                                                       { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                       (case ((let sem_TyExpr_Ann_6 :: T_TyExpr_6
+                                                                                                                                                                                   sem_TyExpr_Ann_6 =
+                                                                                                                                                                                       (\ _lhsIkiVarMp ->
+                                                                                                                                                                                            _lhsIkiVarMp `seq`
+                                                                                                                                                                                            ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                              { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                              (case (tyExpr_6 _tyExprOkiVarMp) of
+                                                                                                                                                                                               { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
+                                                                                                                                                                                                   (case (_tyExprIgathTyVarPolGam) of
+                                                                                                                                                                                                    { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                                    (case (_tyExprIki) of
+                                                                                                                                                                                                     { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                                     (case (_tyExprIkiVarMp) of
+                                                                                                                                                                                                      { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                      (case (_tyExprIpol) of
+                                                                                                                                                                                                       { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                       (case (_tyExprItyVarWildMp) of
+                                                                                                                                                                                                        { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                        (case ((let sem_TyExpr_Ann_7 :: T_TyExpr_7
+                                                                                                                                                                                                                    sem_TyExpr_Ann_7 =
+                                                                                                                                                                                                                        (\ _lhsIclGam ->
+                                                                                                                                                                                                                             _lhsIclGam `seq`
+                                                                                                                                                                                                                             ((case (_lhsIclGam) of
+                                                                                                                                                                                                                               { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                               (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                                { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                                    (case (_tyExprIevTy) of
+                                                                                                                                                                                                                                     { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                                     (case ((let sem_TyExpr_Ann_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                                 sem_TyExpr_Ann_8 =
+                                                                                                                                                                                                                                                     (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                        _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                        _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                        _lhsIkiGam
+                                                                                                                                                                                                                                                        _lhsImoduleNm
+                                                                                                                                                                                                                                                        _lhsIopts
+                                                                                                                                                                                                                                                        _lhsIsysfEnv
+                                                                                                                                                                                                                                                        _lhsItr
+                                                                                                                                                                                                                                                        _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                        _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                        _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                        _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                          _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                          (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                           (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                            (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                             (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                              (_lhsIopts `seq`
+                                                                                                                                                                                                                                                               (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                (_lhsItr `seq`
+                                                                                                                                                                                                                                                                 (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                  (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                   (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                    (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                     ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                       { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                        { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                         { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                          { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsItr) of
+                                                                                                                                                                                                                                                                           { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                            { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                             { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                              { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                               { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                 { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                  { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                       (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case ([]) of
+                                                                                                                                                                                                                                                                                         { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                          { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_annIpp >#< _tyExprIpp) of
+                                                                                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_pp) of
+                                                                                                                                                                                                                                                                                            { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (_tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (_tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_tyExprIerrSq) of
+                                                                                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_pp) of
+                                                                                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                                                                                  { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_tyExprItyWildL) of
+                                                                                                                                                                                                                                                                                                   { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                             in  sem_TyExpr_Ann_8)) of
+                                                                                                                                                                                                                                      { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                                      ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
+                                                                                                                                                                                                                in  sem_TyExpr_Ann_7)) of
+                                                                                                                                                                                                         { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                         ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                                                               in  sem_TyExpr_Ann_6)) of
+                                                                                                                                                                        { ( sem_TyExpr_6) | True ->
+                                                                                                                                                                        ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
+                                                                                                                                                 in  sem_TyExpr_Ann_5)) of
+                                                                                                                                          { ( sem_TyExpr_5) | True ->
+                                                                                                                                          ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
+                                                                                                           in  sem_TyExpr_Ann_4)) of
+                                                                                                    { ( sem_TyExpr_4) | True ->
+                                                                                                    ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                                    in  sem_TyExpr_Ann_3)) of
+                                                                             { ( sem_TyExpr_3) | True ->
+                                                                             ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
+                                                in  sem_TyExpr_Ann_2)) of
+                                         { ( sem_TyExpr_2) | True ->
+                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
+                   in  sem_TyExpr_Ann_1)) of
+            { ( sem_TyExpr_1) | True ->
+            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
+
+sem_TyExpr_Wild :: Range ->
+                   T_TyExpr
+
+sem_TyExpr_Wild hsrange_ | hsrange_ `seq` (True) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_Wild_1 :: T_TyExpr_1
+                  sem_TyExpr_Wild_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup235 | __tup235 `seq` (True) ->
+                             (case (__tup235) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_TyExpr_Wild_2 :: T_TyExpr_2
+                                          sem_TyExpr_Wild_2 =
+                                              (\ _lhsItyGam ->
+                                                   _lhsItyGam `seq`
+                                                   ((case (__tup235) of
+                                                     { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                     (case (_lUniq) of
+                                                      { _tyVarId | _tyVarId `seq` (True) ->
+                                                      (case (mkNewTyVar _tyVarId) of
+                                                       { _tvarv | _tvarv `seq` (True) ->
+                                                       (case (mkTGI _tvarv) of
+                                                        { _tgi_ | _tgi_ `seq` (True) ->
+                                                        (case (tgiTy _tgi_) of
+                                                         { _ty | _ty `seq` (True) ->
+                                                         (case (_ty) of
+                                                          { _lhsOty | _lhsOty `seq` (True) ->
+                                                          (case (_lhsItyGam) of
+                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                           (case ((let sem_TyExpr_Wild_3 :: T_TyExpr_3
+                                                                       sem_TyExpr_Wild_3 =
+                                                                           (\ _lhsIknPolCtx ->
+                                                                                _lhsIknPolCtx `seq`
+                                                                                ((case ([]) of
+                                                                                  { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                  (case ((let sem_TyExpr_Wild_4 :: T_TyExpr_4
+                                                                                              sem_TyExpr_Wild_4 =
+                                                                                                  (\ _lhsIpolGam
+                                                                                                     _lhsIpolVarMp ->
+                                                                                                       _lhsIpolGam `seq`
+                                                                                                       (_lhsIpolVarMp `seq`
+                                                                                                        ((case (Nothing) of
+                                                                                                          { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                          (case (_lhsIpolVarMp) of
+                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                           (case ((let sem_TyExpr_Wild_5 :: T_TyExpr_5
+                                                                                                                       sem_TyExpr_Wild_5 =
+                                                                                                                           (\ _lhsItyKiGam ->
+                                                                                                                                _lhsItyKiGam `seq`
+                                                                                                                                ((case (emptyGam) of
+                                                                                                                                  { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                  (case (_lhsItyKiGam) of
+                                                                                                                                   { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                   (case ((let sem_TyExpr_Wild_6 :: T_TyExpr_6
+                                                                                                                                               sem_TyExpr_Wild_6 =
+                                                                                                                                                   (\ _lhsIkiVarMp ->
+                                                                                                                                                        _lhsIkiVarMp `seq`
+                                                                                                                                                        ((case (emptyGam) of
+                                                                                                                                                          { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                          (case (TyKiGamInfo _tvarv) of
+                                                                                                                                                           { _tkgi_ | _tkgi_ `seq` (True) ->
+                                                                                                                                                           (case (tkgiKi _tkgi_) of
+                                                                                                                                                            { _ki | _ki `seq` (True) ->
+                                                                                                                                                            (case (_ki) of
+                                                                                                                                                             { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                             (case (_lhsIkiVarMp) of
+                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                              (case (_lhsIknPolCtx) of
+                                                                                                                                                               { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                               (case (Map.singleton _tyVarId TyVarWild_NoQuantTyExpr_YesQuantLetBinding) of
+                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                (case ((let sem_TyExpr_Wild_7 :: T_TyExpr_7
+                                                                                                                                                                            sem_TyExpr_Wild_7 =
+                                                                                                                                                                                (\ _lhsIclGam ->
+                                                                                                                                                                                     _lhsIclGam `seq`
+                                                                                                                                                                                     ((case (_ty) of
+                                                                                                                                                                                       { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                       (case ((let sem_TyExpr_Wild_8 :: T_TyExpr_8
+                                                                                                                                                                                                   sem_TyExpr_Wild_8 =
+                                                                                                                                                                                                       (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                          _lhsIfinTyKiGam
+                                                                                                                                                                                                          _lhsIfinTyVarMp
+                                                                                                                                                                                                          _lhsIkiGam
+                                                                                                                                                                                                          _lhsImoduleNm
+                                                                                                                                                                                                          _lhsIopts
+                                                                                                                                                                                                          _lhsIsysfEnv
+                                                                                                                                                                                                          _lhsItr
+                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                            _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                              (_lhsIkiGam `seq`
+                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                (_lhsIopts `seq`
+                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       ((case (Seq.empty) of
+                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                          (case (hsnUnknown) of
+                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                           (case (pp "...") of
+                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                            (case (_pp) of
+                                                                                                                                                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                             (case (Set.empty) of
+                                                                                                                                                                                                                              { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                              (case (Set.empty) of
+                                                                                                                                                                                                                               { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                               (case (Seq.empty) of
+                                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                (case (Map.empty) of
+                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                  (case (trppEmpty) of
+                                                                                                                                                                                                                                   { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                    { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                               in  sem_TyExpr_Wild_8)) of
+                                                                                                                                                                                        { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                        ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                        in  sem_TyExpr_Wild_7)) of
+                                                                                                                                                                 { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                           in  sem_TyExpr_Wild_6)) of
+                                                                                                                                    { ( sem_TyExpr_6) | True ->
+                                                                                                                                    ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
+                                                                                                                   in  sem_TyExpr_Wild_5)) of
+                                                                                                            { ( sem_TyExpr_5) | True ->
+                                                                                                            ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
+                                                                                          in  sem_TyExpr_Wild_4)) of
+                                                                                   { ( sem_TyExpr_4) | True ->
+                                                                                   ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                   in  sem_TyExpr_Wild_3)) of
+                                                            { ( sem_TyExpr_3) | True ->
+                                                            ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) })))
+                                      in  sem_TyExpr_Wild_2)) of
+                               { ( sem_TyExpr_2) | True ->
+                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
+              in  sem_TyExpr_Wild_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_Mono :: Range ->
+                   T_TyExpr
+
+sem_TyExpr_Mono hsrange_ | hsrange_ `seq` (True) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_Mono_1 :: T_TyExpr_1
+                  sem_TyExpr_Mono_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup236 | __tup236 `seq` (True) ->
+                             (case (__tup236) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_TyExpr_Mono_2 :: T_TyExpr_2
+                                          sem_TyExpr_Mono_2 =
+                                              (\ _lhsItyGam ->
+                                                   _lhsItyGam `seq`
+                                                   ((case (__tup236) of
+                                                     { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                     (case (_lUniq) of
+                                                      { _tyVarId | _tyVarId `seq` (True) ->
+                                                      (case (mkNewTyVar _tyVarId) of
+                                                       { _tvarv | _tvarv `seq` (True) ->
+                                                       (case (mkTGI (Ty_Ann TyAnn_Mono _tvarv)) of
+                                                        { _tgi_ | _tgi_ `seq` (True) ->
+                                                        (case (tgiTy _tgi_) of
+                                                         { _ty | _ty `seq` (True) ->
+                                                         (case (_ty) of
+                                                          { _lhsOty | _lhsOty `seq` (True) ->
+                                                          (case (_lhsItyGam) of
+                                                           { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                           (case ((let sem_TyExpr_Mono_3 :: T_TyExpr_3
+                                                                       sem_TyExpr_Mono_3 =
+                                                                           (\ _lhsIknPolCtx ->
+                                                                                _lhsIknPolCtx `seq`
+                                                                                ((case ([]) of
+                                                                                  { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                  (case ((let sem_TyExpr_Mono_4 :: T_TyExpr_4
+                                                                                              sem_TyExpr_Mono_4 =
+                                                                                                  (\ _lhsIpolGam
+                                                                                                     _lhsIpolVarMp ->
+                                                                                                       _lhsIpolGam `seq`
+                                                                                                       (_lhsIpolVarMp `seq`
+                                                                                                        ((case (Nothing) of
+                                                                                                          { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                          (case (_lhsIpolVarMp) of
+                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                           (case ((let sem_TyExpr_Mono_5 :: T_TyExpr_5
+                                                                                                                       sem_TyExpr_Mono_5 =
+                                                                                                                           (\ _lhsItyKiGam ->
+                                                                                                                                _lhsItyKiGam `seq`
+                                                                                                                                ((case (emptyGam) of
+                                                                                                                                  { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                  (case (_lhsItyKiGam) of
+                                                                                                                                   { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                   (case ((let sem_TyExpr_Mono_6 :: T_TyExpr_6
+                                                                                                                                               sem_TyExpr_Mono_6 =
+                                                                                                                                                   (\ _lhsIkiVarMp ->
+                                                                                                                                                        _lhsIkiVarMp `seq`
+                                                                                                                                                        ((case (emptyGam) of
+                                                                                                                                                          { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                          (case (TyKiGamInfo _tvarv) of
+                                                                                                                                                           { _tkgi_ | _tkgi_ `seq` (True) ->
+                                                                                                                                                           (case (tkgiKi _tkgi_) of
+                                                                                                                                                            { _ki | _ki `seq` (True) ->
+                                                                                                                                                            (case (_ki) of
+                                                                                                                                                             { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                             (case (_lhsIkiVarMp) of
+                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                              (case (_lhsIknPolCtx) of
+                                                                                                                                                               { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                               (case (Map.singleton _tyVarId TyVarWild_NoQuantTyExpr_NoQuantLetBinding) of
+                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                (case ((let sem_TyExpr_Mono_7 :: T_TyExpr_7
+                                                                                                                                                                            sem_TyExpr_Mono_7 =
+                                                                                                                                                                                (\ _lhsIclGam ->
+                                                                                                                                                                                     _lhsIclGam `seq`
+                                                                                                                                                                                     ((case (_ty) of
+                                                                                                                                                                                       { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                       (case ((let sem_TyExpr_Mono_8 :: T_TyExpr_8
+                                                                                                                                                                                                   sem_TyExpr_Mono_8 =
+                                                                                                                                                                                                       (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                          _lhsIfinTyKiGam
+                                                                                                                                                                                                          _lhsIfinTyVarMp
+                                                                                                                                                                                                          _lhsIkiGam
+                                                                                                                                                                                                          _lhsImoduleNm
+                                                                                                                                                                                                          _lhsIopts
+                                                                                                                                                                                                          _lhsIsysfEnv
+                                                                                                                                                                                                          _lhsItr
+                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                            _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                              (_lhsIkiGam `seq`
+                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                (_lhsIopts `seq`
+                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       ((case (Seq.empty) of
+                                                                                                                                                                                                                         { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                         (case ([]) of
+                                                                                                                                                                                                                          { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                          (case (hsnUnknown) of
+                                                                                                                                                                                                                           { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                           (case (pp "%...") of
+                                                                                                                                                                                                                            { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                            (case (_pp) of
+                                                                                                                                                                                                                             { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                             (case (Set.empty) of
+                                                                                                                                                                                                                              { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                              (case (Set.empty) of
+                                                                                                                                                                                                                               { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                               (case (Seq.empty) of
+                                                                                                                                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                (case (Map.empty) of
+                                                                                                                                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                 (case (_pp) of
+                                                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                  (case (trppEmpty) of
+                                                                                                                                                                                                                                   { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                   (case ([]) of
+                                                                                                                                                                                                                                    { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                               in  sem_TyExpr_Mono_8)) of
+                                                                                                                                                                                        { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                        ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                        in  sem_TyExpr_Mono_7)) of
+                                                                                                                                                                 { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                           in  sem_TyExpr_Mono_6)) of
+                                                                                                                                    { ( sem_TyExpr_6) | True ->
+                                                                                                                                    ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
+                                                                                                                   in  sem_TyExpr_Mono_5)) of
+                                                                                                            { ( sem_TyExpr_5) | True ->
+                                                                                                            ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
+                                                                                          in  sem_TyExpr_Mono_4)) of
+                                                                                   { ( sem_TyExpr_4) | True ->
+                                                                                   ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                   in  sem_TyExpr_Mono_3)) of
+                                                            { ( sem_TyExpr_3) | True ->
+                                                            ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) })))
+                                      in  sem_TyExpr_Mono_2)) of
+                               { ( sem_TyExpr_2) | True ->
+                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
+              in  sem_TyExpr_Mono_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_Var :: Range ->
+                  HsName ->
+                  T_TyExpr
+
+sem_TyExpr_Var hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_Var_1 :: T_TyExpr_1
+                  sem_TyExpr_Var_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_17_fitsIn_pol) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_17_fitsIn_pol,lUniq_ki)}}} )) of
+                             { __tup241 | __tup241 `seq` (True) ->
+                             (case (__tup241) of
+                              { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_TyExpr_Var_2 :: T_TyExpr_2
+                                          sem_TyExpr_Var_2 =
+                                              (\ _lhsItyGam ->
+                                                   _lhsItyGam `seq`
+                                                   ((case (__tup241) of
+                                                     { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
+                                                     (case (tyGamLookupOrAdd _lUniq nm_ _lhsItyGam _lhsItyGam) of
+                                                      { __tup239 | __tup239 `seq` (True) ->
+                                                      (case (__tup239) of
+                                                       { (_tgi_,_) | _tgi_ `seq` (True) ->
+                                                       (case (tgiTy _tgi_) of
+                                                        { _ty | _ty `seq` (True) ->
+                                                        (case (_ty) of
+                                                         { _lhsOty | _lhsOty `seq` (True) ->
+                                                         (case (__tup239) of
+                                                          { (_,_lhsOtyGam) | _lhsOtyGam `seq` (True) ->
+                                                          (case ((let sem_TyExpr_Var_3 :: T_TyExpr_3
+                                                                      sem_TyExpr_Var_3 =
+                                                                          (\ _lhsIknPolCtx ->
+                                                                               _lhsIknPolCtx `seq`
+                                                                               ((case ([_lhsIknPolCtx]) of
+                                                                                 { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                 (case ((let sem_TyExpr_Var_4 :: T_TyExpr_4
+                                                                                             sem_TyExpr_Var_4 =
+                                                                                                 (\ _lhsIpolGam
+                                                                                                    _lhsIpolVarMp ->
+                                                                                                      _lhsIpolGam `seq`
+                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                       ((case (Nothing) of
+                                                                                                         { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                         (case (__tup241) of
+                                                                                                          { (_,_,_lUniq_17_fitsIn_pol,_) | _lUniq_17_fitsIn_pol `seq` (True) ->
+                                                                                                          (case (polGamLookupErr nm_ _lhsIpolGam) of
+                                                                                                           { __tup237 | __tup237 `seq` (True) ->
+                                                                                                           (case (__tup237) of
+                                                                                                            { (_pgi_,_) | _pgi_ `seq` (True) ->
+                                                                                                            (case (pgiPol _pgi_) of
+                                                                                                             { _polFromEnv | _polFromEnv `seq` (True) ->
+                                                                                                             (case (fitsIn weakFIOpts defaultFIEnv _lUniq_17_fitsIn_pol _lhsIpolVarMp _polFromEnv _lhsIknPolCtx) of
+                                                                                                              { _foPol | _foPol `seq` (True) ->
+                                                                                                              (case (foVarMp _foPol `varUpd` _lhsIpolVarMp) of
+                                                                                                               { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                               (case ((let sem_TyExpr_Var_5 :: T_TyExpr_5
+                                                                                                                           sem_TyExpr_Var_5 =
+                                                                                                                               (\ _lhsItyKiGam ->
+                                                                                                                                    _lhsItyKiGam `seq`
+                                                                                                                                    ((case (__tup241) of
+                                                                                                                                      { (_,_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
+                                                                                                                                      (case (tyKiGamLookupOrAdd _lUniq_ki (tgiTy _tgi_) _lhsItyKiGam) of
+                                                                                                                                       { __tup240 | __tup240 `seq` (True) ->
+                                                                                                                                       (case (__tup240) of
+                                                                                                                                        { (_,_,_tyKiGamNew) | _tyKiGamNew `seq` (True) ->
+                                                                                                                                        (case (_tyKiGamNew) of
+                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                         (case (__tup240) of
+                                                                                                                                          { (_,_lhsOtyKiGam,_) | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                          (case ((let sem_TyExpr_Var_6 :: T_TyExpr_6
+                                                                                                                                                      sem_TyExpr_Var_6 =
+                                                                                                                                                          (\ _lhsIkiVarMp ->
+                                                                                                                                                               _lhsIkiVarMp `seq`
+                                                                                                                                                               ((case (gamSingleton nm_ (mkPGI _lhsIknPolCtx)) of
+                                                                                                                                                                 { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                 (case (__tup240) of
+                                                                                                                                                                  { (_tkgi_,_,_) | _tkgi_ `seq` (True) ->
+                                                                                                                                                                  (case (tkgiKi _tkgi_) of
+                                                                                                                                                                   { _ki | _ki `seq` (True) ->
+                                                                                                                                                                   (case (_ki) of
+                                                                                                                                                                    { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                    (case (_lhsIkiVarMp) of
+                                                                                                                                                                     { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                     (case (foTy _foPol) of
+                                                                                                                                                                      { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                      (case (Map.empty) of
+                                                                                                                                                                       { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                       (case ((let sem_TyExpr_Var_7 :: T_TyExpr_7
+                                                                                                                                                                                   sem_TyExpr_Var_7 =
+                                                                                                                                                                                       (\ _lhsIclGam ->
+                                                                                                                                                                                            _lhsIclGam `seq`
+                                                                                                                                                                                            ((case (_ty) of
+                                                                                                                                                                                              { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                              (case ((let sem_TyExpr_Var_8 :: T_TyExpr_8
+                                                                                                                                                                                                          sem_TyExpr_Var_8 =
+                                                                                                                                                                                                              (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                 _lhsIfinTyKiGam
+                                                                                                                                                                                                                 _lhsIfinTyVarMp
+                                                                                                                                                                                                                 _lhsIkiGam
+                                                                                                                                                                                                                 _lhsImoduleNm
+                                                                                                                                                                                                                 _lhsIopts
+                                                                                                                                                                                                                 _lhsIsysfEnv
+                                                                                                                                                                                                                 _lhsItr
+                                                                                                                                                                                                                 _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                 _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                 _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                 _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                   _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                   (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                    (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                     (_lhsIkiGam `seq`
+                                                                                                                                                                                                                      (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                       (_lhsIopts `seq`
+                                                                                                                                                                                                                        (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                         (_lhsItr `seq`
+                                                                                                                                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                              ((case (Seq.empty) of
+                                                                                                                                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                (case ([]) of
+                                                                                                                                                                                                                                 { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                 (case (hsnUnknown) of
+                                                                                                                                                                                                                                  { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                  (case (pp nm_) of
+                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                   (case (_pp) of
+                                                                                                                                                                                                                                    { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                    (case (Set.empty) of
+                                                                                                                                                                                                                                     { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                     (case (Set.empty) of
+                                                                                                                                                                                                                                      { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                      (case (rngLift _range mkNestErr' _pp [foErrSq _foPol    ]) of
+                                                                                                                                                                                                                                       { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                       (case (Map.empty) of
+                                                                                                                                                                                                                                        { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                        (case (_pp) of
+                                                                                                                                                                                                                                         { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                         (case (trppEmpty) of
+                                                                                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                          (case ([]) of
+                                                                                                                                                                                                                                           { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                           ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                      in  sem_TyExpr_Var_8)) of
+                                                                                                                                                                                               { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                               ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                               in  sem_TyExpr_Var_7)) of
+                                                                                                                                                                        { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                        ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                                  in  sem_TyExpr_Var_6)) of
+                                                                                                                                           { ( sem_TyExpr_6) | True ->
+                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) })))
+                                                                                                                       in  sem_TyExpr_Var_5)) of
+                                                                                                                { ( sem_TyExpr_5) | True ->
+                                                                                                                ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
+                                                                                         in  sem_TyExpr_Var_4)) of
+                                                                                  { ( sem_TyExpr_4) | True ->
+                                                                                  ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                  in  sem_TyExpr_Var_3)) of
+                                                           { ( sem_TyExpr_3) | True ->
+                                                           ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
+                                      in  sem_TyExpr_Var_2)) of
+                               { ( sem_TyExpr_2) | True ->
+                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
+              in  sem_TyExpr_Var_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_VarWild :: Range ->
+                      HsName ->
+                      T_TyExpr
+
+sem_TyExpr_VarWild hsrange_ nm_ | hsrange_ `seq` (nm_ `seq` (True)) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_VarWild_1 :: T_TyExpr_1
+                  sem_TyExpr_VarWild_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_ki)}} )) of
+                             { __tup245 | __tup245 `seq` (True) ->
+                             (case (__tup245) of
+                              { (_lhsOgUniq,_,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_TyExpr_VarWild_2 :: T_TyExpr_2
+                                          sem_TyExpr_VarWild_2 =
+                                              (\ _lhsItyGam ->
+                                                   _lhsItyGam `seq`
+                                                   ((case (__tup245) of
+                                                     { (_,_lUniq,_) | _lUniq `seq` (True) ->
+                                                     (case (tyGamLookupOrAdd _lUniq nm_ _lhsItyGam _lhsItyGam) of
+                                                      { __tup243 | __tup243 `seq` (True) ->
+                                                      (case (__tup243) of
+                                                       { (_tgi_,_) | _tgi_ `seq` (True) ->
+                                                       (case (tgiTy _tgi_) of
+                                                        { _ty | _ty `seq` (True) ->
+                                                        (case (_ty) of
+                                                         { _lhsOty | _lhsOty `seq` (True) ->
+                                                         (case (__tup243) of
+                                                          { (_,_lhsOtyGam) | _lhsOtyGam `seq` (True) ->
+                                                          (case ((let sem_TyExpr_VarWild_3 :: T_TyExpr_3
+                                                                      sem_TyExpr_VarWild_3 =
+                                                                          (\ _lhsIknPolCtx ->
+                                                                               _lhsIknPolCtx `seq`
+                                                                               ((case ([]) of
+                                                                                 { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                 (case ((let sem_TyExpr_VarWild_4 :: T_TyExpr_4
+                                                                                             sem_TyExpr_VarWild_4 =
+                                                                                                 (\ _lhsIpolGam
+                                                                                                    _lhsIpolVarMp ->
+                                                                                                      _lhsIpolGam `seq`
+                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                       ((case (Nothing) of
+                                                                                                         { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                         (case (_lhsIpolVarMp) of
+                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                          (case ((let sem_TyExpr_VarWild_5 :: T_TyExpr_5
+                                                                                                                      sem_TyExpr_VarWild_5 =
+                                                                                                                          (\ _lhsItyKiGam ->
+                                                                                                                               _lhsItyKiGam `seq`
+                                                                                                                               ((case (__tup245) of
+                                                                                                                                 { (_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
+                                                                                                                                 (case (tyKiGamLookupOrAdd _lUniq_ki (tgiTy _tgi_) _lhsItyKiGam) of
+                                                                                                                                  { __tup244 | __tup244 `seq` (True) ->
+                                                                                                                                  (case (__tup244) of
+                                                                                                                                   { (_,_,_tyKiGamNew) | _tyKiGamNew `seq` (True) ->
+                                                                                                                                   (case (_tyKiGamNew) of
+                                                                                                                                    { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                    (case (__tup244) of
+                                                                                                                                     { (_,_lhsOtyKiGam,_) | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                     (case ((let sem_TyExpr_VarWild_6 :: T_TyExpr_6
+                                                                                                                                                 sem_TyExpr_VarWild_6 =
+                                                                                                                                                     (\ _lhsIkiVarMp ->
+                                                                                                                                                          _lhsIkiVarMp `seq`
+                                                                                                                                                          ((case (emptyGam) of
+                                                                                                                                                            { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                            (case (__tup244) of
+                                                                                                                                                             { (_tkgi_,_,_) | _tkgi_ `seq` (True) ->
+                                                                                                                                                             (case (tkgiKi _tkgi_) of
+                                                                                                                                                              { _ki | _ki `seq` (True) ->
+                                                                                                                                                              (case (_ki) of
+                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                               (case (_lhsIkiVarMp) of
+                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                (case (_lhsIknPolCtx) of
+                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                 (case (_lUniq) of
+                                                                                                                                                                  { _tyVarId | _tyVarId `seq` (True) ->
+                                                                                                                                                                  (case (Map.singleton _tyVarId TyVarWild_NoQuantTyExpr_YesQuantLetBinding) of
+                                                                                                                                                                   { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                   (case ((let sem_TyExpr_VarWild_7 :: T_TyExpr_7
+                                                                                                                                                                               sem_TyExpr_VarWild_7 =
+                                                                                                                                                                                   (\ _lhsIclGam ->
+                                                                                                                                                                                        _lhsIclGam `seq`
+                                                                                                                                                                                        ((case (_ty) of
+                                                                                                                                                                                          { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                          (case ((let sem_TyExpr_VarWild_8 :: T_TyExpr_8
+                                                                                                                                                                                                      sem_TyExpr_VarWild_8 =
+                                                                                                                                                                                                          (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                             _lhsIfinTyKiGam
+                                                                                                                                                                                                             _lhsIfinTyVarMp
+                                                                                                                                                                                                             _lhsIkiGam
+                                                                                                                                                                                                             _lhsImoduleNm
+                                                                                                                                                                                                             _lhsIopts
+                                                                                                                                                                                                             _lhsIsysfEnv
+                                                                                                                                                                                                             _lhsItr
+                                                                                                                                                                                                             _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                             _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                             _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                             _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                               _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                               (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                 (_lhsIkiGam `seq`
+                                                                                                                                                                                                                  (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                   (_lhsIopts `seq`
+                                                                                                                                                                                                                    (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                     (_lhsItr `seq`
+                                                                                                                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                        (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                          ((case (Seq.empty) of
+                                                                                                                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                             { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                             (case (hsnUnknown) of
+                                                                                                                                                                                                                              { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                              (case ("%" >|< pp nm_) of
+                                                                                                                                                                                                                               { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                               (case (_pp) of
+                                                                                                                                                                                                                                { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                (case (Set.empty) of
+                                                                                                                                                                                                                                 { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                 (case (Set.empty) of
+                                                                                                                                                                                                                                  { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                  (case (Seq.empty) of
+                                                                                                                                                                                                                                   { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                   (case (Map.empty) of
+                                                                                                                                                                                                                                    { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                    (case (_pp) of
+                                                                                                                                                                                                                                     { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                     (case (trppEmpty) of
+                                                                                                                                                                                                                                      { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                      (case ([]) of
+                                                                                                                                                                                                                                       { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                       ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                  in  sem_TyExpr_VarWild_8)) of
+                                                                                                                                                                                           { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                           ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                           in  sem_TyExpr_VarWild_7)) of
+                                                                                                                                                                    { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                    ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) })))
+                                                                                                                                             in  sem_TyExpr_VarWild_6)) of
+                                                                                                                                      { ( sem_TyExpr_6) | True ->
+                                                                                                                                      ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) })))
+                                                                                                                  in  sem_TyExpr_VarWild_5)) of
+                                                                                                           { ( sem_TyExpr_5) | True ->
+                                                                                                           ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
+                                                                                         in  sem_TyExpr_VarWild_4)) of
+                                                                                  { ( sem_TyExpr_4) | True ->
+                                                                                  ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                  in  sem_TyExpr_VarWild_3)) of
+                                                           { ( sem_TyExpr_3) | True ->
+                                                           ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
+                                      in  sem_TyExpr_VarWild_2)) of
+                               { ( sem_TyExpr_2) | True ->
+                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
+              in  sem_TyExpr_VarWild_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_Quant :: Range ->
+                    TyQu ->
+                    HsName ->
+                    T_TyExpr ->
+                    T_TyExpr
+
+sem_TyExpr_Quant hsrange_ qu_ tyVar_ tyExpr_ | hsrange_ `seq` (qu_ `seq` (tyVar_ `seq` (tyExpr_ `seq` (True)))) =
+    (case (tyExpr_) of
+     { ( _tyExprIrange,tyExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_Quant_1 :: T_TyExpr_1
+                       sem_TyExpr_Quant_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_ki)}} )) of
+                                  { __tup248 | __tup248 `seq` (True) ->
+                                  (case (__tup248) of
+                                   { (_tyExprOgUniq,_,_) | _tyExprOgUniq `seq` (True) ->
+                                   (case (tyExpr_1 _tyExprOgUniq) of
+                                    { ( _tyExprIgUniq,tyExpr_2) | True ->
+                                        (case (_tyExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_TyExpr_Quant_2 :: T_TyExpr_2
+                                                     sem_TyExpr_Quant_2 =
+                                                         (\ _lhsItyGam ->
+                                                              _lhsItyGam `seq`
+                                                              ((case (__tup248) of
+                                                                { (_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
+                                                                (case (__tup248) of
+                                                                 { (_,_lUniq,_) | _lUniq `seq` (True) ->
+                                                                 (case (let  t = mkTyVar _lUniq
+                                                                        in   (_lUniq,mkTGI t,TyKiGamInfo (mkNewTyVar _lUniq_ki))) of
+                                                                  { __tup247 | __tup247 `seq` (True) ->
+                                                                  (case (__tup247) of
+                                                                   { (_,_,_tkgi_) | _tkgi_ `seq` (True) ->
+                                                                   (case (__tup247) of
+                                                                    { (_,_tgi_,_) | _tgi_ `seq` (True) ->
+                                                                    (case (__tup247) of
+                                                                     { (_tv,_,_) | _tv `seq` (True) ->
+                                                                     (case (tvGathFlowIn  (tyVar_ `gamSingleton` _tgi_) _lhsItyGam) of
+                                                                      { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
+                                                                      (case (tyExpr_2 _tyExprOtyGam) of
+                                                                       { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
+                                                                           (case (Ty_TBind qu_ _tv
+                                                                                           (tkgiKi _tkgi_)
+                                                                                           _tyExprIty) of
+                                                                            { _ty | _ty `seq` (True) ->
+                                                                            (case (_ty) of
+                                                                             { _lhsOty | _lhsOty `seq` (True) ->
+                                                                             (case (tvGathFlowOut _lhsItyGam _tyExprItyGam) of
+                                                                              { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                              (case ((let sem_TyExpr_Quant_3 :: T_TyExpr_3
+                                                                                          sem_TyExpr_Quant_3 =
+                                                                                              (\ _lhsIknPolCtx ->
+                                                                                                   _lhsIknPolCtx `seq`
+                                                                                                   ((case ([]) of
+                                                                                                     { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                                     (case ((let sem_TyExpr_Quant_4 :: T_TyExpr_4
+                                                                                                                 sem_TyExpr_Quant_4 =
+                                                                                                                     (\ _lhsIpolGam
+                                                                                                                        _lhsIpolVarMp ->
+                                                                                                                          _lhsIpolGam `seq`
+                                                                                                                          (_lhsIpolVarMp `seq`
+                                                                                                                           ((case (Nothing) of
+                                                                                                                             { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                             (case (_lhsIpolVarMp) of
+                                                                                                                              { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
+                                                                                                                              (case (_lhsIpolGam) of
+                                                                                                                               { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
+                                                                                                                               (case (_lhsIknPolCtx) of
+                                                                                                                                { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
+                                                                                                                                (case (tyExpr_3 _tyExprOknPolCtx) of
+                                                                                                                                 { ( _tyExprIpolVarL,tyExpr_4) | True ->
+                                                                                                                                     (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
+                                                                                                                                      { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
+                                                                                                                                          (case (_tyExprIpolVarMp) of
+                                                                                                                                           { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                           (case ((let sem_TyExpr_Quant_5 :: T_TyExpr_5
+                                                                                                                                                       sem_TyExpr_Quant_5 =
+                                                                                                                                                           (\ _lhsItyKiGam ->
+                                                                                                                                                                _lhsItyKiGam `seq`
+                                                                                                                                                                ((case (tgiTy _tgi_ `tyKiGamSingleton` _tkgi_) of
+                                                                                                                                                                  { _tyKiGamNew | _tyKiGamNew `seq` (True) ->
+                                                                                                                                                                  (case (tvGathFlowIn  _tyKiGamNew _lhsItyKiGam) of
+                                                                                                                                                                   { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                                   (case (tyExpr_5 _tyExprOtyKiGam) of
+                                                                                                                                                                    { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
+                                                                                                                                                                        (case (gamUnions [_tyKiGamNew,_tyExprIintlTyKiGam]) of
+                                                                                                                                                                         { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                         (case (tvGathFlowOut _lhsItyKiGam _tyExprItyKiGam) of
+                                                                                                                                                                          { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                          (case ((let sem_TyExpr_Quant_6 :: T_TyExpr_6
+                                                                                                                                                                                      sem_TyExpr_Quant_6 =
+                                                                                                                                                                                          (\ _lhsIkiVarMp ->
+                                                                                                                                                                                               _lhsIkiVarMp `seq`
+                                                                                                                                                                                               ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                                 { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                 (case (tyExpr_6 _tyExprOkiVarMp) of
+                                                                                                                                                                                                  { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
+                                                                                                                                                                                                      (case (_tyExprIgathTyVarPolGam) of
+                                                                                                                                                                                                       { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                                       (case (_tyExprIki) of
+                                                                                                                                                                                                        { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                                        (case (_tyExprIkiVarMp) of
+                                                                                                                                                                                                         { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                         (case (_tyExprIpol) of
+                                                                                                                                                                                                          { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                          (case (_tyExprItyVarWildMp) of
+                                                                                                                                                                                                           { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                           (case ((let sem_TyExpr_Quant_7 :: T_TyExpr_7
+                                                                                                                                                                                                                       sem_TyExpr_Quant_7 =
+                                                                                                                                                                                                                           (\ _lhsIclGam ->
+                                                                                                                                                                                                                                _lhsIclGam `seq`
+                                                                                                                                                                                                                                ((case (_ty) of
+                                                                                                                                                                                                                                  { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                                  (case ((let sem_TyExpr_Quant_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                              sem_TyExpr_Quant_8 =
+                                                                                                                                                                                                                                                  (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                     _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                     _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                     _lhsIkiGam
+                                                                                                                                                                                                                                                     _lhsImoduleNm
+                                                                                                                                                                                                                                                     _lhsIopts
+                                                                                                                                                                                                                                                     _lhsIsysfEnv
+                                                                                                                                                                                                                                                     _lhsItr
+                                                                                                                                                                                                                                                     _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                     _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                     _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                     _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                       _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                       (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                        (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                         (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                          (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                           (_lhsIopts `seq`
+                                                                                                                                                                                                                                                            (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                             (_lhsItr `seq`
+                                                                                                                                                                                                                                                              (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                  ((case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                    { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                                                                     { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                                                                         (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                          { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                           { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                            { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsItr) of
+                                                                                                                                                                                                                                                                              { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                               { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                 { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                  { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                   { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                    { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                     { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                      { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                          (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case ([]) of
+                                                                                                                                                                                                                                                                                            { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                             { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                             (case (showTyQu qu_ >#< tyVar_ >#< "." >#< _tyExprIpp) of
+                                                                                                                                                                                                                                                                                              { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_pp) of
+                                                                                                                                                                                                                                                                                               { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                                { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                                 { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_tyExprIerrSq) of
+                                                                                                                                                                                                                                                                                                  { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                   { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_pp) of
+                                                                                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_tyExprItyWildL) of
+                                                                                                                                                                                                                                                                                                      { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                          in  sem_TyExpr_Quant_8)) of
+                                                                                                                                                                                                                                   { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                                   ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                                                                   in  sem_TyExpr_Quant_7)) of
+                                                                                                                                                                                                            { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                            ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                                                                  in  sem_TyExpr_Quant_6)) of
+                                                                                                                                                                           { ( sem_TyExpr_6) | True ->
+                                                                                                                                                                           ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) }) })))
+                                                                                                                                                   in  sem_TyExpr_Quant_5)) of
+                                                                                                                                            { ( sem_TyExpr_5) | True ->
+                                                                                                                                            ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }) }))))
+                                                                                                             in  sem_TyExpr_Quant_4)) of
+                                                                                                      { ( sem_TyExpr_4) | True ->
+                                                                                                      ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                                      in  sem_TyExpr_Quant_3)) of
+                                                                               { ( sem_TyExpr_3) | True ->
+                                                                               ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) }) }) }) }) }) })))
+                                                 in  sem_TyExpr_Quant_2)) of
+                                          { ( sem_TyExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_TyExpr_2) }) }) }) }) })))
+                   in  sem_TyExpr_Quant_1)) of
+            { ( sem_TyExpr_1) | True ->
+            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
+
+sem_TyExpr_Row :: Range ->
+                  T_RowTyExpr ->
+                  T_TyExpr
+
+sem_TyExpr_Row hsrange_ rowTyExpr_ | hsrange_ `seq` (rowTyExpr_ `seq` (True)) =
+    (case (rowTyExpr_) of
+     { ( _rowTyExprIrange,rowTyExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _rowTyExprIrange
+                                                     , _rowTyExprIrange
+                                                                    ]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_Row_1 :: T_TyExpr_1
+                       sem_TyExpr_Row_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _rowTyExprOgUniq | _rowTyExprOgUniq `seq` (True) ->
+                                  (case (positionalFldNames) of
+                                   { _rowTyExprOpositionalFldNmL | _rowTyExprOpositionalFldNmL `seq` (True) ->
+                                   (case (rowTyExpr_1 _rowTyExprOgUniq _rowTyExprOpositionalFldNmL) of
+                                    { ( _rowTyExprIgUniq,_rowTyExprIpositionalFldNmL,rowTyExpr_2) | True ->
+                                        (case (_rowTyExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_TyExpr_Row_2 :: T_TyExpr_2
+                                                     sem_TyExpr_Row_2 =
+                                                         (\ _lhsItyGam ->
+                                                              _lhsItyGam `seq`
+                                                              ((case (_lhsItyGam) of
+                                                                { _rowTyExprOtyGam | _rowTyExprOtyGam `seq` (True) ->
+                                                                (case (rowTyExpr_2 _rowTyExprOtyGam) of
+                                                                 { ( _rowTyExprItyGam,_rowTyExprItyRow,rowTyExpr_3) | True ->
+                                                                     (case (_rowTyExprItyRow) of
+                                                                      { _ty | _ty `seq` (True) ->
+                                                                      (case (_ty) of
+                                                                       { _lhsOty | _lhsOty `seq` (True) ->
+                                                                       (case (_rowTyExprItyGam) of
+                                                                        { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                        (case ((let sem_TyExpr_Row_3 :: T_TyExpr_3
+                                                                                    sem_TyExpr_Row_3 =
+                                                                                        (\ _lhsIknPolCtx ->
+                                                                                             _lhsIknPolCtx `seq`
+                                                                                             ((case ([]) of
+                                                                                               { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                               (case ((let sem_TyExpr_Row_4 :: T_TyExpr_4
+                                                                                                           sem_TyExpr_Row_4 =
+                                                                                                               (\ _lhsIpolGam
+                                                                                                                  _lhsIpolVarMp ->
+                                                                                                                    _lhsIpolGam `seq`
+                                                                                                                    (_lhsIpolVarMp `seq`
+                                                                                                                     ((case (Nothing) of
+                                                                                                                       { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                       (case (_lhsIpolVarMp) of
+                                                                                                                        { _rowTyExprOpolVarMp | _rowTyExprOpolVarMp `seq` (True) ->
+                                                                                                                        (case (_lhsIpolGam) of
+                                                                                                                         { _rowTyExprOpolGam | _rowTyExprOpolGam `seq` (True) ->
+                                                                                                                         (case (_lhsIknPolCtx) of
+                                                                                                                          { _rowTyExprOknPolCtx | _rowTyExprOknPolCtx `seq` (True) ->
+                                                                                                                          (case (rowTyExpr_3 _rowTyExprOknPolCtx _rowTyExprOpolGam _rowTyExprOpolVarMp) of
+                                                                                                                           { ( _rowTyExprIpolVarMp,rowTyExpr_4) | True ->
+                                                                                                                               (case (_rowTyExprIpolVarMp) of
+                                                                                                                                { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                (case ((let sem_TyExpr_Row_5 :: T_TyExpr_5
+                                                                                                                                            sem_TyExpr_Row_5 =
+                                                                                                                                                (\ _lhsItyKiGam ->
+                                                                                                                                                     _lhsItyKiGam `seq`
+                                                                                                                                                     ((case (_lhsItyKiGam) of
+                                                                                                                                                       { _rowTyExprOtyKiGam | _rowTyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                       (case (rowTyExpr_4 _rowTyExprOtyKiGam) of
+                                                                                                                                                        { ( _rowTyExprIintlTyKiGam,_rowTyExprItyKiGam,rowTyExpr_5) | True ->
+                                                                                                                                                            (case (_rowTyExprIintlTyKiGam) of
+                                                                                                                                                             { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                             (case (_rowTyExprItyKiGam) of
+                                                                                                                                                              { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                              (case ((let sem_TyExpr_Row_6 :: T_TyExpr_6
+                                                                                                                                                                          sem_TyExpr_Row_6 =
+                                                                                                                                                                              (\ _lhsIkiVarMp ->
+                                                                                                                                                                                   _lhsIkiVarMp `seq`
+                                                                                                                                                                                   ((case (emptyGam) of
+                                                                                                                                                                                     { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                     (case (kiRow) of
+                                                                                                                                                                                      { _ki | _ki `seq` (True) ->
+                                                                                                                                                                                      (case (_ki) of
+                                                                                                                                                                                       { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIkiVarMp) of
+                                                                                                                                                                                        { _rowTyExprOkiVarMp | _rowTyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                        (case (rowTyExpr_5 _rowTyExprOkiVarMp) of
+                                                                                                                                                                                         { ( _rowTyExprIkiVarMp,_rowTyExprItyVarWildMp,rowTyExpr_6) | True ->
+                                                                                                                                                                                             (case (_rowTyExprIkiVarMp) of
+                                                                                                                                                                                              { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                              (case (_lhsIknPolCtx) of
+                                                                                                                                                                                               { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                               (case (_rowTyExprItyVarWildMp) of
+                                                                                                                                                                                                { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                (case ((let sem_TyExpr_Row_7 :: T_TyExpr_7
+                                                                                                                                                                                                            sem_TyExpr_Row_7 =
+                                                                                                                                                                                                                (\ _lhsIclGam ->
+                                                                                                                                                                                                                     _lhsIclGam `seq`
+                                                                                                                                                                                                                     ((case (_ty) of
+                                                                                                                                                                                                                       { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                       (case ((let sem_TyExpr_Row_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                   sem_TyExpr_Row_8 =
+                                                                                                                                                                                                                                       (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                          _lhsIfinTyKiGam
+                                                                                                                                                                                                                                          _lhsIfinTyVarMp
+                                                                                                                                                                                                                                          _lhsIkiGam
+                                                                                                                                                                                                                                          _lhsImoduleNm
+                                                                                                                                                                                                                                          _lhsIopts
+                                                                                                                                                                                                                                          _lhsIsysfEnv
+                                                                                                                                                                                                                                          _lhsItr
+                                                                                                                                                                                                                                          _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                          _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                          _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                          _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                            _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                            (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                             (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                              (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                               (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                (_lhsIopts `seq`
+                                                                                                                                                                                                                                                 (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                  (_lhsItr `seq`
+                                                                                                                                                                                                                                                   (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                    (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                     (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                      (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                       ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                         { _rowTyExprOvalTyGlobFreeTvarS | _rowTyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                          { _rowTyExprOtyTyTySigFreeTvarS | _rowTyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                           { _rowTyExprOtyTyGlobFreeTvarS | _rowTyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                            { _rowTyExprOtyKiGlobFreeTvarS | _rowTyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (_lhsItr) of
+                                                                                                                                                                                                                                                             { _rowTyExprOtr | _rowTyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                              { _rowTyExprOsysfEnv | _rowTyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_lhsIopts) of
+                                                                                                                                                                                                                                                               { _rowTyExprOopts | _rowTyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                { _rowTyExprOmoduleNm | _rowTyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                 { _rowTyExprOkiGam | _rowTyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                  { _rowTyExprOfinTyVarMp | _rowTyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                   { _rowTyExprOfinTyKiGam | _rowTyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                    { _rowTyExprOfinKiVarMp | _rowTyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                     { _rowTyExprOclGam | _rowTyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (rowTyExpr_6 _rowTyExprOclGam _rowTyExprOfinKiVarMp _rowTyExprOfinTyKiGam _rowTyExprOfinTyVarMp _rowTyExprOkiGam _rowTyExprOmoduleNm _rowTyExprOopts _rowTyExprOsysfEnv _rowTyExprOtr _rowTyExprOtyKiGlobFreeTvarS _rowTyExprOtyTyGlobFreeTvarS _rowTyExprOtyTyTySigFreeTvarS _rowTyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                      { ( _rowTyExprIallErrSq,_rowTyExprIclMissNmS,_rowTyExprIclNmS,_rowTyExprIerrSq,_rowTyExprIextNm,_rowTyExprIgathMentrelFilterMp,_rowTyExprIpp,_rowTyExprIppL,_rowTyExprItrpp) | True ->
+                                                                                                                                                                                                                                                                          (case (_rowTyExprIallErrSq) of
+                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (reverse _rowTyExprIppL) of
+                                                                                                                                                                                                                                                                            { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (_rowTyExprIextNm) of
+                                                                                                                                                                                                                                                                             { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_rowTyExprIpp) of
+                                                                                                                                                                                                                                                                              { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_rowTyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                               { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_rowTyExprIclNmS) of
+                                                                                                                                                                                                                                                                                { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_rowTyExprIerrSq) of
+                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_rowTyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (ppAppTop  (hsnRow,mkPPAppFun hsnRow _rowTyExprIpp)
+                                                                                                                                                                                                                                                                                                   (reverse _rowTyExprIppL) _rowTyExprIpp) of
+                                                                                                                                                                                                                                                                                   { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_pp) of
+                                                                                                                                                                                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_rowTyExprItrpp) of
+                                                                                                                                                                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case ([]) of
+                                                                                                                                                                                                                                                                                      { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                      ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                               in  sem_TyExpr_Row_8)) of
+                                                                                                                                                                                                                        { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                        ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                                                        in  sem_TyExpr_Row_7)) of
+                                                                                                                                                                                                 { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) }) })))
+                                                                                                                                                                      in  sem_TyExpr_Row_6)) of
+                                                                                                                                                               { ( sem_TyExpr_6) | True ->
+                                                                                                                                                               ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
+                                                                                                                                        in  sem_TyExpr_Row_5)) of
+                                                                                                                                 { ( sem_TyExpr_5) | True ->
+                                                                                                                                 ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }) }))))
+                                                                                                       in  sem_TyExpr_Row_4)) of
+                                                                                                { ( sem_TyExpr_4) | True ->
+                                                                                                ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                                in  sem_TyExpr_Row_3)) of
+                                                                         { ( sem_TyExpr_3) | True ->
+                                                                         ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) })))
+                                                 in  sem_TyExpr_Row_2)) of
+                                          { ( sem_TyExpr_2) | True ->
+                                          ( _lhsOgUniq,sem_TyExpr_2) }) }) }) }) })))
+                   in  sem_TyExpr_Row_1)) of
+            { ( sem_TyExpr_1) | True ->
+            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
+
+sem_TyExpr_Pred :: Range ->
+                   T_PrExpr ->
+                   T_TyExpr
+
+sem_TyExpr_Pred hsrange_ prExpr_ | hsrange_ `seq` (prExpr_ `seq` (True)) =
+    (case (prExpr_) of
+     { ( _prExprIrange,prExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _prExprIrange , _prExprIrange]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_Pred_1 :: T_TyExpr_1
+                       sem_TyExpr_Pred_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (_lhsIgUniq) of
+                                  { _prExprOgUniq | _prExprOgUniq `seq` (True) ->
+                                  (case (prExpr_1 _prExprOgUniq) of
+                                   { ( _prExprIgUniq,prExpr_2) | True ->
+                                       (case (_prExprIgUniq) of
+                                        { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                        (case ((let sem_TyExpr_Pred_2 :: T_TyExpr_2
+                                                    sem_TyExpr_Pred_2 =
+                                                        (\ _lhsItyGam ->
+                                                             _lhsItyGam `seq`
+                                                             ((case (_lhsItyGam) of
+                                                               { _prExprOtyGam | _prExprOtyGam `seq` (True) ->
+                                                               (case (prExpr_2 _prExprOtyGam) of
+                                                                { ( _prExprIprTy,_prExprIty,_prExprItyGam,prExpr_3) | True ->
+                                                                    (case (_prExprIty) of
+                                                                     { _lhsOty | _lhsOty `seq` (True) ->
+                                                                     (case (_prExprItyGam) of
+                                                                      { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                      (case ((let sem_TyExpr_Pred_3 :: T_TyExpr_3
+                                                                                  sem_TyExpr_Pred_3 =
+                                                                                      (\ _lhsIknPolCtx ->
+                                                                                           _lhsIknPolCtx `seq`
+                                                                                           ((case (_lhsIknPolCtx) of
+                                                                                             { _prExprOknPolCtx | _prExprOknPolCtx `seq` (True) ->
+                                                                                             (case (prExpr_3 _prExprOknPolCtx) of
+                                                                                              { ( _prExprIpolVarL,prExpr_4) | True ->
+                                                                                                  (case (_prExprIpolVarL) of
+                                                                                                   { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                                   (case ((let sem_TyExpr_Pred_4 :: T_TyExpr_4
+                                                                                                               sem_TyExpr_Pred_4 =
+                                                                                                                   (\ _lhsIpolGam
+                                                                                                                      _lhsIpolVarMp ->
+                                                                                                                        _lhsIpolGam `seq`
+                                                                                                                        (_lhsIpolVarMp `seq`
+                                                                                                                         ((case (Nothing) of
+                                                                                                                           { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                           (case (_lhsIpolVarMp) of
+                                                                                                                            { _prExprOpolVarMp | _prExprOpolVarMp `seq` (True) ->
+                                                                                                                            (case (_lhsIpolGam) of
+                                                                                                                             { _prExprOpolGam | _prExprOpolGam `seq` (True) ->
+                                                                                                                             (case (prExpr_4 _prExprOpolGam _prExprOpolVarMp) of
+                                                                                                                              { ( _prExprIpolVarMp,prExpr_5) | True ->
+                                                                                                                                  (case (_prExprIpolVarMp) of
+                                                                                                                                   { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                   (case ((let sem_TyExpr_Pred_5 :: T_TyExpr_5
+                                                                                                                                               sem_TyExpr_Pred_5 =
+                                                                                                                                                   (\ _lhsItyKiGam ->
+                                                                                                                                                        _lhsItyKiGam `seq`
+                                                                                                                                                        ((case (_lhsItyKiGam) of
+                                                                                                                                                          { _prExprOtyKiGam | _prExprOtyKiGam `seq` (True) ->
+                                                                                                                                                          (case (prExpr_5 _prExprOtyKiGam) of
+                                                                                                                                                           { ( _prExprIintlTyKiGam,_prExprItyKiGam,prExpr_6) | True ->
+                                                                                                                                                               (case (_prExprIintlTyKiGam) of
+                                                                                                                                                                { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                (case (_prExprItyKiGam) of
+                                                                                                                                                                 { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                 (case ((let sem_TyExpr_Pred_6 :: T_TyExpr_6
+                                                                                                                                                                             sem_TyExpr_Pred_6 =
+                                                                                                                                                                                 (\ _lhsIkiVarMp ->
+                                                                                                                                                                                      _lhsIkiVarMp `seq`
+                                                                                                                                                                                      ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                        { _prExprOkiVarMp | _prExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                        (case (prExpr_6 _prExprOkiVarMp) of
+                                                                                                                                                                                         { ( _prExprIgathTyVarPolGam,_prExprIki,_prExprIkiVarMp,_prExprItyVarWildMp,prExpr_7) | True ->
+                                                                                                                                                                                             (case (_prExprIgathTyVarPolGam) of
+                                                                                                                                                                                              { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                              (case (_prExprIki) of
+                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                               (case (_prExprIkiVarMp) of
+                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                (case (_lhsIknPolCtx) of
+                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                 (case (_prExprItyVarWildMp) of
+                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                  (case ((let sem_TyExpr_Pred_7 :: T_TyExpr_7
+                                                                                                                                                                                                              sem_TyExpr_Pred_7 =
+                                                                                                                                                                                                                  (\ _lhsIclGam ->
+                                                                                                                                                                                                                       _lhsIclGam `seq`
+                                                                                                                                                                                                                       ((case (_lhsIclGam) of
+                                                                                                                                                                                                                         { _prExprOclGam | _prExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                         (case (prExpr_7 _prExprOclGam) of
+                                                                                                                                                                                                                          { ( _prExprIevTy,prExpr_8) | True ->
+                                                                                                                                                                                                                              (case (_prExprIevTy) of
+                                                                                                                                                                                                                               { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                               (case ((let sem_TyExpr_Pred_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                           sem_TyExpr_Pred_8 =
+                                                                                                                                                                                                                                               (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                  _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                  _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                  _lhsIkiGam
+                                                                                                                                                                                                                                                  _lhsImoduleNm
+                                                                                                                                                                                                                                                  _lhsIopts
+                                                                                                                                                                                                                                                  _lhsIsysfEnv
+                                                                                                                                                                                                                                                  _lhsItr
+                                                                                                                                                                                                                                                  _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                  _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                  _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                  _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                    _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                    (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                     (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                      (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                       (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                        (_lhsIopts `seq`
+                                                                                                                                                                                                                                                         (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                          (_lhsItr `seq`
+                                                                                                                                                                                                                                                           (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                            (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                             (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                              (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                               ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                 { _prExprOvalTyGlobFreeTvarS | _prExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                  { _prExprOtyTyTySigFreeTvarS | _prExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                   { _prExprOtyTyGlobFreeTvarS | _prExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                   (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                    { _prExprOtyKiGlobFreeTvarS | _prExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                    (case (_lhsItr) of
+                                                                                                                                                                                                                                                                     { _prExprOtr | _prExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                      { _prExprOsysfEnv | _prExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                       { _prExprOopts | _prExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                        { _prExprOmoduleNm | _prExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                         { _prExprOkiGam | _prExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                          { _prExprOfinTyVarMp | _prExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                           { _prExprOfinTyKiGam | _prExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                            { _prExprOfinKiVarMp | _prExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                            (case (prExpr_8 _prExprOfinKiVarMp _prExprOfinTyKiGam _prExprOfinTyVarMp _prExprOkiGam _prExprOmoduleNm _prExprOopts _prExprOsysfEnv _prExprOtr _prExprOtyKiGlobFreeTvarS _prExprOtyTyGlobFreeTvarS _prExprOtyTyTySigFreeTvarS _prExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { ( _prExprIallErrSq,_prExprIclMissNmS,_prExprIclNmS,_prExprIerrSq,_prExprIgathMentrelFilterMp,_prExprIpp,_prExprIpr,_prExprItrpp) | True ->
+                                                                                                                                                                                                                                                                                 (case (_prExprIallErrSq) of
+                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                                                                   { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (hsnOImpl >#< _prExprIpp >#< hsnCImpl) of
+                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                                      { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_prExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                       { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_prExprIclNmS) of
+                                                                                                                                                                                                                                                                                        { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_prExprIerrSq) of
+                                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_prExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_prExprItrpp) of
+                                                                                                                                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case ([]) of
+                                                                                                                                                                                                                                                                                             { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                                                                       in  sem_TyExpr_Pred_8)) of
+                                                                                                                                                                                                                                { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                                                                ( _lhsOevTy,sem_TyExpr_8) }) }) }) })))
+                                                                                                                                                                                                          in  sem_TyExpr_Pred_7)) of
+                                                                                                                                                                                                   { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                                                   ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                                                         in  sem_TyExpr_Pred_6)) of
+                                                                                                                                                                  { ( sem_TyExpr_6) | True ->
+                                                                                                                                                                  ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) }) }) })))
+                                                                                                                                           in  sem_TyExpr_Pred_5)) of
+                                                                                                                                    { ( sem_TyExpr_5) | True ->
+                                                                                                                                    ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }) }) }) }))))
+                                                                                                           in  sem_TyExpr_Pred_4)) of
+                                                                                                    { ( sem_TyExpr_4) | True ->
+                                                                                                    ( _lhsOpolVarL,sem_TyExpr_4) }) }) }) })))
+                                                                              in  sem_TyExpr_Pred_3)) of
+                                                                       { ( sem_TyExpr_3) | True ->
+                                                                       ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
+                                                in  sem_TyExpr_Pred_2)) of
+                                         { ( sem_TyExpr_2) | True ->
+                                         ( _lhsOgUniq,sem_TyExpr_2) }) }) }) })))
+                   in  sem_TyExpr_Pred_1)) of
+            { ( sem_TyExpr_1) | True ->
+            ( _lhsOrange,sem_TyExpr_1) }) }) }) })
+
+sem_TyExpr_Impls :: Range ->
+                    T_TyExpr
+
+sem_TyExpr_Impls hsrange_ | hsrange_ `seq` (True) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_Impls_1 :: T_TyExpr_1
+                  sem_TyExpr_Impls_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
+                             { __tup249 | __tup249 `seq` (True) ->
+                             (case (__tup249) of
+                              { (_lhsOgUniq,_) | _lhsOgUniq `seq` (True) ->
+                              (case ((let sem_TyExpr_Impls_2 :: T_TyExpr_2
+                                          sem_TyExpr_Impls_2 =
+                                              (\ _lhsItyGam ->
+                                                   _lhsItyGam `seq`
+                                                   ((case (__tup249) of
+                                                     { (_,_lUniq) | _lUniq `seq` (True) ->
+                                                     (case (_lUniq) of
+                                                      { _implsVarId | _implsVarId `seq` (True) ->
+                                                      (case (mkTGI (Ty_Impls (Impls_Tail _implsVarId []))) of
+                                                       { _tgi_ | _tgi_ `seq` (True) ->
+                                                       (case (tgiTy _tgi_) of
+                                                        { _ty | _ty `seq` (True) ->
+                                                        (case (_ty) of
+                                                         { _lhsOty | _lhsOty `seq` (True) ->
+                                                         (case (_lhsItyGam) of
+                                                          { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                          (case ((let sem_TyExpr_Impls_3 :: T_TyExpr_3
+                                                                      sem_TyExpr_Impls_3 =
+                                                                          (\ _lhsIknPolCtx ->
+                                                                               _lhsIknPolCtx `seq`
+                                                                               ((case ([]) of
+                                                                                 { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                 (case ((let sem_TyExpr_Impls_4 :: T_TyExpr_4
+                                                                                             sem_TyExpr_Impls_4 =
+                                                                                                 (\ _lhsIpolGam
+                                                                                                    _lhsIpolVarMp ->
+                                                                                                      _lhsIpolGam `seq`
+                                                                                                      (_lhsIpolVarMp `seq`
+                                                                                                       ((case (Nothing) of
+                                                                                                         { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                         (case (_lhsIpolVarMp) of
+                                                                                                          { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                          (case ((let sem_TyExpr_Impls_5 :: T_TyExpr_5
+                                                                                                                      sem_TyExpr_Impls_5 =
+                                                                                                                          (\ _lhsItyKiGam ->
+                                                                                                                               _lhsItyKiGam `seq`
+                                                                                                                               ((case (emptyGam) of
+                                                                                                                                 { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                 (case (_lhsItyKiGam) of
+                                                                                                                                  { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                  (case ((let sem_TyExpr_Impls_6 :: T_TyExpr_6
+                                                                                                                                              sem_TyExpr_Impls_6 =
+                                                                                                                                                  (\ _lhsIkiVarMp ->
+                                                                                                                                                       _lhsIkiVarMp `seq`
+                                                                                                                                                       ((case (emptyGam) of
+                                                                                                                                                         { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                         (case (TyKiGamInfo kiStar) of
+                                                                                                                                                          { _tkgi_ | _tkgi_ `seq` (True) ->
+                                                                                                                                                          (case (tkgiKi _tkgi_) of
+                                                                                                                                                           { _ki | _ki `seq` (True) ->
+                                                                                                                                                           (case (_ki) of
+                                                                                                                                                            { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                            (case (_lhsIkiVarMp) of
+                                                                                                                                                             { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                             (case (_lhsIknPolCtx) of
+                                                                                                                                                              { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                              (case (Map.singleton _implsVarId TyVarWild_NoQuantTyExpr_YesQuantLetBinding) of
+                                                                                                                                                               { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                               (case ((let sem_TyExpr_Impls_7 :: T_TyExpr_7
+                                                                                                                                                                           sem_TyExpr_Impls_7 =
+                                                                                                                                                                               (\ _lhsIclGam ->
+                                                                                                                                                                                    _lhsIclGam `seq`
+                                                                                                                                                                                    ((case (_ty) of
+                                                                                                                                                                                      { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                      (case ((let sem_TyExpr_Impls_8 :: T_TyExpr_8
+                                                                                                                                                                                                  sem_TyExpr_Impls_8 =
+                                                                                                                                                                                                      (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                         _lhsIfinTyKiGam
+                                                                                                                                                                                                         _lhsIfinTyVarMp
+                                                                                                                                                                                                         _lhsIkiGam
+                                                                                                                                                                                                         _lhsImoduleNm
+                                                                                                                                                                                                         _lhsIopts
+                                                                                                                                                                                                         _lhsIsysfEnv
+                                                                                                                                                                                                         _lhsItr
+                                                                                                                                                                                                         _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                         _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                         _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                         _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                           _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                           (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                            (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                             (_lhsIkiGam `seq`
+                                                                                                                                                                                                              (_lhsImoduleNm `seq`
+                                                                                                                                                                                                               (_lhsIopts `seq`
+                                                                                                                                                                                                                (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                 (_lhsItr `seq`
+                                                                                                                                                                                                                  (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                   (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                    (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                     (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                      ((case (Seq.empty) of
+                                                                                                                                                                                                                        { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                        (case ([]) of
+                                                                                                                                                                                                                         { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                         (case (hsnUnknown) of
+                                                                                                                                                                                                                          { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                          (case (hsnOImpl >#< "..." >#< hsnCImpl) of
+                                                                                                                                                                                                                           { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                           (case (_pp) of
+                                                                                                                                                                                                                            { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                            (case (Set.empty) of
+                                                                                                                                                                                                                             { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                             (case (Set.empty) of
+                                                                                                                                                                                                                              { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                              (case (Seq.empty) of
+                                                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                               (case (Map.empty) of
+                                                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                (case (_pp) of
+                                                                                                                                                                                                                                 { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                 (case (trppEmpty) of
+                                                                                                                                                                                                                                  { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                   { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                   ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                              in  sem_TyExpr_Impls_8)) of
+                                                                                                                                                                                       { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                       ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                       in  sem_TyExpr_Impls_7)) of
+                                                                                                                                                                { ( sem_TyExpr_7) | True ->
+                                                                                                                                                                ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                          in  sem_TyExpr_Impls_6)) of
+                                                                                                                                   { ( sem_TyExpr_6) | True ->
+                                                                                                                                   ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
+                                                                                                                  in  sem_TyExpr_Impls_5)) of
+                                                                                                           { ( sem_TyExpr_5) | True ->
+                                                                                                           ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
+                                                                                         in  sem_TyExpr_Impls_4)) of
+                                                                                  { ( sem_TyExpr_4) | True ->
+                                                                                  ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                                  in  sem_TyExpr_Impls_3)) of
+                                                           { ( sem_TyExpr_3) | True ->
+                                                           ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) }) }) })))
+                                      in  sem_TyExpr_Impls_2)) of
+                               { ( sem_TyExpr_2) | True ->
+                               ( _lhsOgUniq,sem_TyExpr_2) }) }) })))
+              in  sem_TyExpr_Impls_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_NoImpls :: Range ->
+                      T_TyExpr
+
+sem_TyExpr_NoImpls hsrange_ | hsrange_ `seq` (True) =
+    (case (hsrange_) of
+     { _range | _range `seq` (True) ->
+     (case (_range) of
+      { _lhsOrange | _lhsOrange `seq` (True) ->
+      (case ((let sem_TyExpr_NoImpls_1 :: T_TyExpr_1
+                  sem_TyExpr_NoImpls_1 =
+                      (\ _lhsIgUniq ->
+                           _lhsIgUniq `seq`
+                           ((case (_lhsIgUniq) of
+                             { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                             (case ((let sem_TyExpr_NoImpls_2 :: T_TyExpr_2
+                                         sem_TyExpr_NoImpls_2 =
+                                             (\ _lhsItyGam ->
+                                                  _lhsItyGam `seq`
+                                                  ((case (mkTGI (Ty_Impls Impls_Nil)) of
+                                                    { _tgi_ | _tgi_ `seq` (True) ->
+                                                    (case (tgiTy _tgi_) of
+                                                     { _ty | _ty `seq` (True) ->
+                                                     (case (_ty) of
+                                                      { _lhsOty | _lhsOty `seq` (True) ->
+                                                      (case (_lhsItyGam) of
+                                                       { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                       (case ((let sem_TyExpr_NoImpls_3 :: T_TyExpr_3
+                                                                   sem_TyExpr_NoImpls_3 =
+                                                                       (\ _lhsIknPolCtx ->
+                                                                            _lhsIknPolCtx `seq`
+                                                                            ((case ([]) of
+                                                                              { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                              (case ((let sem_TyExpr_NoImpls_4 :: T_TyExpr_4
+                                                                                          sem_TyExpr_NoImpls_4 =
+                                                                                              (\ _lhsIpolGam
+                                                                                                 _lhsIpolVarMp ->
+                                                                                                   _lhsIpolGam `seq`
+                                                                                                   (_lhsIpolVarMp `seq`
+                                                                                                    ((case (Nothing) of
+                                                                                                      { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                      (case (_lhsIpolVarMp) of
+                                                                                                       { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                       (case ((let sem_TyExpr_NoImpls_5 :: T_TyExpr_5
+                                                                                                                   sem_TyExpr_NoImpls_5 =
+                                                                                                                       (\ _lhsItyKiGam ->
+                                                                                                                            _lhsItyKiGam `seq`
+                                                                                                                            ((case (emptyGam) of
+                                                                                                                              { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                              (case (_lhsItyKiGam) of
+                                                                                                                               { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                               (case ((let sem_TyExpr_NoImpls_6 :: T_TyExpr_6
+                                                                                                                                           sem_TyExpr_NoImpls_6 =
+                                                                                                                                               (\ _lhsIkiVarMp ->
+                                                                                                                                                    _lhsIkiVarMp `seq`
+                                                                                                                                                    ((case (emptyGam) of
+                                                                                                                                                      { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                      (case (TyKiGamInfo kiStar) of
+                                                                                                                                                       { _tkgi_ | _tkgi_ `seq` (True) ->
+                                                                                                                                                       (case (tkgiKi _tkgi_) of
+                                                                                                                                                        { _ki | _ki `seq` (True) ->
+                                                                                                                                                        (case (_ki) of
+                                                                                                                                                         { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                         (case (_lhsIkiVarMp) of
+                                                                                                                                                          { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                          (case (_lhsIknPolCtx) of
+                                                                                                                                                           { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                           (case (Map.empty) of
+                                                                                                                                                            { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                            (case ((let sem_TyExpr_NoImpls_7 :: T_TyExpr_7
+                                                                                                                                                                        sem_TyExpr_NoImpls_7 =
+                                                                                                                                                                            (\ _lhsIclGam ->
+                                                                                                                                                                                 _lhsIclGam `seq`
+                                                                                                                                                                                 ((case (_ty) of
+                                                                                                                                                                                   { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                   (case ((let sem_TyExpr_NoImpls_8 :: T_TyExpr_8
+                                                                                                                                                                                               sem_TyExpr_NoImpls_8 =
+                                                                                                                                                                                                   (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                      _lhsIfinTyKiGam
+                                                                                                                                                                                                      _lhsIfinTyVarMp
+                                                                                                                                                                                                      _lhsIkiGam
+                                                                                                                                                                                                      _lhsImoduleNm
+                                                                                                                                                                                                      _lhsIopts
+                                                                                                                                                                                                      _lhsIsysfEnv
+                                                                                                                                                                                                      _lhsItr
+                                                                                                                                                                                                      _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                      _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                      _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                      _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                        _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                        (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                         (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                          (_lhsIkiGam `seq`
+                                                                                                                                                                                                           (_lhsImoduleNm `seq`
+                                                                                                                                                                                                            (_lhsIopts `seq`
+                                                                                                                                                                                                             (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                              (_lhsItr `seq`
+                                                                                                                                                                                                               (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                 (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                  (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                   ((case (Seq.empty) of
+                                                                                                                                                                                                                     { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                     (case ([]) of
+                                                                                                                                                                                                                      { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                      (case (hsnUnknown) of
+                                                                                                                                                                                                                       { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                       (case (hsnOImpl >#< "_" >#< hsnCImpl) of
+                                                                                                                                                                                                                        { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                        (case (_pp) of
+                                                                                                                                                                                                                         { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                         (case (Set.empty) of
+                                                                                                                                                                                                                          { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                          (case (Set.empty) of
+                                                                                                                                                                                                                           { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                           (case (Seq.empty) of
+                                                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                            (case (Map.empty) of
+                                                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                             (case (_pp) of
+                                                                                                                                                                                                                              { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                              (case (trppEmpty) of
+                                                                                                                                                                                                                               { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                               (case ([]) of
+                                                                                                                                                                                                                                { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
+                                                                                                                                                                                           in  sem_TyExpr_NoImpls_8)) of
+                                                                                                                                                                                    { ( sem_TyExpr_8) | True ->
+                                                                                                                                                                                    ( _lhsOevTy,sem_TyExpr_8) }) })))
+                                                                                                                                                                    in  sem_TyExpr_NoImpls_7)) of
+                                                                                                                                                             { ( sem_TyExpr_7) | True ->
+                                                                                                                                                             ( _lhsOgathTyVarPolGam,_lhsOki,_lhsOkiVarMp,_lhsOpol,_lhsOtyVarWildMp,sem_TyExpr_7) }) }) }) }) }) }) }) })))
+                                                                                                                                       in  sem_TyExpr_NoImpls_6)) of
+                                                                                                                                { ( sem_TyExpr_6) | True ->
+                                                                                                                                ( _lhsOintlTyKiGam,_lhsOtyKiGam,sem_TyExpr_6) }) }) })))
+                                                                                                               in  sem_TyExpr_NoImpls_5)) of
+                                                                                                        { ( sem_TyExpr_5) | True ->
+                                                                                                        ( _lhsOmbStrictness,_lhsOpolVarMp,sem_TyExpr_5) }) }) }))))
+                                                                                      in  sem_TyExpr_NoImpls_4)) of
+                                                                               { ( sem_TyExpr_4) | True ->
+                                                                               ( _lhsOpolVarL,sem_TyExpr_4) }) })))
+                                                               in  sem_TyExpr_NoImpls_3)) of
+                                                        { ( sem_TyExpr_3) | True ->
+                                                        ( _lhsOty,_lhsOtyGam,sem_TyExpr_3) }) }) }) }) })))
+                                     in  sem_TyExpr_NoImpls_2)) of
+                              { ( sem_TyExpr_2) | True ->
+                              ( _lhsOgUniq,sem_TyExpr_2) }) })))
+              in  sem_TyExpr_NoImpls_1)) of
+       { ( sem_TyExpr_1) | True ->
+       ( _lhsOrange,sem_TyExpr_1) }) }) })
+
+sem_TyExpr_Lam :: Range ->
+                  HsName ->
+                  T_TyExpr ->
+                  T_TyExpr
+
+sem_TyExpr_Lam hsrange_ tyVar_ tyExpr_ | hsrange_ `seq` (tyVar_ `seq` (tyExpr_ `seq` (True))) =
+    (case (tyExpr_) of
+     { ( _tyExprIrange,tyExpr_1) | True ->
+         (case (rangeUnions [hsrange_, _tyExprIrange , _tyExprIrange]) of
+          { _range | _range `seq` (True) ->
+          (case (_range) of
+           { _lhsOrange | _lhsOrange `seq` (True) ->
+           (case ((let sem_TyExpr_Lam_1 :: T_TyExpr_1
+                       sem_TyExpr_Lam_1 =
+                           (\ _lhsIgUniq ->
+                                _lhsIgUniq `seq`
+                                ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_17_fitsIn_pol) -> case nextUnique __cont of { (__cont, lUniq_17_polArg) -> case nextUnique __cont of { (__cont, lUniq_17_polRes) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_17_fitsIn_pol,lUniq_17_polArg,lUniq_17_polRes,lUniq_ki)}}}}} )) of
+                                  { __tup251 | __tup251 `seq` (True) ->
+                                  (case (__tup251) of
+                                   { (_tyExprOgUniq,_,_,_,_,_) | _tyExprOgUniq `seq` (True) ->
+                                   (case (tyExpr_1 _tyExprOgUniq) of
+                                    { ( _tyExprIgUniq,tyExpr_2) | True ->
+                                        (case (_tyExprIgUniq) of
+                                         { _lhsOgUniq | _lhsOgUniq `seq` (True) ->
+                                         (case ((let sem_TyExpr_Lam_2 :: T_TyExpr_2
+                                                     sem_TyExpr_Lam_2 =
+                                                         (\ _lhsItyGam ->
+                                                              _lhsItyGam `seq`
+                                                              ((case (__tup251) of
+                                                                { (_,_,_,_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
+                                                                (case (__tup251) of
+                                                                 { (_,_lUniq,_,_,_,_) | _lUniq `seq` (True) ->
+                                                                 (case (let  t = mkTyVar _lUniq
+                                                                        in   (_lUniq,mkTGI t,TyKiGamInfo (mkNewTyVar _lUniq_ki))) of
+                                                                  { __tup250 | __tup250 `seq` (True) ->
+                                                                  (case (__tup250) of
+                                                                   { (_,_tgi_,_) | _tgi_ `seq` (True) ->
+                                                                   (case (tvGathFlowIn  (tyVar_ `gamSingleton` _tgi_) _lhsItyGam) of
+                                                                    { _tyExprOtyGam | _tyExprOtyGam `seq` (True) ->
+                                                                    (case (__tup250) of
+                                                                     { (_tv,_,_) | _tv `seq` (True) ->
+                                                                     (case (tyExpr_2 _tyExprOtyGam) of
+                                                                      { ( _tyExprIty,_tyExprItyGam,tyExpr_3) | True ->
+                                                                          (case (mkTyLam [_tv] _tyExprIty) of
+                                                                           { _ty | _ty `seq` (True) ->
+                                                                           (case (_ty) of
+                                                                            { _lhsOty | _lhsOty `seq` (True) ->
+                                                                            (case (tvGathFlowOut _lhsItyGam _tyExprItyGam) of
+                                                                             { _lhsOtyGam | _lhsOtyGam `seq` (True) ->
+                                                                             (case ((let sem_TyExpr_Lam_3 :: T_TyExpr_3
+                                                                                         sem_TyExpr_Lam_3 =
+                                                                                             (\ _lhsIknPolCtx ->
+                                                                                                  _lhsIknPolCtx `seq`
+                                                                                                  ((case ([]) of
+                                                                                                    { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
+                                                                                                    (case ((let sem_TyExpr_Lam_4 :: T_TyExpr_4
+                                                                                                                sem_TyExpr_Lam_4 =
+                                                                                                                    (\ _lhsIpolGam
+                                                                                                                       _lhsIpolVarMp ->
+                                                                                                                         _lhsIpolGam `seq`
+                                                                                                                         (_lhsIpolVarMp `seq`
+                                                                                                                          ((case (Nothing) of
+                                                                                                                            { _lhsOmbStrictness | _lhsOmbStrictness `seq` (True) ->
+                                                                                                                            (case (__tup251) of
+                                                                                                                             { (_,_,_,_,_lUniq_17_polRes,_) | _lUniq_17_polRes `seq` (True) ->
+                                                                                                                             (case (__tup251) of
+                                                                                                                              { (_,_,_,_lUniq_17_polArg,_,_) | _lUniq_17_polArg `seq` (True) ->
+                                                                                                                              (case (__tup251) of
+                                                                                                                               { (_,_,_lUniq_17_fitsIn_pol,_,_,_) | _lUniq_17_fitsIn_pol `seq` (True) ->
+                                                                                                                               (case (mkPolVar _lUniq_17_polRes) of
+                                                                                                                                { _polResVar | _polResVar `seq` (True) ->
+                                                                                                                                (case (mkPolVar _lUniq_17_polArg) of
+                                                                                                                                 { _polArgVar | _polArgVar `seq` (True) ->
+                                                                                                                                 (case (fitsIn weakFIOpts defaultFIEnv _lUniq_17_fitsIn_pol _lhsIpolVarMp ([_polArgVar] `appArr` _polResVar) _lhsIknPolCtx) of
+                                                                                                                                  { _foPol | _foPol `seq` (True) ->
+                                                                                                                                  (case (foVarMp _foPol `varUpd` _lhsIpolVarMp) of
+                                                                                                                                   { _tyExprOpolVarMp | _tyExprOpolVarMp `seq` (True) ->
+                                                                                                                                   (case (gamAdd tyVar_ (mkPGI _polArgVar) _lhsIpolGam) of
+                                                                                                                                    { _tyExprOpolGam | _tyExprOpolGam `seq` (True) ->
+                                                                                                                                    (case (_polResVar) of
+                                                                                                                                     { _tyExprOknPolCtx | _tyExprOknPolCtx `seq` (True) ->
+                                                                                                                                     (case (tyExpr_3 _tyExprOknPolCtx) of
+                                                                                                                                      { ( _tyExprIpolVarL,tyExpr_4) | True ->
+                                                                                                                                          (case (tyExpr_4 _tyExprOpolGam _tyExprOpolVarMp) of
+                                                                                                                                           { ( _tyExprImbStrictness,_tyExprIpolVarMp,tyExpr_5) | True ->
+                                                                                                                                               (case (_tyExprIpolVarMp) of
+                                                                                                                                                { _lhsOpolVarMp | _lhsOpolVarMp `seq` (True) ->
+                                                                                                                                                (case ((let sem_TyExpr_Lam_5 :: T_TyExpr_5
+                                                                                                                                                            sem_TyExpr_Lam_5 =
+                                                                                                                                                                (\ _lhsItyKiGam ->
+                                                                                                                                                                     _lhsItyKiGam `seq`
+                                                                                                                                                                     ((case (__tup250) of
+                                                                                                                                                                       { (_,_,_tkgi_) | _tkgi_ `seq` (True) ->
+                                                                                                                                                                       (case (tgiTy _tgi_ `tyKiGamSingleton` _tkgi_) of
+                                                                                                                                                                        { _tyKiGamNew | _tyKiGamNew `seq` (True) ->
+                                                                                                                                                                        (case (tvGathFlowIn  _tyKiGamNew _lhsItyKiGam) of
+                                                                                                                                                                         { _tyExprOtyKiGam | _tyExprOtyKiGam `seq` (True) ->
+                                                                                                                                                                         (case (tyExpr_5 _tyExprOtyKiGam) of
+                                                                                                                                                                          { ( _tyExprIintlTyKiGam,_tyExprItyKiGam,tyExpr_6) | True ->
+                                                                                                                                                                              (case (gamUnions [_tyKiGamNew,_tyExprIintlTyKiGam]) of
+                                                                                                                                                                               { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
+                                                                                                                                                                               (case (tvGathFlowOut _lhsItyKiGam _tyExprItyKiGam) of
+                                                                                                                                                                                { _lhsOtyKiGam | _lhsOtyKiGam `seq` (True) ->
+                                                                                                                                                                                (case ((let sem_TyExpr_Lam_6 :: T_TyExpr_6
+                                                                                                                                                                                            sem_TyExpr_Lam_6 =
+                                                                                                                                                                                                (\ _lhsIkiVarMp ->
+                                                                                                                                                                                                     _lhsIkiVarMp `seq`
+                                                                                                                                                                                                     ((case (_lhsIkiVarMp) of
+                                                                                                                                                                                                       { _tyExprOkiVarMp | _tyExprOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                       (case (tyExpr_6 _tyExprOkiVarMp) of
+                                                                                                                                                                                                        { ( _tyExprIgathTyVarPolGam,_tyExprIki,_tyExprIkiVarMp,_tyExprIpol,_tyExprItyVarWildMp,tyExpr_7) | True ->
+                                                                                                                                                                                                            (case (_tyExprIgathTyVarPolGam) of
+                                                                                                                                                                                                             { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
+                                                                                                                                                                                                             (case ([tkgiKi _tkgi_] `appArr` _tyExprIki) of
+                                                                                                                                                                                                              { _ki | _ki `seq` (True) ->
+                                                                                                                                                                                                              (case (_ki) of
+                                                                                                                                                                                                               { _lhsOki | _lhsOki `seq` (True) ->
+                                                                                                                                                                                                               (case (_tyExprIkiVarMp) of
+                                                                                                                                                                                                                { _lhsOkiVarMp | _lhsOkiVarMp `seq` (True) ->
+                                                                                                                                                                                                                (case ([_polArgVar] `appArr` _tyExprIpol) of
+                                                                                                                                                                                                                 { _lhsOpol | _lhsOpol `seq` (True) ->
+                                                                                                                                                                                                                 (case (_tyExprItyVarWildMp) of
+                                                                                                                                                                                                                  { _lhsOtyVarWildMp | _lhsOtyVarWildMp `seq` (True) ->
+                                                                                                                                                                                                                  (case ((let sem_TyExpr_Lam_7 :: T_TyExpr_7
+                                                                                                                                                                                                                              sem_TyExpr_Lam_7 =
+                                                                                                                                                                                                                                  (\ _lhsIclGam ->
+                                                                                                                                                                                                                                       _lhsIclGam `seq`
+                                                                                                                                                                                                                                       ((case (_ty) of
+                                                                                                                                                                                                                                         { _lhsOevTy | _lhsOevTy `seq` (True) ->
+                                                                                                                                                                                                                                         (case ((let sem_TyExpr_Lam_8 :: T_TyExpr_8
+                                                                                                                                                                                                                                                     sem_TyExpr_Lam_8 =
+                                                                                                                                                                                                                                                         (\ _lhsIfinKiVarMp
+                                                                                                                                                                                                                                                            _lhsIfinTyKiGam
+                                                                                                                                                                                                                                                            _lhsIfinTyVarMp
+                                                                                                                                                                                                                                                            _lhsIkiGam
+                                                                                                                                                                                                                                                            _lhsImoduleNm
+                                                                                                                                                                                                                                                            _lhsIopts
+                                                                                                                                                                                                                                                            _lhsIsysfEnv
+                                                                                                                                                                                                                                                            _lhsItr
+                                                                                                                                                                                                                                                            _lhsItyKiGlobFreeTvarS
+                                                                                                                                                                                                                                                            _lhsItyTyGlobFreeTvarS
+                                                                                                                                                                                                                                                            _lhsItyTyTySigFreeTvarS
+                                                                                                                                                                                                                                                            _lhsIvalTyGlobFreeTvarS ->
+                                                                                                                                                                                                                                                              _lhsIfinKiVarMp `seq`
+                                                                                                                                                                                                                                                              (_lhsIfinTyKiGam `seq`
+                                                                                                                                                                                                                                                               (_lhsIfinTyVarMp `seq`
+                                                                                                                                                                                                                                                                (_lhsIkiGam `seq`
+                                                                                                                                                                                                                                                                 (_lhsImoduleNm `seq`
+                                                                                                                                                                                                                                                                  (_lhsIopts `seq`
+                                                                                                                                                                                                                                                                   (_lhsIsysfEnv `seq`
+                                                                                                                                                                                                                                                                    (_lhsItr `seq`
+                                                                                                                                                                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                                         ((case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                           { _tyExprOclGam | _tyExprOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                           (case (tyExpr_7 _tyExprOclGam) of
+                                                                                                                                                                                                                                                                            { ( _tyExprIevTy,tyExpr_8) | True ->
+                                                                                                                                                                                                                                                                                (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                 { _tyExprOvalTyGlobFreeTvarS | _tyExprOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                                  { _tyExprOtyTyTySigFreeTvarS | _tyExprOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                   { _tyExprOtyTyGlobFreeTvarS | _tyExprOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                    { _tyExprOtyKiGlobFreeTvarS | _tyExprOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                     { _tyExprOtr | _tyExprOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                      { _tyExprOsysfEnv | _tyExprOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                       { _tyExprOopts | _tyExprOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                        { _tyExprOmoduleNm | _tyExprOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                         { _tyExprOkiGam | _tyExprOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                         (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                          { _tyExprOfinTyVarMp | _tyExprOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                          (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                           { _tyExprOfinTyKiGam | _tyExprOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                           (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                            { _tyExprOfinKiVarMp | _tyExprOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                            (case (tyExpr_8 _tyExprOfinKiVarMp _tyExprOfinTyKiGam _tyExprOfinTyVarMp _tyExprOkiGam _tyExprOmoduleNm _tyExprOopts _tyExprOsysfEnv _tyExprOtr _tyExprOtyKiGlobFreeTvarS _tyExprOtyTyGlobFreeTvarS _tyExprOtyTyTySigFreeTvarS _tyExprOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                             { ( _tyExprIallErrSq,_tyExprIappArgPPL,_tyExprIappFunNm,_tyExprIappFunPP,_tyExprIclMissNmS,_tyExprIclNmS,_tyExprIerrSq,_tyExprIgathMentrelFilterMp,_tyExprIpp,_tyExprItrpp,_tyExprItyWildL) | True ->
+                                                                                                                                                                                                                                                                                                 (case (_tyExprIallErrSq) of
+                                                                                                                                                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case ([]) of
+                                                                                                                                                                                                                                                                                                   { _lhsOappArgPPL | _lhsOappArgPPL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (hsnUnknown) of
+                                                                                                                                                                                                                                                                                                    { _lhsOappFunNm | _lhsOappFunNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case ("\\" >|< tyVar_ >#< "->" >#< _tyExprIpp) of
+                                                                                                                                                                                                                                                                                                     { _pp | _pp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     (case (_pp) of
+                                                                                                                                                                                                                                                                                                      { _lhsOappFunPP | _lhsOappFunPP `seq` (True) ->
+                                                                                                                                                                                                                                                                                                      (case (_tyExprIclMissNmS) of
+                                                                                                                                                                                                                                                                                                       { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                       (case (_tyExprIclNmS) of
+                                                                                                                                                                                                                                                                                                        { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                        (case (_tyExprIerrSq) of
+                                                                                                                                                                                                                                                                                                         { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                         (case (_tyExprIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                          { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                          (case (_pp) of
+                                                                                                                                                                                                                                                                                                           { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                           (case (_tyExprItrpp) of
+                                                                                                                                                                                                                                                                                                            { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                            (case (_tyExprItyWildL) of
+                                                                                                                                                                                                                                                                                                             { _lhsOtyWildL | _lhsOtyWildL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                             ( _lhsOallErrSq,_lhsOappArgPPL,_lhsOappFunNm,_lhsOappFunPP,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOtrpp,_lhsOtyWildL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))
                                                                                                                                                                                                                                                  in  sem_TyExpr_Lam_8)) of
                                                                                                                                                                                                                                           { ( sem_TyExpr_8) | True ->
                                                                                                                                                                                                                                           ( _lhsOevTy,sem_TyExpr_8) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_TyExprAnn.hs b/src/UHC/Light/Compiler/EH/MainAG_TyExprAnn.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_TyExprAnn.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_TyExprAnn.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
diff --git a/src/UHC/Light/Compiler/EH/MainAG_TyExprs.hs b/src/UHC/Light/Compiler/EH/MainAG_TyExprs.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_TyExprs.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_TyExprs.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -125,6 +125,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -137,16 +138,17 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          pp                   : PP_Doc
          ppL                  : [PP_Doc]
+         trpp                 : TrPP
    alternatives:
       alternative Cons:
          child hd             : TyExpr 
          child tl             : TyExprs 
          visit 1:
-            local _tup246     : _
+            local _tup252     : _
          visit 2:
             local lUniq_17_polCtx : {UID}
             local polCtxVar   : {Polarity}
-            intra _tup246     : _
+            intra _tup252     : _
       alternative Nil:
 -}
 sem_TyExprs_Cons :: T_TyExpr ->
@@ -165,8 +167,8 @@
                                (\ _lhsIgUniq ->
                                     _lhsIgUniq `seq`
                                     ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_17_polCtx) -> (__cont,lUniq_17_polCtx)} )) of
-                                      { __tup246 | __tup246 `seq` (True) ->
-                                      (case (__tup246) of
+                                      { __tup252 | __tup252 `seq` (True) ->
+                                      (case (__tup252) of
                                        { (_hdOgUniq,_) | _hdOgUniq `seq` (True) ->
                                        (case (hd_1 _hdOgUniq) of
                                         { ( _hdIgUniq,hd_2) | True ->
@@ -186,7 +188,7 @@
                                                                            { ( _hdIty,_hdItyGam,hd_3) | True ->
                                                                                (case (_hdItyGam) of
                                                                                 { _tlOtyGam | _tlOtyGam `seq` (True) ->
-                                                                                (case (__tup246) of
+                                                                                (case (__tup252) of
                                                                                  { (_,_lUniq_17_polCtx) | _lUniq_17_polCtx `seq` (True) ->
                                                                                  (case (mkPolVar _lUniq_17_polCtx) of
                                                                                   { _polCtxVar | _polCtxVar `seq` (True) ->
@@ -269,6 +271,7 @@
                                                                                                                                                                                                                                    _lhsImoduleNm
                                                                                                                                                                                                                                    _lhsIopts
                                                                                                                                                                                                                                    _lhsIsysfEnv
+                                                                                                                                                                                                                                   _lhsItr
                                                                                                                                                                                                                                    _lhsItyKiGlobFreeTvarS
                                                                                                                                                                                                                                    _lhsItyTyGlobFreeTvarS
                                                                                                                                                                                                                                    _lhsItyTyTySigFreeTvarS
@@ -282,81 +285,88 @@
                                                                                                                                                                                                                                           (_lhsImoduleNm `seq`
                                                                                                                                                                                                                                            (_lhsIopts `seq`
                                                                                                                                                                                                                                             (_lhsIsysfEnv `seq`
-                                                                                                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                                                                                                 ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                   { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                   (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                    { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                    (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                     { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                     (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                      { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                      (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                       { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                       (case (_lhsIopts) of
-                                                                                                                                                                                                                                                        { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                                                                                                                                        (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                         { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                         (case (_lhsIknPolCtx) of
-                                                                                                                                                                                                                                                          { _tlOknPolCtx | _tlOknPolCtx `seq` (True) ->
-                                                                                                                                                                                                                                                          (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                           { _tlOkiGam | _tlOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                           (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                            { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                            (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                             { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                             (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                              { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                              (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                               { _tlOclGam | _tlOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                               (case (tl_6 _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOkiGam _tlOknPolCtx _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                { ( _tlIallErrSq,_tlIclMissNmS,_tlIclNmS,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIpp,_tlIppL) | True ->
-                                                                                                                                                                                                                                                                    (case (_lhsIclGam) of
-                                                                                                                                                                                                                                                                     { _hdOclGam | _hdOclGam `seq` (True) ->
-                                                                                                                                                                                                                                                                     (case (hd_7 _hdOclGam) of
-                                                                                                                                                                                                                                                                      { ( _hdIevTy,hd_8) | True ->
-                                                                                                                                                                                                                                                                          (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                           { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                           (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                                                                                                                            { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                            (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                             { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                             (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                              { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                                                                                                                              (case (_lhsIsysfEnv) of
-                                                                                                                                                                                                                                                                               { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                                                                                                                                               (case (_lhsIopts) of
-                                                                                                                                                                                                                                                                                { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                                                                                                                                                                (case (_lhsImoduleNm) of
-                                                                                                                                                                                                                                                                                 { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                                                                                                                                                 (case (_lhsIkiGam) of
-                                                                                                                                                                                                                                                                                  { _hdOkiGam | _hdOkiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                                                                                                                   { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                                                                                                                    { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                                                                                                                     { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                     (case (hd_8 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                                                                                                                      { ( _hdIallErrSq,_hdIappArgPPL,_hdIappFunNm,_hdIappFunPP,_hdIclMissNmS,_hdIclNmS,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIpp,_hdItyWildL) | True ->
-                                                                                                                                                                                                                                                                                          (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                           (case (_hdIclMissNmS `Set.union` _tlIclMissNmS) of
-                                                                                                                                                                                                                                                                                            { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                            (case (_hdIclNmS `Set.union` _tlIclNmS) of
-                                                                                                                                                                                                                                                                                             { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                                                                                                                                             (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                                                                                                                                                                                              { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                                                                                                                              (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                                                                                                                                               { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                                                                                                                               (case (_hdIpp >-< _tlIpp) of
-                                                                                                                                                                                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                                                                                                                                (case (_hdIpp : _tlIppL) of
-                                                                                                                                                                                                                                                                                                 { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                                                                                                                 ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))))
+                                                                                                                                                                                                                                             (_lhsItr `seq`
+                                                                                                                                                                                                                                              (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                               (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                                                                                                 (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                                                                                                  ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                    { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                    (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                     { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                     (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                      { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                      (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                       { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                       (case (_lhsItr) of
+                                                                                                                                                                                                                                                        { _tlOtr | _tlOtr `seq` (True) ->
+                                                                                                                                                                                                                                                        (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                         { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                         (case (_lhsIopts) of
+                                                                                                                                                                                                                                                          { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                                                                                                                                          (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                           { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                           (case (_lhsIknPolCtx) of
+                                                                                                                                                                                                                                                            { _tlOknPolCtx | _tlOknPolCtx `seq` (True) ->
+                                                                                                                                                                                                                                                            (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                             { _tlOkiGam | _tlOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                             (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                              { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                              (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                               { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                               (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                 { _tlOclGam | _tlOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                 (case (tl_6 _tlOclGam _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOkiGam _tlOknPolCtx _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtr _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                  { ( _tlIallErrSq,_tlIclMissNmS,_tlIclNmS,_tlIerrSq,_tlIgathMentrelFilterMp,_tlIpp,_tlIppL,_tlItrpp) | True ->
+                                                                                                                                                                                                                                                                      (case (_lhsIclGam) of
+                                                                                                                                                                                                                                                                       { _hdOclGam | _hdOclGam `seq` (True) ->
+                                                                                                                                                                                                                                                                       (case (hd_7 _hdOclGam) of
+                                                                                                                                                                                                                                                                        { ( _hdIevTy,hd_8) | True ->
+                                                                                                                                                                                                                                                                            (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                             { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                             (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                                                                                                                              { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                               { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                                                                                                                (case (_lhsItr) of
+                                                                                                                                                                                                                                                                                 { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                                                                                                                                                 (case (_lhsIsysfEnv) of
+                                                                                                                                                                                                                                                                                  { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                                                                                                                                                  (case (_lhsIopts) of
+                                                                                                                                                                                                                                                                                   { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                                                                                                                                                                   (case (_lhsImoduleNm) of
+                                                                                                                                                                                                                                                                                    { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                                                                                                                                                    (case (_lhsIkiGam) of
+                                                                                                                                                                                                                                                                                     { _hdOkiGam | _hdOkiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                                                                                                                      { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                                                                                                                       { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                                                                                                                        { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                        (case (hd_8 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOkiGam _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtr _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                                                                                                                         { ( _hdIallErrSq,_hdIappArgPPL,_hdIappFunNm,_hdIappFunPP,_hdIclMissNmS,_hdIclNmS,_hdIerrSq,_hdIgathMentrelFilterMp,_hdIpp,_hdItrpp,_hdItyWildL) | True ->
+                                                                                                                                                                                                                                                                                             (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                              (case (_hdIclMissNmS `Set.union` _tlIclMissNmS) of
+                                                                                                                                                                                                                                                                                               { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                               (case (_hdIclNmS `Set.union` _tlIclNmS) of
+                                                                                                                                                                                                                                                                                                { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                                                                                                                                                (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                                                                                                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                                                                                                                                 (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                                                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                  (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                                                                                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                   (case (_hdIpp : _tlIppL) of
+                                                                                                                                                                                                                                                                                                    { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                                                                                                                    (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                                                                                                                                                     { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                                                                                                                     ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))))))
                                                                                                                                                                                                                         in  sem_TyExprs_Cons_6)) of
                                                                                                                                                                                                                  { ( sem_TyExprs_6) | True ->
                                                                                                                                                                                                                  ( _lhsOgathTyVarPolGam,_lhsOkiL,_lhsOkiVarMp,_lhsOtyVarWildMp,sem_TyExprs_6) }) }) }) }) }) }) }) }) })))
@@ -436,6 +446,7 @@
                                                                                                                                                   _lhsImoduleNm
                                                                                                                                                   _lhsIopts
                                                                                                                                                   _lhsIsysfEnv
+                                                                                                                                                  _lhsItr
                                                                                                                                                   _lhsItyKiGlobFreeTvarS
                                                                                                                                                   _lhsItyTyGlobFreeTvarS
                                                                                                                                                   _lhsItyTyTySigFreeTvarS
@@ -449,25 +460,28 @@
                                                                                                                                                          (_lhsImoduleNm `seq`
                                                                                                                                                           (_lhsIopts `seq`
                                                                                                                                                            (_lhsIsysfEnv `seq`
-                                                                                                                                                            (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                             (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                              (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                               (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                                ((case (Seq.empty) of
-                                                                                                                                                                  { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                  (case (Set.empty) of
-                                                                                                                                                                   { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                            (_lhsItr `seq`
+                                                                                                                                                             (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                              (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                               (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                                (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                                 ((case (Seq.empty) of
+                                                                                                                                                                   { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
                                                                                                                                                                    (case (Set.empty) of
-                                                                                                                                                                    { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
-                                                                                                                                                                    (case (Seq.empty) of
-                                                                                                                                                                     { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                     (case (Map.empty) of
-                                                                                                                                                                      { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                      (case (empty) of
-                                                                                                                                                                       { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                       (case ([]) of
-                                                                                                                                                                        { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                        ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL) }) }) }) }) }) }) })))))))))))))))
+                                                                                                                                                                    { _lhsOclMissNmS | _lhsOclMissNmS `seq` (True) ->
+                                                                                                                                                                    (case (Set.empty) of
+                                                                                                                                                                     { _lhsOclNmS | _lhsOclNmS `seq` (True) ->
+                                                                                                                                                                     (case (Seq.empty) of
+                                                                                                                                                                      { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                      (case (Map.empty) of
+                                                                                                                                                                       { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                       (case (empty) of
+                                                                                                                                                                        { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                        (case ([]) of
+                                                                                                                                                                         { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                         (case (trppEmpty) of
+                                                                                                                                                                          { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                          ( _lhsOallErrSq,_lhsOclMissNmS,_lhsOclNmS,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }))))))))))))))))
                                                                                                                                        in  sem_TyExprs_Nil_6)) of
                                                                                                                                 { ( sem_TyExprs_6) | True ->
                                                                                                                                 ( _lhsOgathTyVarPolGam,_lhsOkiL,_lhsOkiVarMp,_lhsOtyVarWildMp,sem_TyExprs_6) }) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_TyVar.hs b/src/UHC/Light/Compiler/EH/MainAG_TyVar.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_TyVar.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_TyVar.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -111,6 +111,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -121,6 +122,7 @@
          gathMentrelFilterMp  : ModEntRelFilterMp
          nm                   : HsName
          pp                   : PP_Doc
+         trpp                 : TrPP
    alternatives:
       alternative Var:
          child hsrange        : {Range}
@@ -128,22 +130,22 @@
          visit 0:
             local range       : {Range}
          visit 1:
-            local _tup250     : _
+            local _tup256     : _
          visit 2:
             local lUniq       : {UID}
-            local _tup248     : _
-            intra _tup250     : _
+            local _tup254     : _
+            intra _tup256     : _
          visit 3:
             local lUniq_17_pol : {UID}
             local polVar      : _
             local lUniq_ki    : {UID}
             local tgi_        : {TyGamInfo}
-            local _tup249     : _
+            local _tup255     : _
             local tyKiGamNew  : _
             local tkgi_       : {TyKiGamInfo}
             local ki          : {Ty}
-            intra _tup250     : _
-            intra _tup248     : _
+            intra _tup256     : _
+            intra _tup254     : _
 -}
 sem_TyVar_Var :: Range ->
                  HsName ->
@@ -159,40 +161,40 @@
                       (\ _lhsIgUniq ->
                            _lhsIgUniq `seq`
                            ((case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq_17_pol) -> case nextUnique __cont of { (__cont, lUniq_ki) -> (__cont,lUniq,lUniq_17_pol,lUniq_ki)}}} )) of
-                             { __tup250 | __tup250 `seq` (True) ->
-                             (case (__tup250) of
+                             { __tup256 | __tup256 `seq` (True) ->
+                             (case (__tup256) of
                               { (_lhsOgUniq,_,_,_) | _lhsOgUniq `seq` (True) ->
                               (case ((let sem_TyVar_Var_2 :: T_TyVar_2
                                           sem_TyVar_Var_2 =
                                               (\ _lhsItyGam ->
                                                    _lhsItyGam `seq`
-                                                   ((case (__tup250) of
+                                                   ((case (__tup256) of
                                                      { (_,_lUniq,_,_) | _lUniq `seq` (True) ->
                                                      (case (tyGamLookupOrAdd _lUniq nm_ (gamTop _lhsItyGam) _lhsItyGam) of
-                                                      { __tup248 | __tup248 `seq` (True) ->
-                                                      (case (__tup248) of
+                                                      { __tup254 | __tup254 `seq` (True) ->
+                                                      (case (__tup254) of
                                                        { (_,_lhsOtyGam) | _lhsOtyGam `seq` (True) ->
                                                        (case ((let sem_TyVar_Var_3 :: T_TyVar_3
                                                                    sem_TyVar_Var_3 =
                                                                        (\ _lhsItyKiGam ->
                                                                             _lhsItyKiGam `seq`
-                                                                            ((case (__tup250) of
+                                                                            ((case (__tup256) of
                                                                               { (_,_,_lUniq_17_pol,_) | _lUniq_17_pol `seq` (True) ->
                                                                               (case (mkPolVar _lUniq_17_pol) of
                                                                                { _polVar | _polVar `seq` (True) ->
                                                                                (case (gamSingleton nm_ (mkPGI _polVar)) of
                                                                                 { _lhsOgathTyVarPolGam | _lhsOgathTyVarPolGam `seq` (True) ->
-                                                                                (case (__tup250) of
+                                                                                (case (__tup256) of
                                                                                  { (_,_,_,_lUniq_ki) | _lUniq_ki `seq` (True) ->
-                                                                                 (case (__tup248) of
+                                                                                 (case (__tup254) of
                                                                                   { (_tgi_,_) | _tgi_ `seq` (True) ->
                                                                                   (case (tyKiGamLookupOrAdd _lUniq_ki (tgiTy _tgi_) _lhsItyKiGam) of
-                                                                                   { __tup249 | __tup249 `seq` (True) ->
-                                                                                   (case (__tup249) of
+                                                                                   { __tup255 | __tup255 `seq` (True) ->
+                                                                                   (case (__tup255) of
                                                                                     { (_,_,_tyKiGamNew) | _tyKiGamNew `seq` (True) ->
                                                                                     (case (_tyKiGamNew) of
                                                                                      { _lhsOintlTyKiGam | _lhsOintlTyKiGam `seq` (True) ->
-                                                                                     (case (__tup249) of
+                                                                                     (case (__tup255) of
                                                                                       { (_tkgi_,_,_) | _tkgi_ `seq` (True) ->
                                                                                       (case (tkgiKi _tkgi_) of
                                                                                        { _ki | _ki `seq` (True) ->
@@ -202,7 +204,7 @@
                                                                                          { _lhsOpolVarL | _lhsOpolVarL `seq` (True) ->
                                                                                          (case (tgiTy _tgi_) of
                                                                                           { _lhsOty | _lhsOty `seq` (True) ->
-                                                                                          (case (__tup249) of
+                                                                                          (case (__tup255) of
                                                                                            { (_,_lhsOtyKiGam,_) | _lhsOtyKiGam `seq` (True) ->
                                                                                            (case ((let sem_TyVar_Var_4 :: T_TyVar_4
                                                                                                        sem_TyVar_Var_4 =
@@ -212,6 +214,7 @@
                                                                                                               _lhsImoduleNm
                                                                                                               _lhsIopts
                                                                                                               _lhsIsysfEnv
+                                                                                                              _lhsItr
                                                                                                               _lhsItyKiGlobFreeTvarS
                                                                                                               _lhsItyTyGlobFreeTvarS
                                                                                                               _lhsItyTyTySigFreeTvarS
@@ -222,21 +225,24 @@
                                                                                                                   (_lhsImoduleNm `seq`
                                                                                                                    (_lhsIopts `seq`
                                                                                                                     (_lhsIsysfEnv `seq`
-                                                                                                                     (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                      (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                       (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                        (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                         ((case (Seq.empty) of
-                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                           (case (Seq.empty) of
-                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                            (case (Map.empty) of
-                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                             (case (nm_) of
-                                                                                                                              { _lhsOnm | _lhsOnm `seq` (True) ->
-                                                                                                                              (case (pp nm_) of
-                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                               ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOnm,_lhsOpp) }) }) }) }) }))))))))))))
+                                                                                                                     (_lhsItr `seq`
+                                                                                                                      (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                       (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                        (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                         (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                          ((case (Seq.empty) of
+                                                                                                                            { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                            (case (Seq.empty) of
+                                                                                                                             { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                             (case (Map.empty) of
+                                                                                                                              { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                              (case (nm_) of
+                                                                                                                               { _lhsOnm | _lhsOnm `seq` (True) ->
+                                                                                                                               (case (pp nm_) of
+                                                                                                                                { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                (case (trppEmpty) of
+                                                                                                                                 { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                 ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOnm,_lhsOpp,_lhsOtrpp) }) }) }) }) }) })))))))))))))
                                                                                                    in  sem_TyVar_Var_4)) of
                                                                                             { ( sem_TyVar_4) | True ->
                                                                                             ( _lhsOgathTyVarPolGam,_lhsOintlTyKiGam,_lhsOki,_lhsOpolVarL,_lhsOty,_lhsOtyKiGam,sem_TyVar_4) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_TyVars.hs b/src/UHC/Light/Compiler/EH/MainAG_TyVars.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_TyVars.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_TyVars.hs
@@ -19,6 +19,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -26,8 +28,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -111,6 +111,7 @@
          moduleNm             : HsName
          opts                 : EHCOpts
          sysfEnv              : ToSysfEnv
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
          tyKiGlobFreeTvarS    : TyVarIdS
          tyTyGlobFreeTvarS    : TyVarIdS
          tyTyTySigFreeTvarS   : TyVarIdS
@@ -122,6 +123,7 @@
          nmL                  : [HsName]
          pp                   : PP_Doc
          ppL                  : [PP_Doc]
+         trpp                 : TrPP
    alternatives:
       alternative Cons:
          child hd             : TyVar 
@@ -199,6 +201,7 @@
                                                                                                                                                 _lhsImoduleNm
                                                                                                                                                 _lhsIopts
                                                                                                                                                 _lhsIsysfEnv
+                                                                                                                                                _lhsItr
                                                                                                                                                 _lhsItyKiGlobFreeTvarS
                                                                                                                                                 _lhsItyTyGlobFreeTvarS
                                                                                                                                                 _lhsItyTyTySigFreeTvarS
@@ -209,67 +212,74 @@
                                                                                                                                                     (_lhsImoduleNm `seq`
                                                                                                                                                      (_lhsIopts `seq`
                                                                                                                                                       (_lhsIsysfEnv `seq`
-                                                                                                                                                       (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                                                                        (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                                                                         (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                                                                          (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                                                                           ((case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                             { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                             (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                              { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                              (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                               { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                               (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                (case (_lhsIsysfEnv) of
-                                                                                                                                                                 { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
-                                                                                                                                                                 (case (_lhsIopts) of
-                                                                                                                                                                  { _tlOopts | _tlOopts `seq` (True) ->
-                                                                                                                                                                  (case (_lhsImoduleNm) of
-                                                                                                                                                                   { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
-                                                                                                                                                                   (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                    { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                    (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                     { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                     (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                      { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                      (case (tl_4 _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
-                                                                                                                                                                       { ( _tlIallErrSq,_tlIerrSq,_tlIgathMentrelFilterMp,_tlInmL,_tlIpp,_tlIppL) | True ->
-                                                                                                                                                                           (case (_lhsIvalTyGlobFreeTvarS) of
-                                                                                                                                                                            { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                            (case (_lhsItyTyTySigFreeTvarS) of
-                                                                                                                                                                             { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
-                                                                                                                                                                             (case (_lhsItyTyGlobFreeTvarS) of
-                                                                                                                                                                              { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                              (case (_lhsItyKiGlobFreeTvarS) of
-                                                                                                                                                                               { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
-                                                                                                                                                                               (case (_lhsIsysfEnv) of
-                                                                                                                                                                                { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
-                                                                                                                                                                                (case (_lhsIopts) of
-                                                                                                                                                                                 { _hdOopts | _hdOopts `seq` (True) ->
-                                                                                                                                                                                 (case (_lhsImoduleNm) of
-                                                                                                                                                                                  { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
-                                                                                                                                                                                  (case (_lhsIfinTyVarMp) of
-                                                                                                                                                                                   { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
-                                                                                                                                                                                   (case (_lhsIfinTyKiGam) of
-                                                                                                                                                                                    { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
-                                                                                                                                                                                    (case (_lhsIfinKiVarMp) of
-                                                                                                                                                                                     { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
-                                                                                                                                                                                     (case (hd_4 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
-                                                                                                                                                                                      { ( _hdIallErrSq,_hdIerrSq,_hdIgathMentrelFilterMp,_hdInm,_hdIpp) | True ->
-                                                                                                                                                                                          (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
-                                                                                                                                                                                           { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                                                                                                           (case (_hdIerrSq `Seq.union` _tlIerrSq) of
-                                                                                                                                                                                            { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                                                                                            (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
-                                                                                                                                                                                             { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                                                                                             (case (_hdInm : _tlInmL) of
-                                                                                                                                                                                              { _lhsOnmL | _lhsOnmL `seq` (True) ->
-                                                                                                                                                                                              (case (_hdIpp >-< _tlIpp) of
-                                                                                                                                                                                               { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                                                                                               (case (_hdIpp : _tlIppL) of
-                                                                                                                                                                                                { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                                                                                                ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOnmL,_lhsOpp,_lhsOppL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))))))))))))
+                                                                                                                                                       (_lhsItr `seq`
+                                                                                                                                                        (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                                                                         (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                                                                          (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                                                                           (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                                                                            ((case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                              { _tlOvalTyGlobFreeTvarS | _tlOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                               { _tlOtyTyTySigFreeTvarS | _tlOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                { _tlOtyTyGlobFreeTvarS | _tlOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                 { _tlOtyKiGlobFreeTvarS | _tlOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                  { _tlOtr | _tlOtr `seq` (True) ->
+                                                                                                                                                                  (case (_lhsIsysfEnv) of
+                                                                                                                                                                   { _tlOsysfEnv | _tlOsysfEnv `seq` (True) ->
+                                                                                                                                                                   (case (_lhsIopts) of
+                                                                                                                                                                    { _tlOopts | _tlOopts `seq` (True) ->
+                                                                                                                                                                    (case (_lhsImoduleNm) of
+                                                                                                                                                                     { _tlOmoduleNm | _tlOmoduleNm `seq` (True) ->
+                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                      { _tlOfinTyVarMp | _tlOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                       { _tlOfinTyKiGam | _tlOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                        { _tlOfinKiVarMp | _tlOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                        (case (tl_4 _tlOfinKiVarMp _tlOfinTyKiGam _tlOfinTyVarMp _tlOmoduleNm _tlOopts _tlOsysfEnv _tlOtr _tlOtyKiGlobFreeTvarS _tlOtyTyGlobFreeTvarS _tlOtyTyTySigFreeTvarS _tlOvalTyGlobFreeTvarS) of
+                                                                                                                                                                         { ( _tlIallErrSq,_tlIerrSq,_tlIgathMentrelFilterMp,_tlInmL,_tlIpp,_tlIppL,_tlItrpp) | True ->
+                                                                                                                                                                             (case (_lhsIvalTyGlobFreeTvarS) of
+                                                                                                                                                                              { _hdOvalTyGlobFreeTvarS | _hdOvalTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                              (case (_lhsItyTyTySigFreeTvarS) of
+                                                                                                                                                                               { _hdOtyTyTySigFreeTvarS | _hdOtyTyTySigFreeTvarS `seq` (True) ->
+                                                                                                                                                                               (case (_lhsItyTyGlobFreeTvarS) of
+                                                                                                                                                                                { _hdOtyTyGlobFreeTvarS | _hdOtyTyGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                (case (_lhsItyKiGlobFreeTvarS) of
+                                                                                                                                                                                 { _hdOtyKiGlobFreeTvarS | _hdOtyKiGlobFreeTvarS `seq` (True) ->
+                                                                                                                                                                                 (case (_lhsItr) of
+                                                                                                                                                                                  { _hdOtr | _hdOtr `seq` (True) ->
+                                                                                                                                                                                  (case (_lhsIsysfEnv) of
+                                                                                                                                                                                   { _hdOsysfEnv | _hdOsysfEnv `seq` (True) ->
+                                                                                                                                                                                   (case (_lhsIopts) of
+                                                                                                                                                                                    { _hdOopts | _hdOopts `seq` (True) ->
+                                                                                                                                                                                    (case (_lhsImoduleNm) of
+                                                                                                                                                                                     { _hdOmoduleNm | _hdOmoduleNm `seq` (True) ->
+                                                                                                                                                                                     (case (_lhsIfinTyVarMp) of
+                                                                                                                                                                                      { _hdOfinTyVarMp | _hdOfinTyVarMp `seq` (True) ->
+                                                                                                                                                                                      (case (_lhsIfinTyKiGam) of
+                                                                                                                                                                                       { _hdOfinTyKiGam | _hdOfinTyKiGam `seq` (True) ->
+                                                                                                                                                                                       (case (_lhsIfinKiVarMp) of
+                                                                                                                                                                                        { _hdOfinKiVarMp | _hdOfinKiVarMp `seq` (True) ->
+                                                                                                                                                                                        (case (hd_4 _hdOfinKiVarMp _hdOfinTyKiGam _hdOfinTyVarMp _hdOmoduleNm _hdOopts _hdOsysfEnv _hdOtr _hdOtyKiGlobFreeTvarS _hdOtyTyGlobFreeTvarS _hdOtyTyTySigFreeTvarS _hdOvalTyGlobFreeTvarS) of
+                                                                                                                                                                                         { ( _hdIallErrSq,_hdIerrSq,_hdIgathMentrelFilterMp,_hdInm,_hdIpp,_hdItrpp) | True ->
+                                                                                                                                                                                             (case (_hdIallErrSq `Seq.union` _tlIallErrSq) of
+                                                                                                                                                                                              { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                                                                                              (case (_hdIerrSq `Seq.union` _tlIerrSq) of
+                                                                                                                                                                                               { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                                                                                               (case (_hdIgathMentrelFilterMp `mentrelFilterMpUnion` _tlIgathMentrelFilterMp) of
+                                                                                                                                                                                                { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                                                                                                (case (_hdInm : _tlInmL) of
+                                                                                                                                                                                                 { _lhsOnmL | _lhsOnmL `seq` (True) ->
+                                                                                                                                                                                                 (case (_hdIpp >-< _tlIpp) of
+                                                                                                                                                                                                  { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                                                                                                  (case (_hdIpp : _tlIppL) of
+                                                                                                                                                                                                   { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                                                                                                   (case (_hdItrpp >< _tlItrpp) of
+                                                                                                                                                                                                    { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                                                                                                    ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOnmL,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))))))))))))
                                                                                                                                      in  sem_TyVars_Cons_4)) of
                                                                                                                               { ( sem_TyVars_4) | True ->
                                                                                                                               ( _lhsOgathTyVarPolGam,_lhsOintlTyKiGam,_lhsOkiL,_lhsOpolVarL,_lhsOtyKiGam,_lhsOtyL,sem_TyVars_4) }) }) }) }) }) }) }) }) }) }) })))
@@ -324,6 +334,7 @@
                                                                                                   _lhsImoduleNm
                                                                                                   _lhsIopts
                                                                                                   _lhsIsysfEnv
+                                                                                                  _lhsItr
                                                                                                   _lhsItyKiGlobFreeTvarS
                                                                                                   _lhsItyTyGlobFreeTvarS
                                                                                                   _lhsItyTyTySigFreeTvarS
@@ -334,23 +345,26 @@
                                                                                                       (_lhsImoduleNm `seq`
                                                                                                        (_lhsIopts `seq`
                                                                                                         (_lhsIsysfEnv `seq`
-                                                                                                         (_lhsItyKiGlobFreeTvarS `seq`
-                                                                                                          (_lhsItyTyGlobFreeTvarS `seq`
-                                                                                                           (_lhsItyTyTySigFreeTvarS `seq`
-                                                                                                            (_lhsIvalTyGlobFreeTvarS `seq`
-                                                                                                             ((case (Seq.empty) of
-                                                                                                               { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
-                                                                                                               (case (Seq.empty) of
-                                                                                                                { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
-                                                                                                                (case (Map.empty) of
-                                                                                                                 { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
-                                                                                                                 (case ([]) of
-                                                                                                                  { _lhsOnmL | _lhsOnmL `seq` (True) ->
-                                                                                                                  (case (empty) of
-                                                                                                                   { _lhsOpp | _lhsOpp `seq` (True) ->
-                                                                                                                   (case ([]) of
-                                                                                                                    { _lhsOppL | _lhsOppL `seq` (True) ->
-                                                                                                                    ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOnmL,_lhsOpp,_lhsOppL) }) }) }) }) }) }))))))))))))
+                                                                                                         (_lhsItr `seq`
+                                                                                                          (_lhsItyKiGlobFreeTvarS `seq`
+                                                                                                           (_lhsItyTyGlobFreeTvarS `seq`
+                                                                                                            (_lhsItyTyTySigFreeTvarS `seq`
+                                                                                                             (_lhsIvalTyGlobFreeTvarS `seq`
+                                                                                                              ((case (Seq.empty) of
+                                                                                                                { _lhsOallErrSq | _lhsOallErrSq `seq` (True) ->
+                                                                                                                (case (Seq.empty) of
+                                                                                                                 { _lhsOerrSq | _lhsOerrSq `seq` (True) ->
+                                                                                                                 (case (Map.empty) of
+                                                                                                                  { _lhsOgathMentrelFilterMp | _lhsOgathMentrelFilterMp `seq` (True) ->
+                                                                                                                  (case ([]) of
+                                                                                                                   { _lhsOnmL | _lhsOnmL `seq` (True) ->
+                                                                                                                   (case (empty) of
+                                                                                                                    { _lhsOpp | _lhsOpp `seq` (True) ->
+                                                                                                                    (case ([]) of
+                                                                                                                     { _lhsOppL | _lhsOppL `seq` (True) ->
+                                                                                                                     (case (trppEmpty) of
+                                                                                                                      { _lhsOtrpp | _lhsOtrpp `seq` (True) ->
+                                                                                                                      ( _lhsOallErrSq,_lhsOerrSq,_lhsOgathMentrelFilterMp,_lhsOnmL,_lhsOpp,_lhsOppL,_lhsOtrpp) }) }) }) }) }) }) })))))))))))))
                                                                                        in  sem_TyVars_Nil_4)) of
                                                                                 { ( sem_TyVars_4) | True ->
                                                                                 ( _lhsOgathTyVarPolGam,_lhsOintlTyKiGam,_lhsOkiL,_lhsOpolVarL,_lhsOtyKiGam,_lhsOtyL,sem_TyVars_4) }) }) }) }) }) }) })))
diff --git a/src/UHC/Light/Compiler/EH/MainAG_common.hs b/src/UHC/Light/Compiler/EH/MainAG_common.hs
--- a/src/UHC/Light/Compiler/EH/MainAG_common.hs
+++ b/src/UHC/Light/Compiler/EH/MainAG_common.hs
@@ -18,6 +18,8 @@
 import UHC.Light.Compiler.Ty.FitsIn
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Utils
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Data.Maybe
@@ -25,8 +27,6 @@
 import UHC.Light.Compiler.Ty.Trf.Quantify
 import UHC.Light.Compiler.Ty.Trf.Instantiate
 import UHC.Light.Compiler.Ty
-import UHC.Light.Compiler.Base.Debug as Debug
-import Debug.Trace
 import UHC.Light.Compiler.Ty.FitsInCommon2
 import UHC.Light.Compiler.Ty.FIEnv2
 import qualified Data.Set as Set
@@ -95,6 +95,8 @@
     , Int               -- max kind arity over which genericity abstracts, currently \in {0,1}
     )
 
+type GenerDataInfoMp = Map.Map HsName GenerDataInfo
+
 -- | what kind of instance should be generated
 data GenerInstKind
   = GenerInstKind_Datatype
@@ -427,6 +429,7 @@
         , [Err]                                                                             -- errors
         , SimplifyResult CHRPredOcc RedHowAnnotation Guard VarMp                            -- simplification work, for a next call
         , CHRPredOccEvidMp                                                                  -- map from constraint/pred occurrence to evidence
+        , EvidCBindL																		-- bindings which can be directly inserted
         , EvidKeyToCBindMap                                                                 -- map from occurrence to binding, globally
         , PredScopeToCBindMap                                                               -- map from predscope to binding, per predscope opening/intro
         , EvidKeyToCExprMap                                                                 -- map from occurrence to expr + additional nesting info, for debug only
@@ -451,10 +454,12 @@
         { simpresRemPredL = map fst chrSolveAssumablePrOccL3
         }
     , chrSolveEvidMp2
+    , chrSolveEvidCBindL
     , chrSolveEvidBindMp, chrSolveScopeBindMp
     , chrSolveEvidCoreMp        -- for debug only
     )
-  where s = execState (simplify' simplifyHow chrStore clDfGam heur partitionUnresolved2AmbigAndOthers toProveHereCnstrMpPrev)
+  where opts                        =   feEHCOpts $ fiEnv env
+        s = execState (simplify' simplifyHow chrStore clDfGam heur partitionUnresolved2AmbigAndOthers toProveHereCnstrMpPrev)
                       (emptySimplifyState {simpEnv = env {fiUniq = u1}, simpToProveHereCnstrMp = toProveHereCnstrMp, simpRes = prevRes})
         env'                        =   simpEnv s
         chrSimplifyResult4          =   simpRes s
@@ -474,8 +479,8 @@
           = evidMpToCore (env' {fiUniq = u3}) chrSolveEvidMp2
 
         -- get the bindings which must be introduced
-        (chrSolveEvidBindMp,chrSolveScopeBindMp)
-          = evidKeyCoreMpToBinds env' chrSolveEvidCoreMp
+        (chrSolveEvidCBindL,chrSolveEvidBindMp,chrSolveScopeBindMp)
+          = evidKeyCoreMpToBinds2 env' chrSolveEvidCoreMp
 
         -- overlapping errors; 20120209: is empty, detection done earlier
         -- overlapErrs = if null overlapEvids then [] else [rngLift range Err_OverlapPreds [ (cpoPr $ overlapevidPredOcc a,map pp $ overlapevidInfos a) | a <- overlapEvids]]
@@ -519,11 +524,19 @@
 
 
 
+-- | Get the superclass fields names
 tyPrLToSupNmL :: TyL -> [HsName]
 tyPrLToSupNmL = zipWith (\i p -> hsnUniqifyInt HsNameUniqifier_SuperClass i (tyPredNm p)) [1..]
 
+-- | Get dictionary type of predicate
+tyDict :: Ty -> Ty
+tyDict t = appConApp (hsnClass2Dict n) as
+  where t'  = predTy $ tyPred t
+        n   = tyAppFunConNm t'
+        as  = appUnAppArgs t'
 
 
+
 -- | given the name of an instance, return names of intermediate dictionaries being constructed
 mkInstanceBuildNms :: HsName -> (HsName,HsName)
 mkInstanceBuildNms dictNm
@@ -1035,7 +1048,7 @@
             , foErrL evFO
             )
           where (_,u1,u2) = mkNewLevUID2 uniq
-                clgi  = panicJust ("mkDataGenerBinds.clGam: " ++ show dictNm ++ ": " ++ show clNm) $ gamLookup clNm clGam
+                clgi  = panicJust ("mkDataGenerBinds.clGam: " ++ show dictNm ++ " :: class " ++ show clNm) $ gamLookup clNm clGam
 
                 -- derived names required for building
                 (dictSelfNm,dictBuildNm) = mkInstanceBuildNms dictNm
@@ -1093,6 +1106,32 @@
 
 
 
+-- | Construct type representations for constructing and deconstructing a constructor
+mkDataConstrTys1 :: (TyL,FldTyL) -> Ty -> (Ty, Ty)
+mkDataConstrTys1 (dataConTyL,dataConFldTyL) dataTy = (dataConTy, dataConProdTy)
+  where dataConTy       = dataConTyL `appArr` dataTy
+        dataConProdTy   = recRec $ assocLMapKey fromJust $ fldTyLEnsureLabels dataConFldTyL
+
+-- | Construct type representations for constructing and deconstructing a constructor
+mkDataConstrTys2 :: (TyVarId -> Ty) -> Ty -> Ty -> Ty
+mkDataConstrTys2 (mkMetaTy) dataConProdTy dataTy = dataQuUnConTy
+  where dataConTyFv     = varFree dataTy
+        dataConProdTyFv = varFree dataConProdTy
+        dataQuUnConTy   = [dataTy] `appArr` mkTyQu tyQu_Exists (mkk (dataConProdTyFv \\ dataConTyFv)) dataConProdTy
+          where
+            mkk tvs = [ (v, mkMetaTy v) | v <- tvs ] -- zip tvs (repeat kiStar) -- TBD
+
+mkDataConstrValGam :: HsName -> Ty -> Ty -> ValGam
+mkDataConstrValGam conNm dataConTy dataQuUnConTy = assocLToGam [ (conNm, ValGamInfo dataConTy), (hsnUn conNm, ValGamInfo dataQuUnConTy) ]
+
+
+
+-- | Construct a kind type for a existentially quantified tyvar in the deconstructor of a datatype
+-- mkDataConstrTyVarKi :: TyKiGam -> TyKiGam -> VarMp -> TyVarId -> Ty
+-- mkDataConstrTyVarKi finTyKiGam intlTyKiGam tvKiVarMp = tvarKi finTyKiGam intlTyKiGam tvKiVarMp emptyVarMp
+
+
+
 infixr 2 >###<      -- same as >-<
 
 (>###<) :: PP_Doc -> PP_Doc -> PP_Doc
@@ -1308,6 +1347,8 @@
 
 
 
+
+
 data ExprCtxt
   = ExprCtxt_Top | ExprCtxt_Lam | ExprCtxt_Internal
   deriving Eq
@@ -1331,7 +1372,7 @@
                TyGam ->
                TyKiGam ->
                ValGam ->
-               ( ErrSq,CModule,UID,ScopedPredStore,ClassDefaultGam,ClGam,DataGam,(Seq.Seq (HsName,IdOccKind)),KiGam,LamMp,ModEntRelFilterMp,PolGam,TyGam,TyKiGam,ValGam,(Maybe (Set.Set HsName)),PP_Doc,PP_Doc)
+               ( ErrSq,CModule,UID,ScopedPredStore,ClassDefaultGam,ClGam,DataGam,(Seq.Seq (HsName,IdOccKind)),KiGam,LamMp,ModEntRelFilterMp,PolGam,TyGam,TyKiGam,ValGam,(Maybe (Set.Set HsName)),PP_Doc,PP_Doc,TrPP)
 
 -- CaseAlt -----------------------------------------------------
 
@@ -1343,7 +1384,8 @@
                    Int ->
                    Int ->
                    ( Int,T_CaseAlt_3)
-type T_CaseAlt_3 = VarMp ->
+type T_CaseAlt_3 = GenerDataInfoMp ->
+                   VarMp ->
                    EHCOpts ->
                    PolGam ->
                    VarMp ->
@@ -1351,7 +1393,7 @@
                    TyGam ->
                    TyKiGam ->
                    TyVarIdS ->
-                   ( VarMp,VarMp,T_CaseAlt_4)
+                   ( GenerDataInfoMp,VarMp,VarMp,T_CaseAlt_4)
 type T_CaseAlt_4 = ClGam ->
                    DataGam ->
                    VarMp ->
@@ -1379,7 +1421,8 @@
                    HsName ->
                    RangeMp ->
                    ToSysfEnv ->
-                   ( ErrSq,CSubst,ErrSq,ModEntRelFilterMp,VarMp,Ty,PP_Doc,RAlt,RAlt,Ty)
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                   ( ErrSq,CSubst,ErrSq,ModEntRelFilterMp,VarMp,Ty,PP_Doc,RAlt,RAlt,TrPP,Ty)
 
 -- CaseAlts ----------------------------------------------------
 
@@ -1391,7 +1434,8 @@
                     Int ->
                     Int ->
                     ( Int,T_CaseAlts_3)
-type T_CaseAlts_3 = VarMp ->
+type T_CaseAlts_3 = GenerDataInfoMp ->
+                    VarMp ->
                     EHCOpts ->
                     PolGam ->
                     VarMp ->
@@ -1399,7 +1443,7 @@
                     TyGam ->
                     TyKiGam ->
                     TyVarIdS ->
-                    ( VarMp,VarMp,T_CaseAlts_4)
+                    ( GenerDataInfoMp,VarMp,VarMp,T_CaseAlts_4)
 type T_CaseAlts_4 = ClGam ->
                     DataGam ->
                     VarMp ->
@@ -1427,7 +1471,8 @@
                     HsName ->
                     RangeMp ->
                     ToSysfEnv ->
-                    ( ErrSq,CSubst,ErrSq,ModEntRelFilterMp,VarMp,Ty,PP_Doc,([PP_Doc]),([RAlt]),([RAlt]))
+                    (TraceOn -> [PP_Doc] -> TrPP) ->
+                    ( ErrSq,CSubst,ErrSq,ModEntRelFilterMp,VarMp,Ty,PP_Doc,([PP_Doc]),([RAlt]),([RAlt]),TrPP)
 
 -- DataConstr --------------------------------------------------
 
@@ -1467,12 +1512,13 @@
                       PredScope ->
                       RangeMp ->
                       ToSysfEnv ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
                       TyVarIdS ->
                       TyVarIdS ->
                       TyVarIdS ->
                       ValGam ->
                       TyVarIdS ->
-                      ( ErrSq,ErrSq,CBindL,CBindL,ModEntRelFilterMp,VarMp,PP_Doc,CBindL,CBindL)
+                      ( ErrSq,ErrSq,CBindL,CBindL,ModEntRelFilterMp,VarMp,PP_Doc,TrPP,CBindL,CBindL)
 
 -- DataConstrs -------------------------------------------------
 
@@ -1512,12 +1558,13 @@
                        PredScope ->
                        RangeMp ->
                        ToSysfEnv ->
+                       (TraceOn -> [PP_Doc] -> TrPP) ->
                        TyVarIdS ->
                        TyVarIdS ->
                        TyVarIdS ->
                        ValGam ->
                        TyVarIdS ->
-                       ( ErrSq,ErrSq,CBindL,CBindL,ModEntRelFilterMp,VarMp,PP_Doc,([PP_Doc]),CBindL,CBindL)
+                       ( ErrSq,ErrSq,CBindL,CBindL,ModEntRelFilterMp,VarMp,PP_Doc,([PP_Doc]),TrPP,CBindL,CBindL)
 
 -- DataField ---------------------------------------------------
 
@@ -1551,12 +1598,13 @@
                      PredScope ->
                      RangeMp ->
                      ToSysfEnv ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
                      VarMp ->
                      TyVarIdS ->
                      TyVarIdS ->
                      TyVarIdS ->
                      TyVarIdS ->
-                     ( ErrSq,ErrSq,ModEntRelFilterMp,VarMp,VarMp,PP_Doc)
+                     ( ErrSq,ErrSq,ModEntRelFilterMp,VarMp,VarMp,PP_Doc,TrPP)
 
 -- DataFieldExpr -----------------------------------------------
 
@@ -1568,7 +1616,8 @@
                          Int ->
                          Int ->
                          ( Int,T_DataFieldExpr_3)
-type T_DataFieldExpr_3 = VarMp ->
+type T_DataFieldExpr_3 = GenerDataInfoMp ->
+                         VarMp ->
                          EHCOpts ->
                          PolGam ->
                          VarMp ->
@@ -1576,7 +1625,7 @@
                          TyGam ->
                          TyKiGam ->
                          TyVarIdS ->
-                         ( VarMp,VarMp,T_DataFieldExpr_4)
+                         ( GenerDataInfoMp,VarMp,VarMp,T_DataFieldExpr_4)
 type T_DataFieldExpr_4 = ClGam ->
                          VarMp ->
                          TyKiGam ->
@@ -1607,7 +1656,8 @@
                          HsName ->
                          RangeMp ->
                          ToSysfEnv ->
-                         ( ErrSq,CSubst,CBindL,CExpr,ErrSq,(FieldUpdateL (DataTagInfo -> Int -> CExpr)),ModEntRelFilterMp,VarMp,(Maybe DataTagInfo),PP_Doc,([PP_Doc]))
+                         (TraceOn -> [PP_Doc] -> TrPP) ->
+                         ( ErrSq,CSubst,CBindL,CExpr,ErrSq,(FieldUpdateL (DataTagInfo -> Int -> CExpr)),ModEntRelFilterMp,VarMp,(Maybe DataTagInfo),PP_Doc,([PP_Doc]),TrPP)
 
 -- DataFieldPatExpr --------------------------------------------
 
@@ -1619,7 +1669,8 @@
                             Int ->
                             Int ->
                             ( Int,T_DataFieldPatExpr_3)
-type T_DataFieldPatExpr_3 = VarMp ->
+type T_DataFieldPatExpr_3 = GenerDataInfoMp ->
+                            VarMp ->
                             EHCOpts ->
                             PolGam ->
                             VarMp ->
@@ -1627,7 +1678,7 @@
                             TyGam ->
                             TyKiGam ->
                             TyVarIdS ->
-                            ( VarMp,VarMp,TyGam,TyKiGam,T_DataFieldPatExpr_4)
+                            ( GenerDataInfoMp,VarMp,VarMp,TyGam,TyKiGam,T_DataFieldPatExpr_4)
 type T_DataFieldPatExpr_4 = ClGam ->
                             DataGam ->
                             VarMp ->
@@ -1656,8 +1707,9 @@
                             HsName ->
                             RangeMp ->
                             ToSysfEnv ->
+                            (TraceOn -> [PP_Doc] -> TrPP) ->
                             VarMp ->
-                            ( ErrSq,CSubst,DataTagInfo,ErrSq,([HsName]),FieldSplitL,ModEntRelFilterMp,VarMp,CPatRest,PP_Doc,([PP_Doc]),CBindL)
+                            ( ErrSq,CSubst,DataTagInfo,ErrSq,([HsName]),FieldSplitL,ModEntRelFilterMp,VarMp,CPatRest,PP_Doc,([PP_Doc]),TrPP,CBindL)
 
 -- DataFields --------------------------------------------------
 
@@ -1691,12 +1743,13 @@
                       PredScope ->
                       RangeMp ->
                       ToSysfEnv ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
                       VarMp ->
                       TyVarIdS ->
                       TyVarIdS ->
                       TyVarIdS ->
                       TyVarIdS ->
-                      ( ErrSq,ErrSq,ModEntRelFilterMp,VarMp,VarMp,PP_Doc,([PP_Doc]))
+                      ( ErrSq,ErrSq,ModEntRelFilterMp,VarMp,VarMp,PP_Doc,([PP_Doc]),TrPP)
 
 -- Decl --------------------------------------------------------
 
@@ -1721,14 +1774,15 @@
                 PolGam ->
                 TyKiGam ->
                 ( VarMp,PolGam,T_Decl_7)
-type T_Decl_7 = VarMp ->
+type T_Decl_7 = GenerDataInfoMp ->
+                VarMp ->
                 (Maybe Polarity) ->
                 EHCOpts ->
                 PolGam ->
                 VarMp ->
                 PredScope ->
                 TyVarIdS ->
-                ( ([GenerDataInfo]),VarMp,VarMp,T_Decl_8)
+                ( ([GenerDataInfo]),GenerDataInfoMp,VarMp,VarMp,T_Decl_8)
 type T_Decl_8 = ClGam ->
                 ( ClGam,T_Decl_9)
 type T_Decl_9 = VarMp ->
@@ -1764,7 +1818,8 @@
                  HsName ->
                  RangeMp ->
                  ToSysfEnv ->
-                 ( ErrSq,([CExpr -> CExpr]),CSubst,ErrSq,CBindL,CBindL,(Seq.Seq (HsName,IdOccKind)),LamMp,ModEntRelFilterMp,VarMp,(Set.Set HsName),PP_Doc,CBindL,CBindL)
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( ErrSq,([CExpr -> CExpr]),CSubst,ErrSq,CBindL,CBindL,(Seq.Seq (HsName,IdOccKind)),LamMp,ModEntRelFilterMp,VarMp,(Set.Set HsName),PP_Doc,TrPP,CBindL,CBindL)
 
 -- Decls -------------------------------------------------------
 
@@ -1789,14 +1844,15 @@
                  PolGam ->
                  TyKiGam ->
                  ( VarMp,PolGam,T_Decls_7)
-type T_Decls_7 = VarMp ->
+type T_Decls_7 = GenerDataInfoMp ->
+                 VarMp ->
                  (Maybe Polarity) ->
                  EHCOpts ->
                  PolGam ->
                  VarMp ->
                  PredScope ->
                  TyVarIdS ->
-                 ( ([GenerDataInfo]),VarMp,VarMp,T_Decls_8)
+                 ( ([GenerDataInfo]),GenerDataInfoMp,VarMp,VarMp,T_Decls_8)
 type T_Decls_8 = ClGam ->
                  ( ClGam,T_Decls_9)
 type T_Decls_9 = VarMp ->
@@ -1832,7 +1888,8 @@
                   HsName ->
                   RangeMp ->
                   ToSysfEnv ->
-                  ( ErrSq,([CExpr -> CExpr]),CSubst,ErrSq,CBindL,CBindL,(Seq.Seq (HsName,IdOccKind)),LamMp,ModEntRelFilterMp,VarMp,(Set.Set HsName),PP_Doc,CBindL,CBindL)
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
+                  ( ErrSq,([CExpr -> CExpr]),CSubst,ErrSq,CBindL,CBindL,(Seq.Seq (HsName,IdOccKind)),LamMp,ModEntRelFilterMp,VarMp,(Set.Set HsName),PP_Doc,TrPP,CBindL,CBindL)
 
 -- Expr --------------------------------------------------------
 
@@ -1845,7 +1902,8 @@
                 Int ->
                 Int ->
                 ( Int,T_Expr_3)
-type T_Expr_3 = VarMp ->
+type T_Expr_3 = GenerDataInfoMp ->
+                VarMp ->
                 EHCOpts ->
                 PolGam ->
                 VarMp ->
@@ -1853,7 +1911,7 @@
                 TyGam ->
                 TyKiGam ->
                 TyVarIdS ->
-                ( VarMp,VarMp,T_Expr_4)
+                ( GenerDataInfoMp,VarMp,VarMp,T_Expr_4)
 type T_Expr_4 = ClGam ->
                 VarMp ->
                 TyKiGam ->
@@ -1881,7 +1939,8 @@
                 HsName ->
                 RangeMp ->
                 ToSysfEnv ->
-                ( ErrSq,([Coe]),([PP_Doc]),CExpr,HsName,PP_Doc,([(CBindCateg,CBindL)]),CSubst,UIDS,CExpr,ErrSq,([(CBindCateg,CBindL)]),(FieldUpdateL CExpr),ClGam,(Seq.Seq (HsName,IdOccKind)),KiGam,LamMp,ModEntRelFilterMp,PolGam,VarMp,TyGam,TyKiGam,Bool,([PP_Doc]),PP_Doc,CExpr,([(CBindCateg,CBindL)]),([(CBindCateg,CBindL)]),CBindL,(Set.Set HsName),PP_Doc)
+                (TraceOn -> [PP_Doc] -> TrPP) ->
+                ( ErrSq,([Coe]),([PP_Doc]),CExpr,HsName,PP_Doc,([(CBindCateg,CBindL)]),CSubst,UIDS,CExpr,ErrSq,([(CBindCateg,CBindL)]),(FieldUpdateL CExpr),ClGam,(Seq.Seq (HsName,IdOccKind)),KiGam,LamMp,ModEntRelFilterMp,PolGam,VarMp,TyGam,TyKiGam,Bool,([PP_Doc]),PP_Doc,CExpr,([(CBindCateg,CBindL)]),([(CBindCateg,CBindL)]),CBindL,(Set.Set HsName),PP_Doc,TrPP)
 
 -- ExprAnn -----------------------------------------------------
 
@@ -1904,11 +1963,12 @@
                    HsName ->
                    EHCOpts ->
                    ToSysfEnv ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
                    TyVarIdS ->
                    TyVarIdS ->
                    TyVarIdS ->
                    TyVarIdS ->
-                   ( ErrSq,ErrSq,([ClsFuncDep]),ModEntRelFilterMp,PP_Doc,Range)
+                   ( ErrSq,ErrSq,([ClsFuncDep]),ModEntRelFilterMp,PP_Doc,Range,TrPP)
 
 -- FuncDeps ----------------------------------------------------
 
@@ -1926,11 +1986,12 @@
                     HsName ->
                     EHCOpts ->
                     ToSysfEnv ->
+                    (TraceOn -> [PP_Doc] -> TrPP) ->
                     TyVarIdS ->
                     TyVarIdS ->
                     TyVarIdS ->
                     TyVarIdS ->
-                    ( ErrSq,ErrSq,([ClsFuncDep]),ModEntRelFilterMp,PP_Doc,([PP_Doc]),Range)
+                    ( ErrSq,ErrSq,([ClsFuncDep]),ModEntRelFilterMp,PP_Doc,([PP_Doc]),Range,TrPP)
 
 -- KiExpr ------------------------------------------------------
 
@@ -1946,11 +2007,12 @@
                   HsName ->
                   EHCOpts ->
                   ToSysfEnv ->
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
-                  ( ErrSq,([PP_Doc]),HsName,PP_Doc,ErrSq,ModEntRelFilterMp,PP_Doc)
+                  ( ErrSq,([PP_Doc]),HsName,PP_Doc,ErrSq,ModEntRelFilterMp,PP_Doc,TrPP)
 
 -- KiExprAnn ---------------------------------------------------
 
@@ -1979,11 +2041,12 @@
                     HsName ->
                     EHCOpts ->
                     ToSysfEnv ->
+                    (TraceOn -> [PP_Doc] -> TrPP) ->
                     TyVarIdS ->
                     TyVarIdS ->
                     TyVarIdS ->
                     TyVarIdS ->
-                    ( ErrSq,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,(Maybe PP_Doc),TyGam,TyKiGam,TyVarWildMp)
+                    ( ErrSq,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,(Maybe PP_Doc),TrPP,TyGam,TyKiGam,TyVarWildMp)
 
 -- PatExpr -----------------------------------------------------
 
@@ -1995,7 +2058,8 @@
                    Int ->
                    Int ->
                    ( Int,T_PatExpr_3)
-type T_PatExpr_3 = VarMp ->
+type T_PatExpr_3 = GenerDataInfoMp ->
+                   VarMp ->
                    EHCOpts ->
                    PolGam ->
                    VarMp ->
@@ -2003,7 +2067,7 @@
                    TyGam ->
                    TyKiGam ->
                    TyVarIdS ->
-                   ( VarMp,VarMp,TyGam,TyKiGam,T_PatExpr_4)
+                   ( GenerDataInfoMp,VarMp,VarMp,TyGam,TyKiGam,T_PatExpr_4)
 type T_PatExpr_4 = ClGam ->
                    DataGam ->
                    VarMp ->
@@ -2035,8 +2099,9 @@
                    HsName ->
                    RangeMp ->
                    ToSysfEnv ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
                    VarMp ->
-                   ( ErrSq,([PP_Doc]),HsName,PP_Doc,CSubst,ErrSq,FieldSplitL,ModEntRelFilterMp,VarMp,Bool,CPatRest,PP_Doc,RPat,CBindL)
+                   ( ErrSq,([PP_Doc]),HsName,PP_Doc,CSubst,ErrSq,FieldSplitL,ModEntRelFilterMp,VarMp,Bool,CPatRest,PP_Doc,RPat,TrPP,CBindL)
 
 -- PatExprAnn --------------------------------------------------
 
@@ -2069,11 +2134,12 @@
                   HsName ->
                   EHCOpts ->
                   ToSysfEnv ->
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
-                  ( ErrSq,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,Pred)
+                  ( ErrSq,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,Pred,TrPP)
 
 -- PrExprs -----------------------------------------------------
 
@@ -2091,13 +2157,14 @@
                  PolGam ->
                  VarMp ->
                  ToSysfEnv ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
                  TyGam ->
                  TyKiGam ->
                  TyVarIdS ->
                  TyVarIdS ->
                  TyVarIdS ->
                  TyVarIdS ->
-                 ( ErrSq,HsNameS,HsNameS,ErrSq,UID,ModEntRelFilterMp,TyKiGam,VarMp,VarMp,PP_Doc,([PP_Doc]),([Pred]),Range,TyGam,TyKiGam,TyL,TyVarWildMp)
+                 ( ErrSq,HsNameS,HsNameS,ErrSq,UID,ModEntRelFilterMp,TyKiGam,VarMp,VarMp,PP_Doc,([PP_Doc]),([Pred]),Range,TrPP,TyGam,TyKiGam,TyL,TyVarWildMp)
 
 -- RecExpr -----------------------------------------------------
 
@@ -2109,7 +2176,8 @@
                    Int ->
                    Int ->
                    ( Int,T_RecExpr_3)
-type T_RecExpr_3 = VarMp ->
+type T_RecExpr_3 = GenerDataInfoMp ->
+                   VarMp ->
                    EHCOpts ->
                    PolGam ->
                    VarMp ->
@@ -2117,7 +2185,7 @@
                    TyGam ->
                    TyKiGam ->
                    TyVarIdS ->
-                   ( VarMp,VarMp,T_RecExpr_4)
+                   ( GenerDataInfoMp,VarMp,VarMp,T_RecExpr_4)
 type T_RecExpr_4 = ClGam ->
                    VarMp ->
                    TyKiGam ->
@@ -2145,7 +2213,8 @@
                    HsName ->
                    RangeMp ->
                    ToSysfEnv ->
-                   ( ErrSq,CSubst,ErrSq,HsName,(FieldUpdateL CExpr),ModEntRelFilterMp,VarMp,Bool,PP_Doc,([PP_Doc]),CExpr,Ty)
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                   ( ErrSq,CSubst,ErrSq,HsName,(FieldUpdateL CExpr),ModEntRelFilterMp,VarMp,Bool,PP_Doc,([PP_Doc]),CExpr,TrPP,Ty)
 
 -- RecPatExpr --------------------------------------------------
 
@@ -2157,7 +2226,8 @@
                       Int ->
                       Int ->
                       ( Int,T_RecPatExpr_3)
-type T_RecPatExpr_3 = VarMp ->
+type T_RecPatExpr_3 = GenerDataInfoMp ->
+                      VarMp ->
                       EHCOpts ->
                       PolGam ->
                       VarMp ->
@@ -2165,7 +2235,7 @@
                       TyGam ->
                       TyKiGam ->
                       TyVarIdS ->
-                      ( VarMp,VarMp,TyGam,TyKiGam,T_RecPatExpr_4)
+                      ( GenerDataInfoMp,VarMp,VarMp,TyGam,TyKiGam,T_RecPatExpr_4)
 type T_RecPatExpr_4 = ClGam ->
                       DataGam ->
                       VarMp ->
@@ -2196,8 +2266,9 @@
                       HsName ->
                       RangeMp ->
                       ToSysfEnv ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
                       VarMp ->
-                      ( ErrSq,CSubst,ErrSq,HsName,FieldSplitL,ModEntRelFilterMp,VarMp,CPatRest,PP_Doc,([PP_Doc]),CBindL)
+                      ( ErrSq,CSubst,ErrSq,HsName,FieldSplitL,ModEntRelFilterMp,VarMp,CPatRest,PP_Doc,([PP_Doc]),TrPP,CBindL)
 
 -- RowTyExpr ---------------------------------------------------
 
@@ -2224,11 +2295,12 @@
                      HsName ->
                      EHCOpts ->
                      ToSysfEnv ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
                      TyVarIdS ->
                      TyVarIdS ->
                      TyVarIdS ->
                      TyVarIdS ->
-                     ( ErrSq,HsNameS,HsNameS,ErrSq,HsName,ModEntRelFilterMp,PP_Doc,([PP_Doc]))
+                     ( ErrSq,HsNameS,HsNameS,ErrSq,HsName,ModEntRelFilterMp,PP_Doc,([PP_Doc]),TrPP)
 
 -- TyExpr ------------------------------------------------------
 
@@ -2256,11 +2328,12 @@
                   HsName ->
                   EHCOpts ->
                   ToSysfEnv ->
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
-                  ( ErrSq,([PP_Doc]),HsName,PP_Doc,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,TyL)
+                  ( ErrSq,([PP_Doc]),HsName,PP_Doc,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,TrPP,TyL)
 
 -- TyExprAnn ---------------------------------------------------
 
@@ -2291,11 +2364,12 @@
                    HsName ->
                    EHCOpts ->
                    ToSysfEnv ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
                    TyVarIdS ->
                    TyVarIdS ->
                    TyVarIdS ->
                    TyVarIdS ->
-                   ( ErrSq,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,([PP_Doc]))
+                   ( ErrSq,HsNameS,HsNameS,ErrSq,ModEntRelFilterMp,PP_Doc,([PP_Doc]),TrPP)
 
 -- TyVar -------------------------------------------------------
 
@@ -2313,11 +2387,12 @@
                  HsName ->
                  EHCOpts ->
                  ToSysfEnv ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
                  TyVarIdS ->
                  TyVarIdS ->
                  TyVarIdS ->
                  TyVarIdS ->
-                 ( ErrSq,ErrSq,ModEntRelFilterMp,HsName,PP_Doc)
+                 ( ErrSq,ErrSq,ModEntRelFilterMp,HsName,PP_Doc,TrPP)
 
 -- TyVars ------------------------------------------------------
 
@@ -2335,9 +2410,10 @@
                   HsName ->
                   EHCOpts ->
                   ToSysfEnv ->
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
                   TyVarIdS ->
-                  ( ErrSq,ErrSq,ModEntRelFilterMp,([HsName]),PP_Doc,([PP_Doc]))
+                  ( ErrSq,ErrSq,ModEntRelFilterMp,([HsName]),PP_Doc,([PP_Doc]),TrPP)
 
diff --git a/src/UHC/Light/Compiler/EH/Parser.hs b/src/UHC/Light/Compiler/EH/Parser.hs
--- a/src/UHC/Light/Compiler/EH/Parser.hs
+++ b/src/UHC/Light/Compiler/EH/Parser.hs
@@ -317,42 +317,46 @@
 pSel            =    pVar <|> pCon <|> mkHNmPos <$> pInt
 
 {-# LINE 513 "src/ehc/EH/Parser.chs" #-}
+pPrExprClass'   ::   EHCParser (HsName,PrExpr)
+pPrExprClass'   =    (\c t -> (c, mkEH PrExpr_Class c t))  <$> pCon <*> pTyExprs
+
 pPrExprClass    ::   EHCParser PrExpr
-pPrExprClass    =    mkEH PrExpr_Class  <$> pCon <*> pTyExprs
+pPrExprClass    =    snd <$> pPrExprClass'
 
-{-# LINE 518 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 521 "src/ehc/EH/Parser.chs" #-}
 pPrExprPrefix   ::   EHCParser (PrExpr -> PrExpr)
 pPrExprPrefix   =    mkEH PrExpr_Arrow  <$> pPrExprBase <* pKeyw hsnPrArrow
                 <|>  mkEH PrExpr_Forall <$  pKey "forall" <*> pVar <* pKey "."
 
-{-# LINE 524 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 527 "src/ehc/EH/Parser.chs" #-}
 pPrExpr         ::   EHCParser PrExpr
 pPrExpr         =    pPrExprPrefix <*> pPrExpr
                 <|>  pPrExprBase
 
-{-# LINE 530 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 533 "src/ehc/EH/Parser.chs" #-}
 pTyPrExpr       ::   EHCParser TyExpr
 pTyPrExpr       =    pTyPrExprPrefix <*> pTyPrExpr
                 <|>  mkEH TyExpr_Pred <$> pPrExprBase
 
-{-# LINE 536 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 539 "src/ehc/EH/Parser.chs" #-}
 pPrExprBase     ::   EHCParser PrExpr
 pPrExprBase     =    pPrExprClass
                 <|>  pParens pPrExpr
-{-# LINE 541 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 544 "src/ehc/EH/Parser.chs" #-}
                 <|>  mkEH PrExpr_DynVar <$> pDynVar <* pKey "::" <*> pTyExpr
                 <|>  pVar <**>  (    (\s v -> mkEH PrExpr_Lacks (mkEH RowTyExpr_Var v) s)
                                      <$ pKey "\\" <*> pSel
-{-# LINE 550 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 553 "src/ehc/EH/Parser.chs" #-}
                                 )
 
-{-# LINE 558 "src/ehc/EH/Parser.chs" #-}
-pClassHead      ::   EHCParser TyExpr
-pClassHead      =    pTyPrExprPrefix <*> pHd <|> pHd
-                where pHd = mkEH TyExpr_Pred <$> pPrExprClass
+{-# LINE 561 "src/ehc/EH/Parser.chs" #-}
+pClassHead      ::   EHCParser (HsName,TyExpr)
+pClassHead      =    (\pre (n,hd) -> (n, pre hd)) <$> pTyPrExprPrefix <*> pHd
+                <|>  pHd
+  where pHd = (\(n,p) -> (n, mkEH TyExpr_Pred p)) <$> pPrExprClass'
 
 pDeclClass      ::   EHCParser Decl
-pDeclClass      =    (\h deps d -> mkEH Decl_Class h deps Nothing d [])
+pDeclClass      =    (\(n,h) deps d -> mkEH Decl_Class n h deps Nothing d [])
                      <$   pKey "class"
                      <*>  pClassHead
                      <*>  (pKey "|" *> pListSep pComma (mkEH FuncDep_Dep <$> pTyVars1 <* pKey "->" <*> pTyVars1)
@@ -362,14 +366,14 @@
 
 pDeclInstance   ::   EHCParser Decl
 pDeclInstance   =    pKey "instance"
-                     *>   (    (\n h d -> mkEH Decl_Instance n InstNormal h d)
+                     *>   (    (\n (_,h) d -> mkEH Decl_Instance n InstNormal h d)
                                <$>  ((\n e -> Just (n,e)) <$> pVar <*> (True <$ pKey "<:" <|> False <$ pKey "::") `opt` Nothing)
                                <*>  pClassHead
                                <*   pKey "where" <*> pDecls
                           <|>  mkEH Decl_InstanceIntro Nothing <$> pExpr <* pKey "<:" <*> pPrExprClass
                           )
 
-{-# LINE 594 "src/ehc/EH/Parser.chs" #-}
+{-# LINE 598 "src/ehc/EH/Parser.chs" #-}
 pDynVar         ::   EHCParser HsName
 pDynVar         =    pKeyw hsnDynVar *> pVar
 
diff --git a/src/UHC/Light/Compiler/EHC/ASTHandler.hs b/src/UHC/Light/Compiler/EHC/ASTHandler.hs
--- a/src/UHC/Light/Compiler/EHC/ASTHandler.hs
+++ b/src/UHC/Light/Compiler/EHC/ASTHandler.hs
@@ -2,6 +2,7 @@
 
 module UHC.Light.Compiler.EHC.ASTHandler
 ( ASTParser (..)
+, ASTLens
 , ASTHandler' (..)
 , emptyASTHandler'
 , ASTHandler (..)
@@ -14,7 +15,7 @@
 where
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.CompileRun
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import Data.Typeable
 import GHC.Generics
 import qualified Data.Map as Map
@@ -36,6 +37,9 @@
 		  }
 
 {-# LINE 55 "src/ehc/EHC/ASTHandler.chs" #-}
+type ASTLens ast = Lens EHCompileUnit (Maybe ast)
+
+{-# LINE 63 "src/ehc/EHC/ASTHandler.chs" #-}
 data ASTHandler' ast
   = -- forall prs inp sym symmsg pos . -- msg .
       -- ( PP msg
@@ -48,6 +52,11 @@
 		  --- | Meta info: name of ast
 			_asthdlrName				:: !String
 
+		  --- * AST
+
+		  --- | Lens into AST, if any
+		  , _asthdlrASTLens 			:: Maybe (ASTLens ast)
+
 		  --- * File
 
 		  --- | Construct output FPath from module name, path, suffix
@@ -87,23 +96,31 @@
 
 		  --- * Input, parsing
 
-		  --- | Input an ast
-		  , _asthdlrInput				:: forall m . EHCCompileRunner m => ASTFileContent -> HsName -> EHCompilePhaseT m (Maybe ast)
-
 		  --- | Read/decode from serialized binary version on file
 		  , _asthdlrGetSerializeFileIO 	:: EHCOpts -> FPath -> IO (Maybe ast)
 
 		  --- | Check after deserialization
 		  , _asthdlrPostInputCheck 		:: EHCOpts -> EHCompileUnit -> HsName -> FPath -> ast -> [Err]
 
+		  --- * AST info extraction
+
+		  --- | Module name and imports
+		  , _asthdlrModnameImports 		:: forall m . EHCCompileRunner m => PrevFileSearchKey -> EHCompilePhaseT m (Maybe (HsName,[HsName]))
+
+		  --- * AST predicates
+
+		  --- | Is valid?
+		  , _asthdlrASTIsValid 		:: ast -> Bool
+
 		  }
 		  deriving Typeable
 
-{-# LINE 124 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 146 "src/ehc/EHC/ASTHandler.chs" #-}
 emptyASTHandler' :: forall ast . ASTHandler' ast
 emptyASTHandler'
   = ASTHandler'
       { _asthdlrName 				= "Unknown AST"
+      , _asthdlrASTLens             = Nothing
       , _asthdlrSuffixRel 			= (emptyASTSuffixRel :: ASTSuffixRel ast)
 
       , _asthdlrMkInputFPath		= \_ _ _ fp s -> fpathSetSuff s fp
@@ -115,29 +132,31 @@
       , _asthdlrPutSerializeFileIO	= \_ _ -> return False
       , _asthdlrOutputIO 			= \_ _ _ _ _ _ _ -> return False
 
-      , _asthdlrInput 				= \_ _ -> return Nothing
       , _asthdlrParseScanOpts		= \_ _ -> ScanUtils.defaultScanOpts
       , _asthdlrParser				= \_ _ -> (Nothing :: Maybe (ASTParser ast))
       , _asthdlrGetSerializeFileIO	= \_ _ -> return Nothing
       , _asthdlrPostInputCheck		= \_ _ _ _ _ -> []
+      , _asthdlrModnameImports		= \_ -> return Nothing
+      , _asthdlrASTIsValid          = const True
       }
 
-{-# LINE 156 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 182 "src/ehc/EHC/ASTHandler.chs" #-}
 data ASTHandler
   = forall ast .
       Typeable ast =>
         ASTHandler (ASTHandler' ast)
 
-{-# LINE 163 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 189 "src/ehc/EHC/ASTHandler.chs" #-}
 type ASTHandlerMp = Map.Map ASTType ASTHandler
 
-{-# LINE 171 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 197 "src/ehc/EHC/ASTHandler.chs" #-}
 -- | Per suffix AST specific info
 data ASTSuffixInfo ast
   = ASTSuffixInfo
       { _astsuffinfoSuff		:: String
-      , _astsuffinfoASTLensMp	:: Map.Map ASTFileTiming (Lens EHCompileUnit (Maybe ast))
+      , _astsuffinfoASTLensMp	:: Map.Map ASTFileTiming (ASTLens ast)
       , _astsuffinfoModfTimeMp	:: Map.Map ASTFileTiming (Lens EHCompileUnit (Maybe ClockTime))
+      , _astsuffinfoUpdParseOpts:: EHParseOpts -> EHParseOpts
       }
   deriving (Typeable, Generic)
 
@@ -147,7 +166,7 @@
 instance Ord (ASTSuffixInfo ast) where
   i1 `compare` i2 = _astsuffinfoSuff i1 `compare` _astsuffinfoSuff i2
 
-{-# LINE 190 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 217 "src/ehc/EHC/ASTHandler.chs" #-}
 type ASTSuffixRel ast = Rel.Rel ASTSuffixKey (ASTSuffixInfo ast)
 
 emptyASTSuffixRel :: ASTSuffixRel ast
@@ -157,8 +176,9 @@
   :: AssocL
        ASTSuffixKey
        ( String
-       , AssocL ASTFileTiming (Lens EHCompileUnit (Maybe ast))
+       , AssocL ASTFileTiming (ASTLens ast)
        , AssocL ASTFileTiming (Lens EHCompileUnit (Maybe ClockTime))
+       , EHParseOpts -> EHParseOpts
        )
      -> ASTSuffixRel ast
 mkASTSuffixRel' l = Rel.fromList
@@ -167,15 +187,16 @@
         s
         (Map.fromList il)
         (Map.fromList cl)
+        updopts
     )
-  | (sk,(s,il,cl)) <- l
+  | (sk,(s,il,cl,updopts)) <- l
   ]
 
 mkASTSuffixRel
   :: AssocL
        ASTSuffixKey
        ( String
-       , Lens EHCompileUnit (Maybe ast)
+       , ASTLens ast
        , Maybe (Lens EHCompileUnit (Maybe ClockTime))
        )
      -> ASTSuffixRel ast
@@ -184,6 +205,7 @@
     , ( s
       , [(ASTFileTiming_Current,i)]
       , maybe [] (\c -> [(ASTFileTiming_Current,c)]) mc
+      , id
     ) )
   | (sk,(s,i,mc)) <- l
   ]
@@ -197,19 +219,19 @@
 astsuffixLookupSuff k r = fmap _astsuffinfoSuff $ astsuffixLookup k r
 
 -- | Lookup lens
-astsuffixLookupLens :: ASTSuffixKey -> ASTFileTiming -> ASTSuffixRel ast -> Maybe (Lens EHCompileUnit (Maybe ast))
+astsuffixLookupLens :: ASTSuffixKey -> ASTFileTiming -> ASTSuffixRel ast -> Maybe (ASTLens ast)
 astsuffixLookupLens sk tk r = do
   i <- astsuffixLookup sk r
   Map.lookup tk $ _astsuffinfoASTLensMp i
 
-{-# LINE 260 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 290 "src/ehc/EHC/ASTHandler.chs" #-}
 -- | Lookup lens for modf time of
 astsuffixLookupTmLens :: ASTSuffixKey -> ASTFileTiming -> ASTSuffixRel ast -> Maybe (Lens EHCompileUnit (Maybe ClockTime))
 astsuffixLookupTmLens sk tk r = do
   i <- astsuffixLookup sk r
   Map.lookup tk $ _astsuffinfoModfTimeMp i
 
-{-# LINE 272 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 302 "src/ehc/EHC/ASTHandler.chs" #-}
 -- | Write to an ast to a file in the IO monad, return True if could be done
 asthdlrOutputIO :: ASTHandler' ast -> ASTFileContent -> EHCOpts -> EHCompileUnit -> HsName -> FPath -> FilePath -> ast -> IO Bool
 asthdlrOutputIO hdlr how opts ecu modNm fpC fnC ast = do
@@ -225,8 +247,10 @@
         _asthdlrPutSerializeFileIO hdlr fnC ast
       _ -> return False
 
-{-# LINE 291 "src/ehc/EHC/ASTHandler.chs" #-}
+{-# LINE 321 "src/ehc/EHC/ASTHandler.chs" #-}
 -- | Construct a FPath given a handler
-asthdlrMkInputFPath :: ASTHandler' ast -> EHCOpts -> EHCompileUnit -> ASTSuffixKey -> HsName -> FPath -> FPath
-asthdlrMkInputFPath hdlr opts ecu skey modNm fp = _asthdlrMkInputFPath hdlr opts ecu modNm fp suff
-  where suff = maybe "" id $ astsuffixLookupSuff skey $ _asthdlrSuffixRel hdlr
+asthdlrMkInputFPath :: ASTHandler' ast -> EHCOpts -> EHCompileUnit -> ASTFileSuffOverride -> HsName -> FPath -> FPath
+asthdlrMkInputFPath hdlr opts ecu overr modNm fp = _asthdlrMkInputFPath hdlr opts ecu modNm fp suff
+  where suff = case overr of
+          ASTFileSuffOverride_Suff skey -> maybe "" id $ astsuffixLookupSuff skey $ _asthdlrSuffixRel hdlr
+          ASTFileSuffOverride_AsIs      -> fpathSuff fp
diff --git a/src/UHC/Light/Compiler/EHC/ASTHandler/Instances.hs b/src/UHC/Light/Compiler/EHC/ASTHandler/Instances.hs
--- a/src/UHC/Light/Compiler/EHC/ASTHandler/Instances.hs
+++ b/src/UHC/Light/Compiler/EHC/ASTHandler/Instances.hs
@@ -9,11 +9,12 @@
 , allASThandlerMp
 , asthandlerLookup
 , asthandlerLookup'
+, asthandlerLookupM'
 , astHandler'_HI )
 where
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.CompileRun
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import qualified UHC.Light.Compiler.Config as Cfg
 import UHC.Light.Compiler.EHC.ASTHandler
 import qualified Data.Map as Map
@@ -23,17 +24,10 @@
 import Data.Typeable
 import GHC.Generics
 import UHC.Light.Compiler.Base.ParseUtils
-import qualified UHC.Light.Compiler.EH as EH
-import qualified UHC.Light.Compiler.HS as HS
-import qualified UHC.Light.Compiler.Core as Core
-import qualified UHC.Light.Compiler.CoreRun as CoreRun
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
-import qualified UHC.Light.Compiler.HS.MainAG as HSSem
-import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
-import qualified UHC.Light.Compiler.Core.ToCoreRun as Core2CoreRunSem
-import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
+import UHC.Light.Compiler.EHC.ASTTypes
 import UHC.Light.Compiler.Core.Trf.EraseExtractTysigCore
-import qualified UHC.Light.Compiler.CoreRun.Check as CoreRun2ChkSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
+import qualified UHC.Light.Compiler.HS.MainAG as HSSem
 import UHC.Light.Compiler.CoreRun as CoreRun
 import UHC.Light.Compiler.Core.ToCoreRun
 import UHC.Light.Compiler.CoreRun.Pretty
@@ -49,8 +43,6 @@
 import qualified UHC.Light.Compiler.Core.Parser as CorePrs
 import qualified UHC.Light.Compiler.CoreRun.Parser as CoreRunPrs
 import Control.Exception as CE
-import qualified UHC.Light.Compiler.HI as HI
-import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
 import qualified UHC.Util.Binary as Bin
 import UHC.Util.Serialize
 import UHC.Light.Compiler.Module.ImportExport
@@ -74,25 +66,55 @@
 
 
 
-
-
-
-
-
-
-
-{-# LINE 170 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
-astHandler'_HS :: ASTHandler' HS.AGItf
+{-# LINE 138 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+astHandler'_HS :: ASTHandler' AST_HS
 astHandler'_HS = mk emptyASTHandler'
   where mk (hdlr@(ASTHandler' {..})) =
           emptyASTHandler' -- ASTHandler'
             { _asthdlrName              = "Haskell"
+            , _asthdlrASTLens           = Just ecuMbHS
+            {-
             , _asthdlrSuffixRel			= mkASTSuffixRel
             								[ ( (ASTFileContent_Text	, ASTFileUse_Src), ("hs", ecuMbHS, tmlens) )
             								, ( (ASTFileContent_LitText, ASTFileUse_Src), ("lhs", ecuMbHS, tmlens) )
             								]
+            -}
+            , _asthdlrSuffixRel			= mkASTSuffixRel'
+            								[ ( (ASTFileContent_Text	, ASTFileUse_Src)
+            								  , ("hs"
+            								    , [ (ASTFileTiming_Current, ecuMbHS)
+            								      ]
+            								    , [ (ASTFileTiming_Current, ecuMbSrcTime)
+            								      ]
+            								    , id
+            								  ) )
+            								, ( (ASTFileContent_Text	, ASTFileUse_SrcImport)
+            								  , ("hs"
+            								    , [ (ASTFileTiming_Current, ecuMbHS)
+            								      ]
+            								    , [ (ASTFileTiming_Current, ecuMbSrcTime)
+            								      ]
+            								    , \o -> o {ehpoptsOkToStopAtErr=True, ehpoptsForImport=True}
+            								  ) )
+            								, ( (ASTFileContent_LitText	, ASTFileUse_Src)
+            								  , ("lhs"
+            								    , [ (ASTFileTiming_Current, ecuMbHS)
+            								      ]
+            								    , [ (ASTFileTiming_Current, ecuMbSrcTime)
+            								      ]
+            								    , \o -> o {ehpoptsLitMode=True}
+            								  ) )
+            								, ( (ASTFileContent_LitText	, ASTFileUse_SrcImport)
+            								  , ("lhs"
+            								    , [ (ASTFileTiming_Current, ecuMbHS)
+            								      ]
+            								    , [ (ASTFileTiming_Current, ecuMbSrcTime)
+            								      ]
+            								    , \o -> o {ehpoptsLitMode=True, ehpoptsOkToStopAtErr=True, ehpoptsForImport=True}
+            								  ) )
+            								]
             , _asthdlrEcuStore          = ecuStoreHS
-            , _asthdlrParseScanOpts     = \opts popts -> hsScanOpts opts
+            , _asthdlrParseScanOpts     = \opts _ -> hsScanOpts opts
             , _asthdlrParser            = \opts popts -> Just $ ASTParser $
                                             if ehpoptsForImport popts then HSPrs.pAGItfImport opts else
                                             HSPrs.pAGItf opts
@@ -104,22 +126,26 @@
             , _asthdlrInput             = _asthdlrInput
 -}
             }
+        {-
         tmlens =
           Just ecuMbSrcTime
+        -}
 
 
-{-# LINE 208 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
-astHandler'_EH :: ASTHandler' EH.AGItf
+{-# LINE 245 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+astHandler'_EH :: ASTHandler' AST_EH
 astHandler'_EH = mk emptyASTHandler'
   where mk (hdlr@(ASTHandler' {..})) =
           emptyASTHandler' -- ASTHandler'
             { _asthdlrName              = "EH"
+            , _asthdlrASTLens           = Just ecuMbEH
             , _asthdlrSuffixRel			= mkASTSuffixRel
             								[ ( (ASTFileContent_Text	, ASTFileUse_Src), ("eh", ecuMbEH, Nothing) )
             								]
             , _asthdlrEcuStore          = ecuStoreEH
             , _asthdlrParseScanOpts     = \opts _ -> ehScanOpts opts
             , _asthdlrParser            = \_ _ -> Just $ ASTParser EHPrs.pAGItf
+            , _asthdlrPretty			= \_ ecu _ -> fmap EHSem.pp_Syn_AGItf $ _ecuMbEHSem ecu
 
 {-
             -- the rest, avoid record update (http://hackage.haskell.org/trac/ghc/ticket/2595, http://breaks.for.alienz.org/blog/2011/10/21/record-update-for-insufficiently-polymorphic-field/)
@@ -129,12 +155,13 @@
 -}
             }
 
-{-# LINE 234 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
-astHandler'_HI :: ASTHandler' HI.HIInfo
+{-# LINE 273 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+astHandler'_HI :: ASTHandler' AST_HI
 astHandler'_HI = mk emptyASTHandler'
   where mk (hdlr@(ASTHandler' {..})) =
           emptyASTHandler' -- ASTHandler'
             { _asthdlrName              = "HI"
+            , _asthdlrASTLens           = Just ecuMbHIInfo
             , _asthdlrSuffixRel			= mkASTSuffixRel'
             								[ ( (ASTFileContent_Binary	, ASTFileUse_Cache)
             								  , ("hi"
@@ -143,6 +170,7 @@
             								      ]
             								    , [ (ASTFileTiming_Prev, ecuMbHIInfoTime)
             								      ]
+            								    , id
             								  ) )
             								]
             , _asthdlrMkInputFPath		= \opts ecu modNm fp suff ->
@@ -154,32 +182,35 @@
 			                                CE.catch (getSGetFile (fpathToStr fp) (HI.sgetHIInfo opts))
                                                      (\(_ :: SomeException) -> return $ HI.emptyHIInfo {HI.hiiValidity = HI.HIValidity_Absent})
             , _asthdlrPostInputCheck	= \opts ecu modNm fp hiinfo -> case HI.hiiValidity hiinfo of
+                                               HI.HIValidity_Ok -> []
                                                HI.HIValidity_WrongMagic | not (ecuCanCompile ecu)
-                                                 ->   [rngLift emptyRange Err_WrongMagic
-                                                         (show modNm)
-                                                         (fpathToStr fp)
-                                                      ]
+                                                 -> [rngLift emptyRange Err_WrongMagic
+                                                       (show modNm)
+                                                       (fpathToStr fp)
+                                                    ]
                                                HI.HIValidity_Inconsistent | not (ecuCanCompile ecu)
-                                                 ->   [rngLift emptyRange Err_InconsistentHI
-                                                         (show modNm)
-                                                         (fpathToStr fp)
-                                                         [Sig.timestamp, Cfg.installVariant opts, show $ ehcOptTarget opts, show $ ehcOptTargetFlavor opts]
-                                                         [HI.hiiSrcTimeStamp hiinfo   , HI.hiiCompiler hiinfo  , show $ HI.hiiTarget hiinfo, show $ HI.hiiTargetFlavor hiinfo]
-                                                      ]
+                                                 -> [rngLift emptyRange Err_InconsistentHI
+                                                       (show modNm)
+                                                       (fpathToStr fp)
+                                                       [Sig.timestamp, Cfg.installVariant opts, show $ ehcOptTarget opts, show $ ehcOptTargetFlavor opts]
+                                                       [HI.hiiSrcTimeStamp hiinfo   , HI.hiiCompiler hiinfo  , show $ HI.hiiTarget hiinfo, show $ HI.hiiTargetFlavor hiinfo]
+                                                    ]
                                                _ -> []
+            , _asthdlrASTIsValid      	= \hiinfo -> HI.hiiValidity hiinfo == HI.HIValidity_Ok
             }
 
-{-# LINE 285 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
-astHandler'_Core :: ASTHandler' Core.CModule
+{-# LINE 328 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+astHandler'_Core :: ASTHandler' AST_Core
 astHandler'_Core = mk emptyASTHandler'
   where mk (hdlr@(ASTHandler' {..})) =
           emptyASTHandler' -- ASTHandler'
             { _asthdlrName              = "Core"
+            , _asthdlrASTLens           = Just ecuMbCore
             , _asthdlrSuffixRel			= mkASTSuffixRel
             								[ ( (ASTFileContent_Binary	, ASTFileUse_Target)	, (Cfg.suffixDotlessBinaryCore, ecuMbCore, Nothing) )
-            								, ( (ASTFileContent_Text	, ASTFileUse_Src)		, ("", ecuMbCore, Nothing) )
+            								, ( (ASTFileContent_Text	, ASTFileUse_Src)		, (Cfg.suffixDotlessOutputTextualCore, ecuMbCore, Nothing) )
             								, ( (ASTFileContent_Text	, ASTFileUse_Dump)		, (Cfg.suffixDotlessOutputTextualCore, ecuMbCore, Nothing) )
-            								, ( (ASTFileContent_Binary	, ASTFileUse_Src)		, ("", ecuMbCore, Nothing) )
+            								, ( (ASTFileContent_Binary	, ASTFileUse_Src)		, (Cfg.suffixDotlessInputOutputBinaryCore, ecuMbCore, Nothing) )
             								, ( (ASTFileContent_Binary	, ASTFileUse_Dump)		, (Cfg.suffixDotlessInputOutputBinaryCore, ecuMbCore, Nothing) )
             								]
             							  `Rel.union`
@@ -191,11 +222,12 @@
             								      ]
             								    , [ (ASTFileTiming_Prev, ecuMbCoreTime)
             								      ]
+            								    , id
             								  ) )
             								]
             , _asthdlrEcuStore          = ecuStoreCore
             , _asthdlrParseScanOpts     = \opts _ -> coreScanOpts opts
-            , _asthdlrParser            = \opts _ -> Just $ ASTParser (CorePrs.pCModule opts :: EHPrsAna Core.CModule)
+            , _asthdlrParser            = \opts _ -> Just $ ASTParser (CorePrs.pCModule opts :: EHPrsAna AST_Core)
             , _asthdlrPretty			= \opts _ ast -> Just $ ppCModule (opts {- ehcOptCoreOpts = coreOpts ++ ehcOptCoreOpts opts -}) $ cmodTrfEraseTyCore opts ast
 			, _asthdlrPutSerializeFileIO= default_asthdlrPutSerializeFileIO
 			, _asthdlrGetSerializeFileIO= default_asthdlrGetSerializeFileIO
@@ -211,17 +243,18 @@
 -}
             }
 
-{-# LINE 340 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
-astHandler'_CoreRun :: ASTHandler' CoreRun.Mod
+{-# LINE 385 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+astHandler'_CoreRun :: ASTHandler' AST_CoreRun
 astHandler'_CoreRun = mk emptyASTHandler'
   where mk (hdlr@(ASTHandler' {..})) =
           emptyASTHandler' -- ASTHandler'
             { _asthdlrName              = "CoreRun"
+            , _asthdlrASTLens           = Just ecuMbCoreRun
             , _asthdlrSuffixRel			= mkASTSuffixRel
             								[ ( (ASTFileContent_Binary	, ASTFileUse_Target)	, (Cfg.suffixDotlessBinaryCoreRun, ecuMbCoreRun, Nothing) )
-            								, ( (ASTFileContent_Text	, ASTFileUse_Src)		, ("", ecuMbCoreRun, Nothing) )
+            								, ( (ASTFileContent_Text	, ASTFileUse_Src)		, (Cfg.suffixDotlessOutputTextualCoreRun, ecuMbCoreRun, Nothing) )
             								, ( (ASTFileContent_Text	, ASTFileUse_Dump)		, (Cfg.suffixDotlessOutputTextualCoreRun, ecuMbCoreRun, Nothing) )
-            								, ( (ASTFileContent_Binary	, ASTFileUse_Src)		, ("", ecuMbCoreRun, Nothing) )
+            								, ( (ASTFileContent_Binary	, ASTFileUse_Src)		, (Cfg.suffixDotlessInputOutputBinaryCoreRun, ecuMbCoreRun, Nothing) )
             								, ( (ASTFileContent_Binary	, ASTFileUse_Dump)		, (Cfg.suffixDotlessInputOutputBinaryCoreRun, ecuMbCoreRun, Nothing) )
             								]
             							  `Rel.union`
@@ -233,11 +266,12 @@
             								      ]
             								    , [ (ASTFileTiming_Prev, ecuMbCoreRunTime)
             								      ]
+            								    , id
             								  ) )
             								]
             , _asthdlrEcuStore          = ecuStoreCoreRun
             , _asthdlrParseScanOpts     = \opts _ -> corerunScanOpts
-            , _asthdlrParser            = \opts _ -> Just $ ASTParser (CoreRunPrs.pMod opts :: EHPrsAna CoreRun.Mod)
+            , _asthdlrParser            = \opts _ -> Just $ ASTParser (CoreRunPrs.pMod opts :: EHPrsAna AST_CoreRun)
             , _asthdlrPretty			= \opts _ ast -> Just $ ppMod' opts ast
 			, _asthdlrPutSerializeFileIO= default_asthdlrPutSerializeFileIO
 			, _asthdlrGetSerializeFileIO= default_asthdlrGetSerializeFileIO
@@ -253,7 +287,7 @@
 -}
             }
 
-{-# LINE 474 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+{-# LINE 525 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
 -- | Global mapping from ASTType to ast handler
 allASThandlerMp :: ASTHandlerMp
 allASThandlerMp = Map.fromList
@@ -264,21 +298,28 @@
   , ( ASTType_CoreRun		, ASTHandler astHandler'_CoreRun	)
   ]
 
-{-# LINE 501 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+{-# LINE 552 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
 -- | Lookup ast handler, forcing a particular ast type
 asthandlerLookup :: Typeable ast => ASTType -> Maybe (ASTHandler' ast)
 asthandlerLookup t = case Map.lookup t allASThandlerMp of
     Just (ASTHandler h) -> cast h
     _                   -> Nothing
 
-{-# LINE 509 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+{-# LINE 560 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
 -- | Lookup ast handler, allowing arbitrary type by hiding the type
-asthandlerLookup' :: ASTType -> (forall ast . ASTHandler' ast -> Maybe x) -> Maybe x
+asthandlerLookup' :: ASTType -> (forall ast . Typeable ast => ASTHandler' ast -> Maybe x) -> Maybe x
 asthandlerLookup' t f = case Map.lookup t allASThandlerMp of
     Just (ASTHandler h) -> f h
     _                   -> Nothing
 
-{-# LINE 521 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+{-# LINE 568 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
+-- | Lookup ast handler, allowing arbitrary type by hiding the type, monadically
+asthandlerLookupM' :: Monad m => ASTType -> (forall ast . Typeable ast => ASTHandler' ast -> m (Maybe x)) -> m (Maybe x)
+asthandlerLookupM' t f = case Map.lookup t allASThandlerMp of
+    Just (ASTHandler h) -> f h
+    _                   -> return Nothing
+
+{-# LINE 580 "src/ehc/EHC/ASTHandler/Instances.chs" #-}
 default_asthdlrGetSerializeFileIO :: Serialize ast => EHCOpts -> FPath -> IO (Maybe ast)
 default_asthdlrGetSerializeFileIO _ fp = fmap Just $ getSerializeFile (fpathToStr fp)
 
diff --git a/src/UHC/Light/Compiler/EHC/ASTPipeline.hs b/src/UHC/Light/Compiler/EHC/ASTPipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/EHC/ASTPipeline.hs
@@ -0,0 +1,561 @@
+{-# LANGUAGE GADTs, TemplateHaskell, KindSignatures #-}
+
+module UHC.Light.Compiler.EHC.ASTPipeline
+( module UHC.Light.Compiler.EHC.ASTTypes
+, ASTType (..)
+, ASTScope (..)
+, ASTFileContent (..)
+, ASTHandlerKey
+, ASTFileUse (..)
+, ASTSuffixKey
+, ASTFileTiming (..)
+, ASTAvailableFile (..)
+, astfileuseReadTiming
+, ASTSemFlowStage (..)
+, ASTAlreadyFlowIntoCRSIFromToInfo, ASTAlreadyFlowIntoCRSIInfo
+, ASTTrf (..)
+, ASTPipe (..), emptyASTPipe
+, TmChoice (..)
+, ASTBuildPlan (..)
+, mkBuildPlan
+, astplMbSubPlan
+, astplFind
+, mkASTPipeForASTTypes
+, astpTypes
+, astpFind
+, ASTPipeBldCfg (..), emptyASTPipeBldCfg
+, astpipe_EH_from_HS
+, astpipeForCfg
+, astpipeForEHCOpts
+, ASTPipeHowChoice (..) )
+where
+import UHC.Light.Compiler.Base.Common
+import UHC.Light.Compiler.Base.Optimize
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Opts.Base
+import qualified Data.Set as Set
+import Data.Monoid
+import GHC.Generics
+import UHC.Util.Pretty
+import UHC.Util.FPath
+import UHC.Util.Utils
+import UHC.Light.Compiler.EHC.ASTTypes
+
+{-# LINE 37 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | An 'Enum' of all types of ast we can deal with.
+-- Order matters, ordering corresponds to 'can be generated from'.
+-- 20150804: made more explicit via `ASTPipe`.
+data ASTType
+  = ASTType_HS
+  | ASTType_EH
+  | ASTType_Core
+  | ASTType_CoreRun
+  | ASTType_ExecCoreRun
+  | ASTType_C
+  | ASTType_O
+  | ASTType_LibO
+  | ASTType_ExecO
+  | ASTType_HI
+  | ASTType_Unknown
+  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded)
+
+instance Hashable ASTType
+instance DataAndConName ASTType
+
+instance Show ASTType where
+  show = showUnprefixed 1
+
+instance PP ASTType where
+  pp = pp . show
+
+{-# LINE 85 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | How much AST
+data ASTScope
+  = ASTScope_Single			-- ^ single module
+  | ASTScope_Whole			-- ^ whole program
+  --- | ASTScope_Any			-- ^ any/arbitrary of above
+  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded)
+
+instance Hashable ASTScope
+instance DataAndConName ASTScope
+
+instance Show ASTScope where
+  show = showUnprefixed 1
+
+instance PP ASTScope where
+  pp = pp . show
+
+{-# LINE 103 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | File content variations of ast we can deal with (in principle)
+data ASTFileContent
+  = ASTFileContent_Text
+  | ASTFileContent_LitText
+  | ASTFileContent_Binary
+  | ASTFileContent_Unknown
+  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded)
+
+instance Hashable ASTFileContent
+instance DataAndConName ASTFileContent
+
+instance Show ASTFileContent where
+  show = showUnprefixed 1
+
+instance PP ASTFileContent where
+  pp = pp . show
+
+{-# LINE 122 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Combination of 'ASTType' and 'ASTFileContent' as key into map of handlers
+type ASTHandlerKey = (ASTType, ASTFileContent)
+
+{-# LINE 127 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | File usage variations of ast
+data ASTFileUse
+  = ASTFileUse_Cache		-- ^ internal use cache on file
+  | ASTFileUse_Dump			-- ^ output: dumped, possibly usable as src later on
+  | ASTFileUse_Target		-- ^ output: as target of compilation
+  | ASTFileUse_Src			-- ^ input: src file
+  | ASTFileUse_SrcImport	-- ^ input: import stuff only from src file
+  | ASTFileUse_Unknown		-- ^ unknown
+  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded)
+
+instance Hashable ASTFileUse
+instance DataAndConName ASTFileUse
+
+instance Show ASTFileUse where
+  show = showUnprefixed 1
+
+instance PP ASTFileUse where
+  pp = pp . show
+
+{-# LINE 148 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Key for allowed suffixes, multiples allowed to cater for different suffixes
+type ASTSuffixKey = (ASTFileContent, ASTFileUse)
+
+{-# LINE 153 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | File timing variations of ast
+data ASTFileTiming
+  = ASTFileTiming_Prev		-- ^ previously generated
+  | ASTFileTiming_Current	-- ^ current one
+  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded)
+
+instance Hashable ASTFileTiming
+instance DataAndConName ASTFileTiming
+
+instance Show ASTFileTiming where
+  show = showUnprefixed 1
+
+instance PP ASTFileTiming where
+  pp = pp . show
+
+{-# LINE 170 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Available File for AST (as checked when first searching for a file)
+data ASTAvailableFile =
+  ASTAvailableFile
+    { _astavailfFPath	:: FPath
+    , _astavailfType	:: ASTType
+    , _astavailfContent	:: ASTFileContent
+    , _astavailfUse		:: ASTFileUse
+    -- , _astavailfTiming	:: ASTFileTiming
+    }
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable ASTAvailableFile
+
+instance Show ASTAvailableFile where
+  show (ASTAvailableFile f t c u {- tm -}) = "(" ++ [head (show t), head (show c), head (show u)] ++ ")"
+
+instance PP ASTAvailableFile where
+  pp (ASTAvailableFile f t c u {- tm -}) = f >#< ppParensCommas [pp t, pp c, pp u]
+
+
+{-# LINE 196 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | The timing when read
+astfileuseReadTiming :: ASTFileUse -> ASTFileTiming
+astfileuseReadTiming ASTFileUse_Cache = ASTFileTiming_Prev
+astfileuseReadTiming _                = ASTFileTiming_Current
+
+{-# LINE 207 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | An 'Enum' of the stage semantic results are flown into global state
+data ASTSemFlowStage
+  = --- | per module
+    ASTSemFlowStage_PerModule
+  | --- | between subsequent module compilations
+    ASTSemFlowStage_BetweenModule
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable ASTSemFlowStage
+instance DataAndConName ASTSemFlowStage
+
+instance Show ASTSemFlowStage where
+  show = showUnprefixed 1
+
+instance PP ASTSemFlowStage where
+  pp = pp . show
+
+{-# LINE 232 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Key for remembering what already has flown into global state
+type ASTAlreadyFlowIntoCRSIFromToInfo =
+       ( Maybe ASTType             -- possible 'to ast'
+       , ASTType                   -- 'from ast'
+       )
+
+-- | Key for remembering what already has flown into global state
+type ASTAlreadyFlowIntoCRSIInfo =
+    ( ASTSemFlowStage
+    , Maybe ASTAlreadyFlowIntoCRSIFromToInfo                       -- possible extra context
+    )
+
+{-# LINE 250 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Description of transformation
+data ASTTrf where
+    --- | Optimize, valid for some scopes only
+    ASTTrf_Optim :: [ASTScope] -> ASTTrf
+    --- | Check and adapt (source usually)
+    ASTTrf_Check :: ASTTrf
+
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable ASTTrf
+
+instance Show ASTTrf where
+  show (ASTTrf_Optim scs) = "Optim" ++ show scs
+  show (ASTTrf_Check    ) = "Check"
+
+instance PP ASTTrf where
+  pp (ASTTrf_Optim scs) = "Optim" >#< ppBracketsCommas scs
+  pp trf                = pp (show trf)
+
+{-# LINE 271 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Description of transformation
+data ASTPipeHowChoice
+  = ASTPipeHowChoice_Avail     		-- ^ First available
+  | ASTPipeHowChoice_Overr     		-- ^ First available, but with priority to commandline specified (i.e. overridden)
+  | ASTPipeHowChoice_Newer     		-- ^ First newest available, based on timestamps and imports; this triggers recompilation based on module import dependencies
+  deriving (Eq, Ord, Typeable, Generic, Enum, Bounded)
+
+instance Hashable ASTPipeHowChoice
+instance DataAndConName ASTPipeHowChoice
+
+instance Show ASTPipeHowChoice where
+  show = showUnprefixed 1
+
+instance PP ASTPipeHowChoice where
+  pp = pp . show
+
+{-# LINE 289 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Description of build pipelines
+data ASTPipe where
+    --- | From source file. 20150904: astpTiming is ignored, derived from astpUse
+    ASTPipe_Src :: { astpUse :: ASTFileUse, astpTiming :: ASTFileTiming, astpType :: ASTType } -> ASTPipe
+
+    --- | Derived from (a different ast type)
+    ASTPipe_Derived :: { astpType :: ASTType, astpPipe :: ASTPipe } -> ASTPipe
+
+    --- | Linked/combined as a library
+    ASTPipe_Library :: { astpType :: ASTType, astpPipe :: ASTPipe } -> ASTPipe
+
+    --- | Transformation on same AST
+    ASTPipe_Trf :: { astpType :: ASTType, astpTrf :: ASTTrf, astpPipe :: ASTPipe } -> ASTPipe
+
+    --- | Aggregrate of various different AST
+    ASTPipe_Compound :: { astpType :: ASTType, astpPipes :: [ASTPipe] } -> ASTPipe
+
+    --- | No pipe
+    ASTPipe_Empty :: ASTPipe
+
+    --- | From previously cached on file
+    -- ASTPipe_Cached :: { astpType :: ASTType }  -> ASTPipe
+
+    --- | Side effect inverse of ASTPipe_Cached, i.e. write/cache on file
+    ASTPipe_Cache :: { astpType :: ASTType, astpPipe :: ASTPipe } -> ASTPipe
+
+    --- | Choose between first available, left biased, left one is src/cached, right one may be more complex/derived
+    ASTPipe_Choose :: { astpHow :: ASTPipeHowChoice, astpType :: ASTType, astpPipe1 :: ASTPipe, astpPipe2 :: ASTPipe } -> ASTPipe
+
+    --- | Whole program linked
+    ASTPipe_Whole :: { astpType :: ASTType, astpPipe :: ASTPipe } -> ASTPipe
+  deriving (Eq, Ord, Typeable, Generic)
+
+emptyASTPipe :: ASTPipe
+emptyASTPipe = ASTPipe_Empty
+
+instance Hashable ASTPipe
+
+instance Show ASTPipe where
+  show p = case p of
+    ASTPipe_Src 		u tm t		-> "Sr(" ++ show u ++ "," ++ show tm ++ "," ++ show t ++ ")."
+    ASTPipe_Derived 	t p'	    -> "Dr-" ++ show p'
+    ASTPipe_Library 	t p'	    -> "Lb-"  ++ show p'
+    ASTPipe_Trf 		t tr p'     -> "Tr(" ++ show tr ++ ")-" ++ show p'
+    ASTPipe_Compound 	t ps	    -> "Cm(" ++ show t ++ ")" ++ show ps
+    ASTPipe_Empty 				    -> ""
+    -- ASTPipe_Cached 		t		    -> "Cd(" ++ show t ++ ")."
+    ASTPipe_Cache 		t p'	    -> "Ch-" ++ show p'
+    ASTPipe_Choose		h t p1 p2   -> "{(" ++ show h ++ ")1:" ++ show p1 ++ ",2:" ++ show p2 ++ "}"
+    ASTPipe_Whole 		t p'	    -> "Wh-" ++ show p'
+
+instance PP ASTPipe where
+  pp p = case p of
+    ASTPipe_Src 		u tm t	 	-> "Src" >#< u >#< tm >#< t
+    ASTPipe_Derived 	t p'	    -> "Deriv" >#< t >-< indent 2 p'
+    ASTPipe_Library 	t p'	    -> "Lib" >#< t >-< indent 2 p'
+    ASTPipe_Trf 		t tr p'     -> "Trf" >#< t >#< tr >-< indent 2 p'
+    ASTPipe_Compound 	t ps	    -> "All" >#< t >-< indent 2 (ppCurlysCommasBlock ps)
+    ASTPipe_Empty 				    -> pp "Emp"
+    -- ASTPipe_Cached 		t		    -> "Cached" >#< t
+    ASTPipe_Cache 		t p'	    -> "Cache" >#< t >-< indent 2 p'
+    ASTPipe_Choose		h t p1 p2   -> "Choose" >#< h >#< t >-< indent 2 (p1 >-< p2)
+    ASTPipe_Whole 		t p'	    -> "Whole" >#< t >-< indent 2 p'
+
+{-# LINE 365 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Fix of possible choices in an ASTPipe (based on time info)
+data TmChoice
+  = Choice_End						-- ^ base case
+  | Choice_Src	ASTAvailableFile	-- ^ base case: src file
+  | Choice_No 	TmChoice			-- ^ no choice made
+  | Choices 	[TmChoice]			-- ^ compound
+  | Choice_L 	TmChoice			-- ^ fst (of ASTPipe_Choose)
+  | Choice_R 	TmChoice			-- ^ snd (of ASTPipe_Choose)
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable TmChoice
+
+instance Show TmChoice where
+  show (Choice_End  ) = "."
+  show (Choice_Src s) = "S" ++ show s
+  show (Choice_No  c) = "-" ++ show c
+  show (Choices   cs) = show cs
+  show (Choice_L   c) = "L" ++ show c
+  show (Choice_R   c) = "R" ++ show c
+
+instance PP TmChoice where
+  pp = pp . show
+
+{-# LINE 398 "src/ehc/EHC/ASTPipeline.chs" #-}
+data ASTBuildPlan
+  = ASTBuildPlan
+      { _astbplPipe		:: ASTPipe		-- ^ the pipe and its choices
+      , _astbplChoice	:: TmChoice		-- ^ the choices made based on time info
+      }
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable ASTBuildPlan
+
+instance Show ASTBuildPlan where
+  show (ASTBuildPlan p c) = "Plan [" ++ show c ++ ", " ++ show p ++ "]"
+
+instance PP ASTBuildPlan where
+  pp (ASTBuildPlan p c) = "Plan" >#< (c >-< p)
+
+{-# LINE 415 "src/ehc/EHC/ASTPipeline.chs" #-}
+mkBuildPlan :: ASTPipe -> TmChoice -> ASTBuildPlan
+mkBuildPlan = ASTBuildPlan
+
+{-# LINE 420 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Extract a subplan (i.e. from which is derived), if any
+astplMbSubPlan :: ASTBuildPlan -> Maybe ASTBuildPlan
+astplMbSubPlan pl = case pl of
+    ASTBuildPlan (ASTPipe_Derived {astpPipe =p'}) (Choice_No c') -> Just $ mkBuildPlan p' c'
+    ASTBuildPlan (ASTPipe_Trf     {astpPipe =p'}) (Choice_No c') -> Just $ mkBuildPlan p' c'
+    ASTBuildPlan (ASTPipe_Choose  {astpPipe1=p'}) (Choice_L  c') -> Just $ mkBuildPlan p' c'
+    ASTBuildPlan (ASTPipe_Choose  {astpPipe2=p'}) (Choice_R  c') -> Just $ mkBuildPlan p' c'
+    ASTBuildPlan (ASTPipe_Cache   {astpPipe =p'}) (Choice_No c') -> Just $ mkBuildPlan p' c'
+    ASTBuildPlan (ASTPipe_Whole   {astpPipe =p'}) (Choice_No c') -> Just $ mkBuildPlan p' c'
+    _                                                            -> Nothing
+
+
+
+{-# LINE 437 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Find occurrence of predicate, yielding a new plan corresponding to the predicate, and
+astplFind :: (ASTPipe -> Maybe x) -> ASTBuildPlan -> Maybe (ASTBuildPlan, x)
+astplFind pred = fnd
+  where
+    fnd pl@(ASTBuildPlan p c) = case pred p of
+      Just res -> Just (pl, res)
+      _        -> astplMbSubPlan pl >>= fnd
+
+{-# LINE 451 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Construct a (dummy) pipe for which `astpTypes` will yield the given ASTTypes
+mkASTPipeForASTTypes :: [ASTType] -> ASTPipe
+mkASTPipeForASTTypes ts@(t:_) = ASTPipe_Compound t $ map (flip ASTPipe_Compound []) ts
+
+{-# LINE 457 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Fold over ASTPipe
+astpFold :: (ASTPipe -> x) -> (x -> x -> x) -> x -> ASTPipe -> x
+astpFold getx cmbx dfltx p = extr p
+  where
+    extr ASTPipe_Empty = dfltx
+    extr p             = foldr1 cmbx $ getx p : (map extr $ subs p)
+    subs (ASTPipe_Derived {astpPipe =p }) = [p]
+    subs (ASTPipe_Library {astpPipe =p }) = [p]
+    subs (ASTPipe_Trf     {astpPipe =p }) = [p]
+    subs (ASTPipe_Compound{astpPipes=ps}) = ps
+    subs (ASTPipe_Cache   {astpPipe =p }) = [p]
+    subs (ASTPipe_Whole   {astpPipe =p }) = [p]
+    subs (ASTPipe_Choose  {astpPipe1=p1, astpPipe2=p2})
+                                          = [p1, p2]
+    subs _                                = []
+
+-- | Fold monoidal over ASTPipe
+astpFoldMonoid :: Monoid x => (ASTPipe -> x) -> ASTPipe -> x
+astpFoldMonoid getx p = astpFold getx mappend mempty p
+
+{-# LINE 481 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Extract all ASTTypes.
+astpTypes :: ASTPipe -> Set.Set ASTType
+astpTypes = astpFoldMonoid (Set.singleton . astpType)
+
+{-# LINE 487 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Find occurrence of predicate
+astpFind :: (ASTPipe -> Maybe ASTPipe) -> ASTPipe -> Maybe ASTPipe
+astpFind pred = astpFold pred (>>) Nothing
+
+{-# LINE 497 "src/ehc/EHC/ASTPipeline.chs" #-}
+data ASTPipeBldCfg =
+  ASTPipeBldCfg
+    { apbcfgTarget			:: Target
+    , apbcfgOptimScope 		:: OptimizationScope
+    , apbcfgLinkingStyle	:: LinkingStyle
+    , apbcfgRunOnly			:: Bool
+    , apbcfgLoadOnly		:: Bool
+    }
+
+emptyASTPipeBldCfg =
+  ASTPipeBldCfg
+    defaultTarget OptimizationScope_PerModule LinkingStyle_Exec
+    False
+    False
+
+{-# LINE 522 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_HS_src = ASTPipe_Src ASTFileUse_Src ASTFileTiming_Current ASTType_HS
+astpipe_EH_from_HS = ASTPipe_Derived ASTType_EH astpipe_HS_src
+
+astpipe_EH =
+  astpipe_EH_from_HS
+
+{-# LINE 530 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_Core_from_EH :: ASTPipeBldCfg -> ASTPipe
+astpipe_Core_from_EH apbcfg =
+    ASTPipe_Cache ASTType_Core $
+    optim $
+    ASTPipe_Derived ASTType_Core astpipe_EH
+  where
+    optim
+      --- | apbcfgOptimScope apbcfg == OptimizationScope_WholeCore = id
+      | otherwise                                              = ASTPipe_Trf ASTType_Core $ ASTTrf_Optim [ASTScope_Single]
+
+{-# LINE 546 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_Core_src :: ASTPipe
+astpipe_Core_src = ASTPipe_Src ASTFileUse_Src ASTFileTiming_Current ASTType_Core
+
+{-# LINE 551 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_Core_cached :: ASTPipe
+astpipe_Core_cached = ASTPipe_Src ASTFileUse_Cache ASTFileTiming_Prev ASTType_Core
+
+{-# LINE 556 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_Core :: ASTPipeBldCfg -> ASTPipe
+astpipe_Core apbcfg =
+  apbcfgLoadChoice apbcfg ASTType_Core
+    astpipe_Core_src $
+      (
+       if apbcfgLoadOnly apbcfg
+       then
+         astpipe_Core_cached
+       else
+         whole $
+         ASTPipe_Choose ASTPipeHowChoice_Newer ASTType_Core (ASTPipe_Compound ASTType_Core [astpipe_HI_cached, astpipe_Core_cached]) $
+             astpipe_Core_from_EH apbcfg
+      )
+  where
+    whole
+      | apbcfgOptimScope apbcfg == OptimizationScope_WholeCore
+        && not (apbcfgLoadOnly apbcfg)
+                                                               = (ASTPipe_Trf ASTType_Core $ ASTTrf_Optim [ASTScope_Whole]) . ASTPipe_Whole ASTType_Core
+      | otherwise                                              = id
+    cached
+      | apbcfgLoadOnly apbcfg                                  = ASTPipe_Choose ASTPipeHowChoice_Newer ASTType_Core astpipe_Core_cached
+      | otherwise                                              = ASTPipe_Choose ASTPipeHowChoice_Newer ASTType_Core (ASTPipe_Compound ASTType_Core [astpipe_HI_cached, astpipe_Core_cached])
+
+{-# LINE 597 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_CoreRun_src :: ASTPipe
+astpipe_CoreRun_src =
+  ASTPipe_Trf ASTType_CoreRun ASTTrf_Check $
+    ASTPipe_Src ASTFileUse_Src ASTFileTiming_Current ASTType_CoreRun
+
+{-# LINE 606 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_CoreRun_cached :: ASTPipe
+astpipe_CoreRun_cached =
+  ASTPipe_Trf ASTType_CoreRun ASTTrf_Check $
+    ASTPipe_Src ASTFileUse_Cache ASTFileTiming_Prev ASTType_CoreRun
+
+{-# LINE 615 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_CoreRun_from_Core :: ASTPipeBldCfg -> ASTPipe
+astpipe_CoreRun_from_Core apbcfg =
+  ASTPipe_Derived ASTType_CoreRun $ astpipe_Core apbcfg
+
+{-# LINE 621 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_CoreRun :: ASTPipeBldCfg -> ASTPipe
+astpipe_CoreRun apbcfg =
+  apbcfgLoadChoice apbcfg ASTType_CoreRun
+    astpipe_CoreRun_src $
+      apbcfgLoadChoice apbcfg ASTType_CoreRun
+        astpipe_CoreRun_cached $
+          astpipe_CoreRun_from_Core apbcfg
+
+{-# LINE 646 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_HI_cached :: ASTPipe
+astpipe_HI_cached = ASTPipe_Src ASTFileUse_Cache ASTFileTiming_Prev ASTType_HI
+
+astpipe_HI :: ASTPipeBldCfg -> ASTPipe
+astpipe_HI apbcfg =
+  ASTPipe_Choose ASTPipeHowChoice_Newer ASTType_HI
+    astpipe_HI_cached $
+      ASTPipe_Cache ASTType_HI $
+      ASTPipe_Derived ASTType_HI $
+      ASTPipe_Compound ASTType_HI $
+        [astpipe_HS_src, astpipe_EH]
+        ++ [astpipe_Core_from_EH apbcfg]
+
+{-# LINE 688 "src/ehc/EHC/ASTPipeline.chs" #-}
+astpipe_C_src :: ASTPipe
+astpipe_C_src = ASTPipe_Src ASTFileUse_Src ASTFileTiming_Current ASTType_C
+
+{-# LINE 731 "src/ehc/EHC/ASTPipeline.chs" #-}
+apbcfgLoadChoice :: ASTPipeBldCfg -> ASTType -> ASTPipe -> ASTPipe -> ASTPipe
+apbcfgLoadChoice apbcfg -- t p1 p2
+    | apbcfgLoadOnly apbcfg = ASTPipe_Choose ASTPipeHowChoice_Overr
+    | otherwise             = ASTPipe_Choose ASTPipeHowChoice_Newer
+
+{-# LINE 744 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Construct a ASTPipe from build config
+astpipeForCfg :: ASTPipeBldCfg -> ASTPipe
+astpipeForCfg apbcfg =
+    if onlyrun
+    then cmb base
+    else cmb $  base
+             ++ [astpipe_HI $ apbcfg {apbcfgOptimScope = OptimizationScope_PerModule}]
+  where (base, topty) = case apbcfgTarget apbcfg of
+          Target_None_Core_AsIs
+            --- | onlyrun 										 -> ([astpipe_Core_src], ASTType_Core)
+            | onlyrun 										 -> ([astpipe_CoreRun apbcfg], ASTType_CoreRun)
+            | otherwise                                      -> ([astpipe_Core apbcfg], ASTType_Core)
+          Target_None_Core_CoreRun
+                                                             -> ([astpipe_CoreRun apbcfg], ASTType_CoreRun)
+
+        cmb [p] = p
+        cmb ps  = ASTPipe_Compound topty ps
+
+        -- 20150806: hackish solution for running core, done to be able to try out new build framework
+        onlyrun = apbcfgRunOnly apbcfg
+
+{-# LINE 793 "src/ehc/EHC/ASTPipeline.chs" #-}
+-- | Construct a ASTPipe from compilers options, see `astpipeForCfg`
+astpipeForEHCOpts :: EHCOpts -> ASTPipe
+astpipeForEHCOpts opts = astpipeForCfg $ emptyASTPipeBldCfg
+  { apbcfgTarget		= ehcOptTarget opts
+  , apbcfgOptimScope	= ehcOptOptimizationScope opts
+  , apbcfgLinkingStyle	= ehcOptLinkingStyle opts
+  , apbcfgRunOnly		= CoreOpt_Run `elem` ehcOptCoreOpts opts
+  , apbcfgLoadOnly		= CoreOpt_LoadOnly `elem` ehcOptCoreOpts opts
+  }
+
diff --git a/src/UHC/Light/Compiler/EHC/ASTTypes.hs b/src/UHC/Light/Compiler/EHC/ASTTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/EHC/ASTTypes.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE GADTs #-}
+
+module UHC.Light.Compiler.EHC.ASTTypes
+( AST_HS, AST_EH, AST_HS_Sem_Check, AST_EH_Sem_Check, AST_HS_Inh_Check, AST_EH_Inh_Check
+, AST_Core
+, AST_Core_Sem_ToCoreRun
+, AST_Core_Sem_Check
+, AST_CoreRun
+, AST_CoreRun_Sem_Check
+, AST_CoreRun_Sem_Mod
+, AST_HS_Sem_Mod
+, AST_HI )
+where
+import UHC.Light.Compiler.Base.Common
+import Data.Typeable
+import GHC.Generics
+import qualified UHC.Light.Compiler.EH as EH
+import qualified UHC.Light.Compiler.HS as HS
+import qualified UHC.Light.Compiler.Core as Core
+import qualified UHC.Light.Compiler.CoreRun as CoreRun
+import qualified UHC.Light.Compiler.EH.Main as EHSem
+import qualified UHC.Light.Compiler.HS.MainAG as HSSem
+import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
+import qualified UHC.Light.Compiler.Core.ToCoreRun as Core2CoreRunSem
+import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
+import qualified UHC.Light.Compiler.CoreRun.Check as CoreRun2ChkSem
+import qualified UHC.Light.Compiler.CoreRun.ModImpExp as CoreRunSemMod
+import qualified UHC.Light.Compiler.HI as HI
+import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 72 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_HS					= HS.AGItf
+type AST_EH					= EH.AGItf
+
+type AST_HS_Sem_Check		= HSSem.Syn_AGItf
+type AST_EH_Sem_Check		= EHSem.Syn_AGItf
+
+type AST_HS_Inh_Check		= HSSem.Inh_AGItf
+type AST_EH_Inh_Check		= EHSem.Inh_AGItf
+
+{-# LINE 83 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_HS_Sem_Mod			= HSSemMod.Syn_AGItf
+
+{-# LINE 87 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_HI					= HI.HIInfo
+
+{-# LINE 91 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_Core				= Core.CModule
+
+{-# LINE 101 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_Core_Sem_ToCoreRun	= Core2CoreRunSem.Syn_CodeAGItf
+
+{-# LINE 105 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_Core_Sem_Check		= Core2ChkSem.Syn_CodeAGItf
+
+{-# LINE 109 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_CoreRun			= CoreRun.Mod
+
+{-# LINE 113 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_CoreRun_Sem_Check	= CoreRun2ChkSem.Syn_AGItf
+
+{-# LINE 117 "src/ehc/EHC/ASTTypes.chs" #-}
+type AST_CoreRun_Sem_Mod	= CoreRunSemMod.Syn_AGItf
+
diff --git a/src/UHC/Light/Compiler/EHC/BuildFunction.hs b/src/UHC/Light/Compiler/EHC/BuildFunction.hs
--- a/src/UHC/Light/Compiler/EHC/BuildFunction.hs
+++ b/src/UHC/Light/Compiler/EHC/BuildFunction.hs
@@ -2,163 +2,38 @@
 
 module UHC.Light.Compiler.EHC.BuildFunction
 ( module Data.Functor.Identity
-, BFun' (..)
-, BFun (..)
-, BFunCacheEntry (..)
-, BCache, emptyBCache, bcacheCache, bcacheDpdRel
-, bcacheLookup, bcacheInsert, bcacheInsertDpd
-, BRef (..)
-, BState, emptyBState, bstateCache, bstateCallStack )
+, bcacheLookup, bcacheInsert, bcacheInsertDpd )
 where
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
 import Control.Applicative
 import Data.Functor.Identity
 import qualified Data.Map as Map
+import qualified Data.Set as Set
 import qualified Data.IntMap as IMap
 import Data.Maybe
 import UHC.Util.Hashable
 import UHC.Util.Lens
 import qualified UHC.Util.RelMap as Rel
 import Data.Typeable
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import UHC.Util.Time
+import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
+import UHC.Light.Compiler.Base.PackageDatabase
+import qualified UHC.Light.Compiler.Base.Pragma as Pragma
 
 
-{-# LINE 50 "src/ehc/EHC/BuildFunction.chs" #-}
-deriving instance Typeable Identity
 
-{-# LINE 58 "src/ehc/EHC/BuildFunction.chs" #-}
--- | Representation of build functions (embedded comment screws up haddock, hence see source code directly).
--- Regretfully deriving Generic (and thus Hashable) does not work for GADTs, so must be done manually, below.
--- Ord cannot be derived either.
--- First order type, no fields with recursive type are allowed to allow for more easily implementable comparison etc.
-data BFun' res where
-  --- | Obtain FPath and module name of a file name
-  FPathSearchForFile
-    :: !String				--- ^ suffix, if absent in name
-    -> !FilePath			--- ^ file name
-    -> BFun' (HsName, FPath)
 
-  --- | Obtain FPath of an (imported module)
-  FPathOfImported
-    :: !HsName				--- ^ module name
-    -> BFun' FPath
 
-  --- | Extract imported modules from a module
-  ImportsOf
-    :: !HsName				--- ^ module name
-    -> BFun' [HsName]
 
-  --- | Extract compileunit from a module
-  EcuOfName
-    :: !HsName				--- ^ module name
-    -> BFun' EHCompileUnit
 
-  EcuOfNameAndPath
-    :: !(Maybe PrevSearchInfo)		--- ^ possibly previous search info
-    -> !(HsName,Maybe FPath)		--- ^ module name and possibly known path
-    -> BFun' EHCompileUnit
-
-  --- | Extract global options, possibly overridden for a module
-  EHCOptsOf
-    :: !HsName				--- ^ module name
-    -> BFun' EHCOpts
-
-  --- | Get a particular AST from file for a module
-  ASTFromFile
-    :: !(HsName,Maybe FPath)			--- ^ module name and possibly known path
-    -> !ASTType							--- ^ content type
-    -> !ASTSuffixKey					--- ^ suffix and content variation
-    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
-    -> BFun' res
-
-  --- | Get the modification ClockTime of a file for a module
-  ModfTimeOfFile
-    :: !HsName							--- ^ module name and possibly known path
-    -> !ASTType							--- ^ content type
-    -> !ASTSuffixKey					--- ^ suffix and content variation
-    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
-    -> BFun' (Maybe ClockTime)
-
--- | Comparison which ignores GADT type info
-bfunCompare :: BFun' res1 -> BFun' res2 -> Ordering
-bfunCompare f1 f2 = case (f1,f2) of
-    (FPathSearchForFile 	a1 b1		, FPathSearchForFile 	a2 b2		) -> lexico [a1 `compare` a2, b1 `compare` b2]
-    (FPathOfImported    	a1   		, FPathOfImported    	a2   		) ->         a1 `compare` a2
-    (ImportsOf          	a1   		, ImportsOf          	a2   		) ->         a1 `compare` a2
-    (EcuOfName              a1   		, EcuOfName    			a2   		) ->         a1 `compare` a2
-    (EcuOfNameAndPath		a1 b1		, EcuOfNameAndPath		a2 b2		) -> lexico [a1 `compare` a2, b1 `compare` b2]
-    (EHCOptsOf             	a1   		, EHCOptsOf				a2   		) ->         a1 `compare` a2
-    (ASTFromFile            a1 b1 c1 d1	, ASTFromFile			a2 b2 c2 d2	) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
-    (ModfTimeOfFile         a1 b1 c1 d1	, ModfTimeOfFile		a2 b2 c2 d2	) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
-  where lexico (x:xs)
-          | x == EQ   = lexico xs
-          | otherwise = x
-        lexico []     = EQ
-
-instance Ord (BFun' res) where
-  compare = bfunCompare
-
-deriving instance Eq (BFun' res)
-deriving instance Show (BFun' res)
-deriving instance Typeable BFun'
-
-instance Hashable (BFun' res) where
-  hashWithSalt salt x = case x of
-	FPathSearchForFile 	a b		-> salt `hashWithSalt` (0::Int) `hashWithSalt` a `hashWithSalt` b
-	FPathOfImported	   	a		-> salt `hashWithSalt` (1::Int) `hashWithSalt` a
-	ImportsOf		   	a		-> salt `hashWithSalt` (2::Int) `hashWithSalt` a
-	EcuOfName		   	a		-> salt `hashWithSalt` (3::Int) `hashWithSalt` a
-	EHCOptsOf		   	a		-> salt `hashWithSalt` (4::Int) `hashWithSalt` a
-	EcuOfNameAndPath	a b		-> salt `hashWithSalt` (5::Int) `hashWithSalt` a `hashWithSalt` b
-	ASTFromFile			a b	c d	-> salt `hashWithSalt` (6::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
-	ModfTimeOfFile		a b	c d	-> salt `hashWithSalt` (7::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
-
-
-{-# LINE 167 "src/ehc/EHC/BuildFunction.chs" #-}
--- | BFun' used as a dependency of another BFun', for now same as a Dynamic
-data BFun
-  = forall res
-    . ({- Typeable (BFun' res), -} Typeable res)
-      => BFun
-           { bfcdFun 		:: !(BFun' res)
-           }
-
-instance Eq BFun where
-  (BFun {bfcdFun=f1}) == (BFun {bfcdFun=f2}) = bfunCompare f1 f2 == EQ
-
-instance Ord BFun where
-  (BFun {bfcdFun=f1}) `compare` (BFun {bfcdFun=f2}) = bfunCompare f1 f2
-
-instance Hashable BFun where
-  hashWithSalt salt (BFun {bfcdFun=x}) = hashWithSalt salt x
-
-{-# LINE 186 "src/ehc/EHC/BuildFunction.chs" #-}
--- | BFun' + BCachedVal' packaged with required class instances, similar to a Dynamic
-data BFunCacheEntry
-  = forall f res
-    . (Typeable f, Typeable res)
-      => BFunCacheEntry
-           { bfceFun 		:: !(BFun' res)
-           , bfceVal		:: !(f res)
-           }
-
-{-# LINE 201 "src/ehc/EHC/BuildFunction.chs" #-}
--- | Cache for function calls, first indexed on hash
-data BCache
-  = BCache
-      { _bcacheCache	:: IMap.IntMap [BFunCacheEntry]
-      , _bcacheDpdRel	:: Rel.Rel BFun BFun
-      }
-
-mkLabel ''BCache
-
-emptyBCache :: BCache
-emptyBCache = BCache IMap.empty Rel.empty
+{-# LINE 63 "src/ehc/EHC/BuildFunction.chs" #-}
+deriving instance Typeable Identity
 
-{-# LINE 215 "src/ehc/EHC/BuildFunction.chs" #-}
+{-# LINE 71 "src/ehc/EHC/BuildFunction.chs" #-}
 -- | Lookup BCachedVal in 'BCache', preserving type info
-bcacheLookup :: (Typeable res, Typeable f) => BFun' res -> BCache -> Maybe (f res)
+bcacheLookup :: (Typeable res, Typeable f, Typeable m) => BFun' m res -> BCache m -> Maybe (f res)
 bcacheLookup key (BCache {_bcacheCache=cache}) = do
     vals <- IMap.lookup (hash key) cache
     lookup key $ catMaybes $ map cvt vals
@@ -168,51 +43,15 @@
       _                  -> Nothing
 
 -- | Add to 'BCache'
-bcacheInsert :: (Typeable res, Typeable f) => BFun' res -> f res -> BCache -> BCache
+bcacheInsert :: (Typeable res, Typeable f) => BFun' m res -> f res -> BCache m -> BCache m
 bcacheInsert k v bc@(BCache {_bcacheCache=c}) = bc { _bcacheCache = IMap.insertWith (++) (hash k) [BFunCacheEntry k v] c }
 
 -- | Add dependency to 'BCache'
 bcacheInsertDpd
   :: (Typeable res1, Typeable res2)
      =>
-        BFun' res1			-- ^ dependee
-     -> BFun' res2			-- ^ depends on
-     -> BCache -> BCache
+        BFun' m res1			-- ^ dependee
+     -> BFun' m res2			-- ^ depends on
+     -> BCache m -> BCache m
 bcacheInsertDpd f1 f2 bc@(BCache {_bcacheDpdRel=dpd}) = bc { _bcacheDpdRel = Rel.insert (BFun f1) (BFun f2) dpd }
-
-{-# LINE 244 "src/ehc/EHC/BuildFunction.chs" #-}
--- | GADT for references to global state, interpreted inside the compiler driver monad, the type of the GADT telling what the type of the value should be.
-data BRef val where
-  --- | Compile unit
-  BRef_ECU
-    :: !HsName					--- ^ module name
-    -> BRef EHCompileUnit
-
-  --- | An AST embedded in a compile unit
-  BRef_AST
-    :: !HsName					--- ^ module name
-    -> ASTType							--- ^ content type
-    -> ASTSuffixKey						--- ^ suffix and content variation
-    -> ASTFileTiming			--- ^ timing (i.e. previous or current)
-    -> BRef val
-
-  --- | Global options
-  BRef_EHCOpts
-    :: !HsName					--- ^ module name
-    -> BRef EHCOpts
-
-deriving instance Typeable BRef
-
-{-# LINE 272 "src/ehc/EHC/BuildFunction.chs" #-}
--- | Cache for function calls, first indexed on hash
-data BState
-  = BState
-      { _bstateCache		:: !BCache
-      , _bstateCallStack	:: ![BFun]
-      }
-
-mkLabel ''BState
-
-emptyBState :: BState
-emptyBState = BState emptyBCache []
 
diff --git a/src/UHC/Light/Compiler/EHC/BuildFunction/Run.hs b/src/UHC/Light/Compiler/EHC/BuildFunction/Run.hs
--- a/src/UHC/Light/Compiler/EHC/BuildFunction/Run.hs
+++ b/src/UHC/Light/Compiler/EHC/BuildFunction/Run.hs
@@ -1,187 +1,1590 @@
-{-# LANGUAGE GADTs #-}
-
-module UHC.Light.Compiler.EHC.BuildFunction.Run
-( module UHC.Light.Compiler.EHC.BuildFunction
-, bcall
-, bderef )
-where
-import UHC.Light.Compiler.EHC.BuildFunction
-import UHC.Light.Compiler.EHC.Common
-import UHC.Light.Compiler.EHC.CompileRun
-import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.FileSuffMp
-import UHC.Light.Compiler.EHC.ASTHandler
-import UHC.Light.Compiler.EHC.ASTHandler.Instances
-import UHC.Util.Lens
-import Data.Typeable
-import qualified Data.Map as Map
-import Control.Monad.State
-import Control.Monad.Error
-import System.Directory
-import UHC.Light.Compiler.Base.PackageDatabase
-
-
-
-
-{-# LINE 53 "src/ehc/EHC/BuildFunction/Run.chs" #-}
--- | Execute a build function, possibly caching/memoizing a result
-bcall :: forall res m . (Typeable res) => EHCCompileRunner m => BFun' res -> EHCompilePhaseT m res
-bcall bfun = do
-    bcache <- getl $ st ^* bstateCache
-
-    mbCachedRes <- lkup bfun bcache
-    case mbCachedRes of
-      Just res -> return res
-      _ -> do
-        -- prepare
-        start
-        -- actual execution
-        res <- case bfun of
-          EcuOfName modNm -> do
-               bcall $ EcuOfNameAndPath Nothing (modNm, Nothing)
-
-          EHCOptsOf modNm -> do
-               fmap (panicJust "EHCOptsOf") $ bderef (BRef_EHCOpts modNm)
-
-          EcuOfNameAndPath mbPrev (modNm,mbFp) -> do
-               opts <- bcall $ EHCOptsOf modNm
-               let isTopModule = isJust mbFp
-                   searchPath = ehcOptImportFileLocPath opts
-                   adaptFileSuffMp = if isTopModule then (fileSuffMpHsNoSuff ++) else id
-               fileSuffMpHs <- fmap (map tup123to12 . adaptFileSuffMp) $ getl $ crStateInfo ^* crsiFileSuffMp
-               let searchPath' = prevSearchInfoAdaptedSearchPath mbPrev searchPath
-               fpsFound <- cpFindFilesForFPathInLocations (fileLocSearch opts) tup123to1 False fileSuffMpHs searchPath' (Just modNm) mbFp
-               when (ehcOptVerbosity opts >= VerboseDebug) $ liftIO $ do
-                    putStrLn $ show modNm ++ ": " ++ show (fmap fpathToStr mbFp) ++ ": " ++ show (map fpathToStr fpsFound)
-                    putStrLn $ "searchPath: " ++ show searchPath'
-               when isTopModule
-                    (cpUpdCU modNm (ecuSetIsTopMod True))
-               bmemo $ BRef_ECU modNm
-               fmap (panicJust "EcuOfNameAndPath") $ cpMbCU modNm
-
-          FPathSearchForFile suff fn -> do
-               let fp    = mkTopLevelFPath suff fn
-                   modNm = mkHNm $ fpathBase fp
-               breturn (modNm, fp)
-
-          ASTFromFile mf asttype skey@(astfcont,_) tkey -> do
-               ecu <- bcall $ EcuOfNameAndPath Nothing mf
-               let modNm = ecuModNm ecu
-                   fp    = ecuFilePath ecu
-                   ref   = BRef_AST modNm asttype skey tkey
-               opts <- bcall $ EHCOptsOf modNm
-               mbtm <- bcall $ ModfTimeOfFile modNm asttype skey tkey
-               (_ :: Maybe res, mbset) <- bderef' ref
-               case (mbtm, mbset, asthandlerLookup asttype) of
-                 (Just _, Just set, Just (astHdlr :: ASTHandler' res)) | isJust mbi && isJust mbl -> case astfcont of
-                      ASTFileContent_Binary -> do
-                        cpMsg' modNm VerboseALot "Decoding" Nothing fpC
-                        mbx@(~(Just x)) <- liftIO $ _asthdlrGetSerializeFileIO astHdlr opts fpC
-                        if isJust mbx
-                          then do
-                            let errs = _asthdlrPostInputCheck astHdlr opts ecu modNm fpC x
-                            if null errs
-                              then do
-                                set x
-                                bmemo ref
-                                return x
-                              else do
-                                cpSetLimitErrsWhen 1 ("Decode AST check " ++ _asthdlrName astHdlr) errs
-                                dflt'
-                          else err "decoder"
-                      _ -> err "ast content handler"
-                   where mbi@(~(Just info)) = astsuffixLookup skey $ _asthdlrSuffixRel astHdlr
-                         mbl@(~(Just lens)) = Map.lookup tkey $ _astsuffinfoASTLensMp info
-                         fpC                = asthdlrMkInputFPath astHdlr opts ecu skey modNm fp
-                         err                = err' (_asthdlrName astHdlr)
-                 _ -> err' "" "ast handler/setter"
-            where dflt' = return undefined
-                  err' k m = do
-                    cpSetLimitErrsWhen 1 ("Decode " ++ k) [strMsg $ "No " ++ m ++ " for " ++ k ++ " (" ++ show skey ++ "/" ++ show tkey ++ ")"]
-                    dflt'
-
-          ModfTimeOfFile modNm asttype skey tkey -> case (asthandlerLookup' asttype $ \hdlr -> do
-                                                              suffinfo <- astsuffixLookup skey $ _asthdlrSuffixRel hdlr
-                                                              lens <- Map.lookup tkey $ _astsuffinfoModfTimeMp suffinfo
-                                                              return (_astsuffinfoSuff suffinfo, lens)
-                                                         ) of
-                 Just (suff, lens) -> do
-                        cr <- get
-                        let (ecu,_,opts,fp) = crBaseInfo modNm cr
-                        tm opts ecu ((lens ^=) . Just) (fpathSetSuff suff fp)
-                 _ -> return Nothing
-            where
-              tm opts ecu store fp = do
-                  let n = fpathToStr fp
-                  nExists <- liftIO $ doesFileExist n
-                  when (ehcOptVerbosity opts >= VerboseDebug) $ liftIO $ putStrLn ("meta info of: " ++ show (ecuModNm ecu) ++ ", file: " ++ n ++ ", exists: " ++ show nExists)
-                  if nExists
-                    then do
-                      t <- liftIO $ fpathGetModificationTime fp
-                      when (ehcOptVerbosity opts >= VerboseDebug) $ liftIO $ putStrLn ("time stamp of: " ++ show (ecuModNm ecu) ++ ", time: " ++ show t)
-                      cpUpdCU modNm $ store t
-                      return $ Just t
-                    else return Nothing
-
-          _ -> panic $ "BuildFunction.Run.bcall: not implemented: " ++ show bfun
-
-        -- finalize
-        end
-        return res
-  where
-    -- lens access
-    st    = crStateInfo ^* crsiBState
-    cstk  = st ^* bstateCallStack
-
-    -- call init/finalization
-    start = cstk =$: (BFun bfun :)
-    end   = cstk =$: tail
-
-    -- memoize
-    bmemo :: Typeable f => f res -> EHCompilePhaseT m ()
-    bmemo res = do
-        (BFun bfun : _) <- getl $ st ^* bstateCallStack
-        case cast bfun of
-          Just bfun -> st ^* bstateCache =$: bcacheInsert bfun res
-          _ -> panic $ "BuildFunction.Run.bcall.bmemo: " ++ show bfun
-
-    -- memoize & return
-    breturn :: res -> EHCompilePhaseT m res
-    breturn res = do
-        bmemo (Identity res)
-        return res
-
-    -- lookup in cache
-    lkup :: BFun' res -> BCache -> EHCompilePhaseT m (Maybe res)
-    lkup bfun bcache =
-        case bcacheLookup bfun bcache of
-          Just (res :: Identity res) -> return $ Just $ runIdentity res
-          _ -> case bcacheLookup bfun bcache of
-            Just (ref :: BRef res) -> bderef ref
-            _ -> return Nothing
-
-{-# LINE 215 "src/ehc/EHC/BuildFunction/Run.chs" #-}
--- | Dereference an indirection into compilation state, possibly with a result, and a setter
-bderef' :: forall res m . (Typeable res, EHCCompileRunner m) => BRef res -> EHCompilePhaseT m (Maybe res, Maybe (res -> EHCompilePhaseT m ()))
-bderef' bref = do
-    cr <- get
-    case bref of
-      BRef_ECU modNm -> return (crMbCU modNm cr, Just $ \ecu -> cpUpdCU modNm (const ecu))
-      BRef_EHCOpts modNm -> return (Just choose, Nothing)
-        where opts = cr ^. crStateInfo ^. crsiOpts
-              choose = maybe opts id $ crMbCU modNm cr >>= ecuMbOpts
-      BRef_AST modNm asttype skey tkey -> case asthandlerLookup asttype of
-          Just (hdlr :: ASTHandler' res) -> case astsuffixLookup skey $ _asthdlrSuffixRel hdlr of
-            Just suffinfo -> case Map.lookup tkey $ _astsuffinfoASTLensMp suffinfo of
-              Just l -> do
-                ecu <- bcall $ EcuOfName modNm
-                return (ecu ^. l, Just $ \ast -> cpUpdCU modNm $ l ^= Just ast)
-              _ -> dflt
-            _ -> dflt
-          _ -> dflt
-        where dflt = return (Nothing, Nothing)
-
--- | Dereference an indirection into compilation state
-bderef :: forall res m . (Typeable res, EHCCompileRunner m) => BRef res -> EHCompilePhaseT m (Maybe res)
-bderef bref = fmap fst $ bderef' bref
+{-# LANGUAGE GADTs, TemplateHaskell, KindSignatures, ImpredicativeTypes #-}
+-- {-# LANGUAGE RecursiveDo #-}
+
+module UHC.Light.Compiler.EHC.BuildFunction.Run
+( module UHC.Light.Compiler.EHC.BuildFunction
+, bcall )
+where
+import UHC.Light.Compiler.EHC.BuildFunction
+import UHC.Light.Compiler.EHC.Common
+import UHC.Light.Compiler.EHC.CompileRun.Base
+import UHC.Light.Compiler.EHC.CompileUnit
+import UHC.Light.Compiler.EHC.FileSuffMp
+import UHC.Light.Compiler.EHC.CompilePhase.CompileC
+import UHC.Light.Compiler.EHC.CompilePhase.Output
+import UHC.Light.Compiler.Base.ParseUtils
+import UHC.Util.ScanUtils as ScanUtils
+import UHC.Light.Compiler.EHC.ASTHandler
+import UHC.Light.Compiler.EHC.ASTHandler.Instances
+import qualified UHC.Light.Compiler.Config as Cfg
+import UHC.Light.Compiler.Opts.CommandLine
+import UHC.Light.Compiler.Base.Optimize
+import UHC.Light.Compiler.CodeGen.RefGenerator
+import UHC.Util.Lens
+import Data.Typeable
+import Data.Maybe
+import Data.List
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import qualified UHC.Util.FastSeq as Seq
+import Control.Applicative
+import Control.Monad.State
+import UHC.Util.Error
+import UHC.Light.Compiler.Base.Trace
+import qualified UHC.Light.Compiler.EH as EH
+import qualified UHC.Light.Compiler.EH.Main as EHSem
+import qualified UHC.Light.Compiler.HS as HS
+import qualified UHC.Light.Compiler.HS.MainAG as HSSem
+import qualified UHC.Light.Compiler.Core as Core
+import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
+import qualified UHC.Light.Compiler.Core.ToCoreRun as Core2CoreRunSem
+import UHC.Light.Compiler.Core.Trf.ElimNonCodegenConstructs
+import qualified UHC.Light.Compiler.CoreRun as CoreRun
+import UHC.Light.Compiler.LamInfo
+import qualified UHC.Util.Rel as Rel
+import UHC.Util.Time
+import System.Directory
+import UHC.Light.Compiler.Module.ImportExport
+import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.CHR.Solve (chrStoreUnion)
+import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
+import qualified UHC.Light.Compiler.CoreRun.Check as CoreRun2ChkSem
+import qualified UHC.Light.Compiler.CoreRun.ModImpExp as CoreRunSemMod
+import qualified UHC.Light.Compiler.HI as HI
+import UHC.Light.Compiler.EHC.CompilePhase.Module(cpUpdHiddenExports)
+import UHC.Light.Compiler.Base.PackageDatabase
+import UHC.Light.Compiler.Base.Pragma
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 140 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Execute a build function, possibly caching/memoizing a result
+bcall :: forall res m . (Typeable res, EHCCompileRunner m) => BFun' m res -> EHCompilePhaseT m res
+bcall bfun = do
+    -- query cache
+    bcache      <- getl $ st ^* bstateCache
+    mbCachedRes <- lkup bfun bcache
+
+    case mbCachedRes of
+      Just res -> do
+        -- debug/trace
+        cpTr TraceOn_BldFun ["cache " ++ show bfun]
+        -- immediate result
+        return res
+
+      _ -> do
+        -- debug/trace
+        getl cstk >>= \stk -> cpTr TraceOn_BldFun $ [">>>>> " ++ show bfun] ++ map show stk
+        -- prepare
+        bstart bfun
+
+        -- actual execution
+        res <- case bfun of
+          CRSI -> brefto bfun BRef_CRSI
+
+
+          CRSIWithCompileOrderPl bglob compileOrder {- astplan@ -}(ASTBuildPlan {_astbplPipe=astpipe {-, _astbplChoice=choice -} }) -> do
+               cpTrPP TraceOn_BldImport $ ["CRSIWithCompileOrderPl pipe:" >#< astpipe] ++ map pp compileOrder
+               case compileOrder of
+                   _ | length mutRecL > 0 -> cpSetLimitErrs 1 "compilation run" [rngLift emptyRange Err_MutRecModules mutRecL]
+                     | otherwise          -> forM_ compileOrder $ \[modNm] -> do
+                                               bLiftASTPipeToASTBuildPlan bglob (return ()) (\k p -> flow1 k p) (mkPrevFileSearchKeyWithName modNm) (_bglobPipe bglob) -- astpipe
+                     where mutRecL = filter ((> 1) . length) compileOrder
+
+                           -- Flow module info into global state
+                           flow1 modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan = do
+                               let allowFlow = bAllowFlowPl modNm astplan ASTSemFlowStage_BetweenModule
+
+                               -- From: cpFlowHsSem1
+                               updHS <- maybe2M
+                                   (allowFlow $ astpMbFromHSToEH True)
+                                   (\pl -> do
+                                      -- let pl = mkBuildPlan p choice
+                                      cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_BetweenModule astpMbFromHSToEH" >#< modSearchKey, pp pl]
+                                      bGetHsSemPlMb bglob modSearchKey pl
+                                   ) (return id) $ \_ (hsSem) -> do
+                                 return $ \crsi ->
+                                   let hsInh  = crsi ^. crsiHSInh
+                                       ig     = HSSem.gathIdGam_Syn_AGItf hsSem
+                                       fg     = HSSem.gathFixityGam_Syn_AGItf hsSem
+                                   in  crsi
+                                         { -- From: cpFlowHsSem1
+                                           _crsiHSInh = hsInh
+                                              { HSSem.idGam_Inh_AGItf      = ig `gamUnion` HSSem.idGam_Inh_AGItf     hsInh
+                                              , HSSem.fixityGam_Inh_AGItf  = fg `gamUnion` HSSem.fixityGam_Inh_AGItf hsInh
+                                              }
+                                         }
+
+                               -- From: cpFlowEHSem1
+                               updEH <- maybe2M
+                                   (allowFlow $ astpMbFromEH True)
+                                   (\pl -> do
+                                      -- let pl = mkBuildPlan p choice
+                                      cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_BetweenModule astpMbFromEH" >#< modSearchKey, pp pl]
+                                      bcall $ FoldEHPlMb bglob modSearchKey pl
+                                   ) (return id) $ \_ ehSem -> do
+                                 return $ \crsi ->
+                                   let opts   = crsi ^. crsiOpts
+                                       ehInh  = crsi ^. crsiEHInh
+                                       cenv   = crsi ^. crsiCEnv
+                                       cenv'  = cenvDataGam ^$= (EHSem.gathDataGam_Syn_AGItf ehSem `gamUnion`) $ cenv
+                                       ehInh' = ehInh
+                                         { -- EHSem.dataGam_Inh_AGItf    = EHSem.gathDataGam_Syn_AGItf    ehSem `gamUnion`  EHSem.dataGam_Inh_AGItf    ehInh
+                                           EHSem.dataGam_Inh_AGItf    = cenv' ^. cenvDataGam
+                                         , EHSem.valGam_Inh_AGItf     = EHSem.gathValGam_Syn_AGItf     ehSem `gamUnion`  EHSem.valGam_Inh_AGItf     ehInh
+                                         , EHSem.tyGam_Inh_AGItf      = EHSem.gathTyGam_Syn_AGItf      ehSem `gamUnion`  EHSem.tyGam_Inh_AGItf      ehInh
+                                         , EHSem.tyKiGam_Inh_AGItf    = EHSem.gathTyKiGam_Syn_AGItf    ehSem `gamUnion`  EHSem.tyKiGam_Inh_AGItf    ehInh
+                                         , EHSem.polGam_Inh_AGItf     = EHSem.gathPolGam_Syn_AGItf     ehSem `gamUnion`  EHSem.polGam_Inh_AGItf     ehInh
+                                         , EHSem.kiGam_Inh_AGItf      = EHSem.gathKiGam_Syn_AGItf      ehSem `gamUnion`  EHSem.kiGam_Inh_AGItf      ehInh
+                                         , EHSem.clGam_Inh_AGItf      = EHSem.gathClGam_Syn_AGItf      ehSem `gamUnion`  EHSem.clGam_Inh_AGItf      ehInh
+                                         , EHSem.clDfGam_Inh_AGItf    = EHSem.gathClDfGam_Syn_AGItf    ehSem `gamUnion`  EHSem.clDfGam_Inh_AGItf    ehInh
+                                         , EHSem.chrStore_Inh_AGItf   = EHSem.gathChrStore_Syn_AGItf   ehSem `chrStoreUnion` EHSem.chrStore_Inh_AGItf   ehInh
+                                         }
+                                   in  -- From: cpFlowEHSem1
+                                       ( ( crsiEHInh ^= ehInh' )
+                                       . ( crsiCEnv ^= cenv' )
+                                       ) $ crsi
+
+                               -- From: cpFlowCoreModSem
+                               updCoreSrc <- maybe2M
+                                   (allowFlow $ astpMbSrcCachedCore True)
+                                   (\pl -> do
+                                      let p = _astbplPipe pl
+                                      cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_BetweenModule astpMbSrcCachedCore" >#< modSearchKey, pp p]
+                                      bcall $ FoldCoreModPlMb modSearchKey pl
+                                   ) (return id) $ \_ (coreChkSem, _, _, _, _, _) -> do
+                                 return $ (crsiCEnv ^* cenvDataGam) ^$= (`gamUnion` Core2ChkSem.gathDataGam_Syn_CodeAGItf coreChkSem)
+
+                               -- From: cpFlowCoreModSem
+                               updCoreRunSrc <- maybe2M
+                                   (allowFlow $ astpMbCheckCoreRunToCoreRun True)
+                                   (\pl -> do
+                                      -- let p = _astbplPipe pl
+                                      cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_BetweenModule astpMbSrcCachedCoreRun" >#< modSearchKey, pp pl]
+                                      bcall $ FoldCoreRunCheckPlMb bglob modSearchKey pl
+                                   ) (return id) $ \_ (corerunChkSem,_) -> do
+                                 -- modNm' <- bcall $ ActualModNm modNm
+                                 return $ ((crsiCoreRunState ^* crcrsiNm2RefMp) ^$= \coreRunInh -> CoreRun2ChkSem.nm2refGath_Syn_AGItf corerunChkSem `CoreRun.nm2refUnion` coreRunInh)
+                                        . ((crsiCoreRunState ^* crcrsiReqdModules) ^$= (++ [modNm]))
+
+                               let updCoreGrin = id
+
+                               -- From: cpFoldCore2CoreRun
+                               updCoreCoreRun <- maybe2M
+                                   (allowFlow $ astpMbFromCoreToCoreRun True)
+                                   (\pl -> do
+                                      -- let pl = mkBuildPlan p choice
+                                      cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_BetweenModule astpMbFromCoreToCoreRun" >#< modSearchKey, pp pl]
+                                      bcall $ FoldCore2CoreRunPlMb bglob modSearchKey pl
+                                   ) (return id) $ \_ core2corerunSem -> do
+                                 return $ (crsiCoreRunState ^* crcrsiNm2RefMp) ^$= \core2RunInh ->
+                                   Core2CoreRunSem.nm2refGath_Syn_CodeAGItf core2corerunSem `CoreRun.nm2refUnion` core2RunInh
+                               cpUpdSI $ updCoreRunSrc . updCoreCoreRun . updCoreSrc . updCoreGrin . updEH . updHS
+
+               brefto bfun BRef_CRSI
+
+          CRSIWithImpsPl bglob (PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}, _pfsrchMbCxtInfo=mbPrev}) imps astplan@(ASTBuildPlan {_astbplPipe=astpipe}) -> do
+               impsmp <- bcall $ ImportsRecursiveWithImpsP bglob mbPrev imps astpipe
+               let compileOrder = scc [ (n, Set.toList i) | (n,i) <- Map.toList impsmp ]
+               cpTr TraceOn_BldSccImports $ [show modNm ++ " " ++ show imps] ++ [show compileOrder]
+               bcall $ CRSIWithCompileOrderPl bglob compileOrder astplan
+               brefto bfun BRef_CRSI
+
+          CRSIOfNameP bglob modSearchKey astpipe -> do
+               bLiftASTPipeToASTBuildPlan bglob (brefto bfun BRef_CRSI) (\k p -> bcall $ CRSIOfNamePl bglob k p) modSearchKey astpipe
+
+          CRSIOfNamePl bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe, _astbplChoice=choice}) -> do
+               let allowFlow = bAllowFlowPl modNm astplan ASTSemFlowStage_PerModule
+               ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               cpTrPP TraceOn_BldPipe [pp "CRSIOfNamePl", pp astplan]
+
+               -- first recursively take care of all imports
+               (_, imps) <- bcall $ ImportsOfNamePl bglob modSearchKey astplan
+               cpTr TraceOn_BldImport ["CRSIOfNamePl " ++ show modSearchKey, "imps=" ++ show imps]
+               bcall $ CRSIWithImpsPl bglob (mkPrevFileSearchKeyWithNameMbPrev modNm (_ecuMbPrevSearchInfo ecu)) imps astplan
+
+               -- flow HS semantics forward into global state for current module, for a next stage in the pipeline
+               -- From: cpFlowHsSem1
+               maybe2M (allowFlow $ astpMbFromHSToEH True)
+                       (\pl -> do
+                          -- let pl = mkBuildPlan p choice
+                          cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_PerModule astpMbFromHSToEH" >#< modSearchKey, pp pl]
+                          bGetHsSemPlMb bglob modSearchKey pl
+                       ) (return ()) $ \_ hsSem -> do
+                   cpUpdSI $ \crsi ->
+                       let ehInh  = crsi ^. crsiEHInh
+                           ig     = HSSem.gathIdGam_Syn_AGItf hsSem
+                           ehInh' = ehInh
+                             { EHSem.idQualGam_Inh_AGItf  = idGam2QualGam ig `gamUnion` EHSem.idQualGam_Inh_AGItf ehInh
+                             }
+                       in  crsi
+                             { _crsiEHInh = ehInh'
+                             }
+
+               -- flow HS semantics forward into global state for current module, for a next stage in the pipeline
+               -- From: cpFlowHsSem1
+               maybe2M (allowFlow $ astpMbFromHS True)
+                       (\pl -> do
+                          -- let pl = mkBuildPlan p choice
+                          cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_PerModule astpMbFromHS" >#< modSearchKey, pp pl]
+                          bGetHsSemPlMb bglob modSearchKey pl
+                       ) (return ()) $ \_ hsSem -> do
+                   cpUpdSI $ \crsi ->
+                       let ehInh  = crsi ^. crsiEHInh
+                           opts   = crsi ^. crsiOpts
+                           mk = if ehcOptUseAssumePrelude opts
+                                then \_ n -> n
+                                else \k n -> idQualGamReplacement (EHSem.idQualGam_Inh_AGItf ehInh) k (hsnQualified n)
+                       in  crsi
+                             { _crsiOpts = opts
+                                  { ehcOptBuiltinNames = mkEHBuiltinNames mk
+                                  }
+                             }
+
+               -- flow EH semantics forward into global state for current module, for a next stage in the pipeline
+               -- From: cpFlowEHSem1
+               maybe2M (allowFlow $ astpMbFromEH True)
+                       (\pl -> do
+                          -- let pl = mkBuildPlan p choice
+                          cpTrPP TraceOn_BldFlow ["ASTSemFlowStage_PerModule astpMbFromEH" >#< modSearchKey, pp pl]
+                          bcall $ FoldEHPlMb bglob modSearchKey pl
+                       ) (return ()) $ \_ ehSem -> do
+                   crsi <- bcall CRSI
+                   let mmi      = panicJust "cpFlowEHSem1.crsiModMp" $ Map.lookup modNm $ crsiModMp crsi
+                       mentrelFilterMp
+                                = mentrelFilterMpUnions [ EHSem.gathMentrelFilterMp_Syn_AGItf ehSem, mentrelToFilterMp' False [modNm] (mmiExps mmi) ]
+                       usedImpS = mentrelFilterMpModuleNames mentrelFilterMp
+                   bUpdECU modNm ( ecuStoreHIUsedImpS usedImpS
+                                 . ecuStoreUsedNames mentrelFilterMp
+                                 )
+                   -- put back additional hidden exports
+                   cpUpdHiddenExports modNm $ Seq.toList $ EHSem.gathHiddenExports_Syn_AGItf ehSem
+
+
+               brefto bfun BRef_CRSI
+
+          ExposedPackages -> brefto bfun BRef_ExposedPackages
+
+          EHCOptsOf modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) -> brefto bfun $ BRef_EHCOpts modNm
+
+          ImportsOfNamePl bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe}) -> do
+               let dflt = return (modNm, Set.empty)
+               maybeM (bcall $ ASTBuildPlanChoicePMb bglob modSearchKey astpipe) dflt $ \tmOfRes -> do
+                 maybeM (_tmofresDelayed tmOfRes) dflt $ \TmOfDelayedRes {_tmofdresModNm=nm, _tmofdresImpMp=mp} -> do
+                   cpTr TraceOn_BldImport ["ImportsOfNamePl " ++ show modSearchKey, "actual modNm=" ++ show nm, "impNmS=" ++ show (Map.keysSet mp)]
+                   breturn (nm, Map.keysSet mp)
+
+          ImportsRecursiveWithImpsP bglob mbPrev imps astpipe -> do
+               recimps <- fmap Map.unions $ forM (Set.toList imps) $ \imp -> do
+                 let modSearchKey = mkPrevFileSearchKeyWithNameMbPrev imp mbPrev
+                 (nm', imps', recimps') <- bcall $ ImportsRecursiveOfNameP bglob modSearchKey astpipe
+                 return $ Map.insert nm' imps' recimps'
+               breturn recimps
+
+          ImportsRecursiveOfNameP bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astpipe -> do
+               ecu        <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               (nm, imps) <- bLiftASTPipeToASTBuildPlan bglob (return (modNm, Set.empty))
+                 (\k p -> bcall $ ImportsOfNamePl bglob k p)
+                 modSearchKey astpipe
+               recimps    <- bcall $ ImportsRecursiveWithImpsP bglob (_ecuMbPrevSearchInfo ecu) imps astpipe
+               breturn (nm, imps, recimps)
+
+          ActualModNm modSearchKey -> (fmap ecuModNm $ bcall $ EcuOfPrevNameAndPath modSearchKey) >>= breturn
+
+          BuildPlanPMb bglob modSearchKey astpipe ->
+               maybeM (bcall $ ASTBuildPlanChoicePMb bglob modSearchKey astpipe) (return Nothing) $ \tmr -> do
+                 let pl = mkBuildPlan astpipe $ _tmofresChoice tmr
+                 cpTrPP TraceOn_BldPlan ["BuildPlanPMb" >#< modSearchKey, pp pl]
+                 breturn $ Just pl
+
+          ASTBuildPlanChoicePMb bglob modSearchKey astpipe -> do
+               -- cpTrPP TraceOn_BldPlan ["ASTBuildPlanChoicePMb" >#< modSearchKey, "astpipe:" >#< astpipe]
+               maybeM (bMkASTPMbChoice bglob modSearchKey astpipe) (return Nothing) (breturn . Just)
+
+          EcuOf modNm -> brefto bfun $ BRef_ECU modNm
+
+          -- does not typecheck...
+          -- EcuMbOf modNm -> brefto' bfun $ BRef_ECU modNm
+
+{-
+          EcuOfName modNm -> do
+               -- For interaction with old build system, in case of already existing ecu and no dependency on file, take that one
+               maybeM' (fmap fst $ bderef'' $ BRef_ECU modNm) (\_ -> bcall $ EcuOf modNm) $
+                 bcall $ EcuOfNameAndPath (FileSearchKey modNm ASTFileNameOverride_AsIs)
+-}
+{-
+               (mbEcu,_) <- bderef'' $ BRef_ECU modNm
+               case mbEcu of
+                 Just ecu -> bcall $ EcuOf modNm
+                 _        -> bcall $ EcuOfNameAndPath (modNm, ASTFileNameOverride_AsIs)
+-}
+{-
+          EcuOfNameAndPath mf -> do
+               bcall $ EcuOfPrevNameAndPath (PrevFileSearchKey mf Nothing)
+-}
+
+          EcuOfPrevNameAndPath modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm, _fsrchOverr=overrFp}, _pfsrchMbCxtInfo=mbPrev}) -> do
+               opts <- bcall $ EHCOptsOf modSearchKey
+               let (mbFp,isTopModule) = case overrFp of
+                     ASTFileNameOverride_AsIs          -> (Nothing, False)
+                     ASTFileNameOverride_FPath      fp -> (Just fp, False)
+                     ASTFileNameOverride_FPathAsTop fp -> (Just fp, True )
+                   searchPath      = ehcOptImportFileLocPath opts
+                   adaptFileSuffMp = {-  -} if isTopModule then (fileSuffMpHsNoSuff ++) else id -- 20150904 TBD: sort this out, is hackish... Issue: be able to detect what commandline choice is and let that one override in buildplan choice construction
+                   searchPath' = prevSearchInfoAdaptedSearchPath mbPrev searchPath
+               fileSuffMpHs <- fmap (map tup123to12 . adaptFileSuffMp) $ getl $ crStateInfo ^* crsiFileSuffMp
+               cpTr TraceOn_BldSearchPaths ["FPathSearchForFile: " ++ show modNm, "sp1=" ++ show searchPath, "sp2=" ++ show searchPath', "prev=" ++ show mbPrev]
+               fpsFound <- cpFindFilesForFPathInLocations
+                 (fileLocSearch opts)
+                 tup1234to13 False fileSuffMpHs searchPath' (Just modNm) mbFp
+               let astAvailFiles = [ ASTAvailableFile fp t c u {-tm-} | (fp,(_,t,c,u {-,tm-})) <- fpsFound ]
+               cpTrPP TraceOn_BldFPaths $ ["EcuOfPrevNameAndPath:" >#< modSearchKey, "on searchpath:" >#< vlist searchPath', "suffices:" >#< show fileSuffMpHs] ++ map ("found:" >#<) astAvailFiles
+
+               bUpdECU modNm $
+                   (ecuASTAvailFiles ^= astAvailFiles)
+                 . (ecuIsTopMod ^$= (isTopModule ||))		-- 20150915 TBD: this cannot be a plain set, not sure why but probably due to sideeffect and impl of bcall $ IsTopMod
+
+               bmemo $ (BRef_ECU modNm :: BRef m res)
+               fmap (panicJust "EcuOfPrevNameAndPath") $ bLookupECU modNm
+
+          FPathSearchForFile suff fn -> do
+               let fp    = mkTopLevelFPath suff fn
+                   modNm = mkHNm $ fpathBase fp
+               cpTr TraceOn_BldFPaths ["FPathSearchForFile: " ++ show modNm ++ ", " ++ fpathToStr fp]
+               breturn (modNm, fp)
+
+          FPathForAST modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNmAsked, _fsrchOverr=overr}}) asttype skey tkey -> do
+               res@(fp, suffoverr, ecu) <- case overr of
+                 ASTFileNameOverride_FPath fp -> (bcall $ EcuOf modNmAsked) >>= \ecu -> return (fp, ASTFileSuffOverride_AsIs, ecu)
+                 _                            -> (bcall $ EcuOfPrevNameAndPath modSearchKey) >>= \ecu -> return (ecuSrcFilePath ecu, ASTFileSuffOverride_Suff skey, ecu)
+               breturn res
+
+          ASTFromFile modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) chkTimeStamp asttype skey tkey -> do
+               maybeM (bASTFromFileMb modSearchKey chkTimeStamp asttype skey tkey) (undefFor modNm) $ \(res,_) -> breturn res
+
+{-
+          ASTRefFromFileMb modSearchKey chkTimeStamp asttype skey tkey -> do
+               eithAST <- bcall $ ASTRefFromFileEither modSearchKey False chkTimeStamp asttype skey tkey
+               case eithAST of
+                 Left  _   -> return Nothing
+                 Right res -> breturn $ Just res
+-}
+
+          ASTRefFromFileEither modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNmAsked, _fsrchOverr=overr}}) yieldErr (AlwaysEq chkTimeStamp) asttype skey@(astfcont,_) tkey -> do
+               (fp, suffoverr, ecu) <- bcall $ FPathForAST modSearchKey asttype skey tkey
+
+               let modNm = ecuModNm ecu
+                   -- ref   =  -- :: BRef res -- ast
+
+               case BRef_ASTFile modSearchKey asttype skey tkey of
+                 -- use case instead of let to be able to also access the AST type via tyvar 'ast' (@20150803 ghc 7.8.3: let does not allow scoped tyvars to be introduced in this way)
+                 (ref :: BRef m ast) -> do
+                   mbtm <- fmap (fmap fst) $ bcall $ ModfTimeOfFile modSearchKey asttype skey tkey
+                   opts <- bcall $ EHCOptsOf modSearchKey
+                   let (mbhdlr :: Maybe (ASTHandler' ast)) = asthandlerLookup asttype
+                       mkfp hdlr = asthdlrMkInputFPath hdlr opts ecu suffoverr modNm fp
+
+                   (mbRes :: Maybe ast, mbset) <- bderef'' ref
+
+                   case (mbRes, mbset, mbhdlr) of
+                     (Just ast, _, _) -> ret ref ast
+
+                     (_, Just set, Just (astHdlr :: ASTHandler' ast)) | chkTimeStamp == ASTFileTimeHandleHow_Ignore || isJust mbtm -> case astfcont of
+                          ASTFileContent_Binary -> do
+                            cpMsg' modNm VerboseALot "Decoding" Nothing fpC
+                            cpTr TraceOn_BldFPaths ["ASTFromFile ASTFileContent_Binary: " ++ show modNm ++ ", fp=" ++ fpathToStr fp ++ " -> fpC=" ++ fpathToStr fpC]
+                            mbx@(~(Just x)) <- liftIO $ _asthdlrGetSerializeFileIO astHdlr opts fpC
+                            if isJust mbx
+                              then do
+                                cpTr TraceOn_BldResult ["ASTFromFile Deserialize ok: " ++ show modNm]
+                                let errs = _asthdlrPostInputCheck astHdlr opts ecu modNm fpC x
+                                if null errs
+                                  then do
+                                    cpTr TraceOn_BldRef ["ASTFromFile ASTFileContent_Binary: " ++ show modNm ++ ", ref=" ++ show ref]
+                                    cpMsg' modNm VerboseDebug "Decoded" Nothing fpC
+                                    setret ref x
+                                  else do
+                                    cpTr TraceOn_BldResult ["ASTFromFile ASTFileContent_Binary postcheck errors: " ++ show modNm]
+                                    err'' ("Decode AST check " ++ _asthdlrName astHdlr) errs
+                              else err "decoder"
+                          fc | fc `elem` [ASTFileContent_Text, ASTFileContent_LitText] -> do
+                            cpMsg' modNm VerboseALot "Parsing" Nothing fpC
+                            let --
+                                popts       = _astsuffinfoUpdParseOpts info defaultEHParseOpts
+                                sopts       = _asthdlrParseScanOpts astHdlr opts popts
+                                description = "Parse (" ++ (if ScanUtils.scoLitmode sopts then "Literate " else "") ++ _asthdlrName astHdlr ++ " syntax) of module `" ++ show modNm ++ "`"
+                                seterrs es  = err'' description es
+                            cpTr TraceOn_BldFPaths ["ASTFromFile " ++ show fc ++ ": " ++ show modNm ++ ", fp=" ++ fpathToStr fp ++ " -> fpC=" ++ fpathToStr fpC ++ "(fp == fpC: " ++ show (fp == fpC) ++ ") ehpoptsOkToStopAtErr=" ++ show (ehpoptsOkToStopAtErr popts) ]
+                            case _asthdlrParser astHdlr opts popts of
+                              Just (ASTParser p) -> do
+                                (ast,errs) <- parseWithFPath sopts popts p fpC
+                                if null errs || ehpoptsOkToStopAtErr popts
+                                  then do
+                                    cpMsg' modNm VerboseDebug "Parsed" Nothing fpC
+                                    setret ref ast
+                                  else seterrs errs
+                              _ -> do
+                                seterrs [strMsg $ "No parser for " ++ _asthdlrName astHdlr]
+
+                          fc -> err $ "ast content handler " ++ show fc
+
+                       where mbi@(~(Just info)) = astsuffixLookup skey $ _asthdlrSuffixRel astHdlr
+                             mbl@(~(Just lens)) = Map.lookup tkey $ _astsuffinfoASTLensMp info
+                             fpC                = mkfp astHdlr
+                             err                = err' fpC (_asthdlrName astHdlr)
+                             setret ref ast     = set ast >> ret ref ast
+
+                     _ | isNothing mbhdlr               -> err1 "ast handler"
+                       | isNothing mbset                -> err2 mbhdlr "ast setter"
+                       | chkTimeStamp == ASTFileTimeHandleHow_AbsenceIsError && isNothing mbtm
+                                                        -> err2 mbhdlr "file time info (probably non existent)"
+                       | otherwise                      -> dflt'
+                       where err1               = err' fp (show asttype)
+                             err2 (Just h)      = err' (mkfp h) (_asthdlrName h)
+
+            where -- dflt' :: EHCompilePhaseT m res
+                  -- dflt' = undefFor modNmAsked
+                  dflt' = return $ Left ("",[])
+                  err' fp k m = err'' ("Decode " ++ k ++ " for file " ++ fpathToStr fp) [strMsg $ "No " ++ m ++ " for " ++ k ++ " (" ++ show skey ++ "/" ++ show tkey ++ ")"]
+                  err'' | yieldErr  = \desc es -> return $ Left (desc,es)
+                        | otherwise = \desc es -> cpSetLimitErrsWhen 5 desc es >> dflt'
+                  ret ref ast = let r = Right ref in bmemo' r >> return r
+
+          ASTP bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astpipe -> do
+               maybeM (bcall $ ASTPMb bglob modSearchKey astpipe) (undefFor modNm) $ \(ASTResult {_astresAST=res}) -> breturn res
+
+          ASTPlMb bglob modSearchKey astplan -> do
+               bExecASTPMbChoice bglob modSearchKey astplan
+
+          ASTPMb bglob modSearchKey astpipe -> do
+               bLiftASTPipeToASTBuildPlan bglob (return Nothing) (\k p -> bcall $ ASTPlMb bglob k p) modSearchKey astpipe
+
+          ModfTimeOfFile modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) asttype skey tkey -> do
+               (fp, suffoverr, ecu) <- bcall $ FPathForAST modSearchKey asttype skey tkey
+               opts <- bcall $ EHCOptsOf modSearchKey
+               case (asthandlerLookup' asttype $ \hdlr -> do
+                         suffinfo <- astsuffixLookup skey $ _asthdlrSuffixRel hdlr
+                         let mblens = Map.lookup tkey $ _astsuffinfoModfTimeMp suffinfo
+                         return (mblens, asthdlrMkInputFPath hdlr opts ecu suffoverr modNm fp)
+                    ) of
+                         Just (mblens, fp) -> do
+                           r <- tm opts ecu (maybe (const id) (\lens -> (lens ^=) . Just) mblens) fp
+                           cpTr TraceOn_BldTimes ["ModfTimeOfFile " ++ show modSearchKey, "asttype: " ++ show asttype ++ ", skey: " ++ show skey ++ ", tkey: " ++ show tkey, "fp: " ++ fpathToStr fp, "mb time: " ++ show r]
+                           return r
+                         _                 ->
+                           return Nothing
+            where
+              tm opts ecu store fp = do
+                  let n = fpathToStr fp
+                  nExists <- liftIO $ doesFileExist n
+                  when (ehcOptVerbosity opts >= VerboseDebug) $ liftIO $ putStrLn ("meta info of: " ++ show (ecuModNm ecu) ++ ", file: " ++ n ++ ", exists: " ++ show nExists)
+                  if nExists
+                    then do
+                      t <- liftIO $ fpathGetModificationTime fp
+                      when (ehcOptVerbosity opts >= VerboseDebug) $ liftIO $ putStrLn ("time stamp of: " ++ show (ecuModNm ecu) ++ ", time: " ++ show t)
+                      bUpdECU modNm $ store t
+                      breturn $ Just (t, fp)
+                    else
+                      return Nothing
+
+          ASTFileIsValid modSearchKey asttype skey tkey -> do
+               mbValid <- asthandlerLookupM' asttype $ \hdlr -> do
+                   eith <- bASTFromFileEither modSearchKey False (AlwaysEq ASTFileTimeHandleHow_AbsenceIgnore) asttype skey tkey
+                   case eith of
+                     Left _ -> return Nothing
+                     Right (ast, _, _) -> return $ Just $ _asthdlrASTIsValid hdlr ast
+               maybe (return False) breturn mbValid
+
+          DirOfModIsWriteable modSearchKey -> do
+               ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               let fp = ecuSrcFilePath ecu
+               pm <- liftIO $ getPermissions (maybe "." id $ fpathMbDir fp)
+               let res = writable pm
+               -- liftIO $ putStrLn (fpathToStr fp ++ " writ " ++ show res)
+               bUpdECU (ecuModNm ecu) $ ecuDirIsWritable ^= res
+               breturn res
+
+          CanCompile modSearchKey -> do
+               ecu  <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               isWr <- bcall $ DirOfModIsWriteable modSearchKey
+               mbTm <- bcall $ ModfTimeOfFile modSearchKey (ecu ^. ecuASTType) (ecu ^. ecuASTFileContent, ecu ^. ecuASTFileUse) ASTFileTiming_Current
+               breturn $ isJust mbTm && isWr
+{-
+          NeedsCompile modNm -> do
+               -- From: crModNeedsCompile
+               opts <- bcall $ EHCOptsOf modNm
+               ecu  <- bcall $ EcuOfName modNm
+               return $
+                 ecuIsMainMod ecu -- ecuIsTopMod ecu
+                 || not (  ehcOptCheckRecompile opts
+                        -- 20150817 TBD
+                        -- && ecuCanUseHIInsteadOfHS ecu
+                        -- && null newer
+                        )
+-}
+
+          ASTFileIsNewerThan (modSearchKey1, asttype1, skey1, tkey1) (modSearchKey2, asttype2, skey2, tkey2) -> do
+               mbTm1 <- bcall $ ModfTimeOfFile modSearchKey1 asttype1 skey1 tkey1
+               mbTm2 <- bcall $ ModfTimeOfFile modSearchKey2 asttype2 skey2 tkey2
+               case (mbTm1, mbTm2) of
+                 (Just (t1,_), Just (t2,_)) -> breturn $ Just $ t1 `diffClockTimes` t2 > noTimeDiff
+                 _                          -> return Nothing
+
+{-
+crModNeedsCompile :: HsName -> EHCompileRun -> Bool
+crModNeedsCompile modNm cr
+  = ecuIsMainMod ecu -- ecuIsTopMod ecu
+    || not (  ehcOptCheckRecompile opts
+           && ecuCanUseHIInsteadOfHS ecu
+           && null newer
+           )
+  where ecu = crCU modNm cr
+        (newer,_) = crPartitionNewerOlderImports modNm cr
+        opts = _crStateInfo cr ^. crsiOpts
+
+crPartitionNewerOlderImports :: HsName -> EHCompileRun -> ([EHCompileUnit],[EHCompileUnit])
+crPartitionNewerOlderImports modNm cr
+  = partition isNewer $ map (flip crCU cr) $ ecuImpNmL ecu
+  where ecu = crCU modNm cr
+        t   = panicJust "crPartitionNewerOlderImports1" $ _ecuMbHIInfoTime ecu
+        isNewer ecu'
+            | isJust mbt = t' `diffClockTimes` t > noTimeDiff
+            | otherwise  = False
+            where t' = panicJust "crPartitionNewerOlderImports2" $ _ecuMbHIInfoTime ecu'
+                  mbt = _ecuMbHIInfoTime ecu'
+
+-- | Can HI be used instead of HS?
+--   This is purely based on HI being of the right version and HS not newer.
+--   The need for recompilation considers dependencies on imports as well.
+ecuCanUseHIInsteadOfHS :: EHCompileUnit -> Bool
+ecuCanUseHIInsteadOfHS ecu
+  = ecuIsValidHIInfo ecu && not (ecuIsHSNewerThanHI ecu)
+
+ecuIsValidHIInfo :: EHCompileUnit -> Bool
+ecuIsValidHIInfo ecu
+  = case _ecuMbPrevHIInfo ecu of
+      Just i -> HI.hiiValidity i == HI.HIValidity_Ok
+      _      -> False
+
+-- | Is HS newer?
+--   If no HS exists False is returned.
+ecuIsHSNewerThanHI :: EHCompileUnit -> Bool
+ecuIsHSNewerThanHI ecu
+  = case (_ecuMbSrcTime ecu,_ecuMbHIInfoTime ecu) of
+      (Just ths,Just thi) -> ths `diffClockTimes` thi > noTimeDiff
+      (Nothing ,Just thi) -> False
+      _                   -> True
+-}
+
+          IsTopMod modSearchKey -> do
+               ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               breturn $ _ecuIsTopMod ecu
+
+
+          HasMain bglob modSearchKey astpipe -> do
+               let dflt = return False
+               maybeM (bcall $ ASTBuildPlanChoicePMb bglob modSearchKey astpipe) dflt $ \tmofres -> do
+                 if _tmofresHasMain tmofres
+                   then breturn True
+                   else do
+                     maybeM (_tmofresDelayed tmofres) dflt (breturn . _tmofdresHasMain)
+
+
+          FoldHsMod modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm, _fsrchOverr=overr}, _pfsrchMbCxtInfo=mbPrev}) mbPkgKeyDirLForCPP@(~(Just pkgKeyDirL)) -> do
+               let doCPP = isJust mbPkgKeyDirLForCPP
+               overr' <-
+                 if doCPP
+                   then fmap ASTFileNameOverride_FPath $ bcall $ FPathPreprocessedWithCPP pkgKeyDirL modSearchKey
+                   else
+                        return ASTFileNameOverride_AsIs
+               let modSearchKey'  = PrevFileSearchKey (FileSearchKey modNm overr') mbPrev
+               ecu  <- bcall $ EcuOfPrevNameAndPath modSearchKey'
+               let modNm'         = ecuModNm ecu
+                   modSearchKey'' = PrevFileSearchKey (FileSearchKey modNm' overr') mbPrev
+               hs   <- bcall $ ASTFromFile modSearchKey'' (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) ASTType_HS (_ecuASTFileContent ecu, ASTFileUse_SrcImport) ASTFileTiming_Current
+               crsi <- bcall $ CRSI
+               opts <- bcall $ EHCOptsOf modSearchKey
+               let  inh        = crsiHSModInh crsi
+                    hsSemMod   = HSSemMod.wrap_AGItf (HSSemMod.sem_AGItf hs)
+                                                     (inh { HSSemMod.gUniq_Inh_AGItf        = crsi ^. crsiHereUID
+                                                          , HSSemMod.moduleNm_Inh_AGItf     = modNm'
+                                                          })
+                    hasMain= HSSemMod.mainValExists_Syn_AGItf hsSemMod
+                    pragmas = HSSemMod.fileHeaderPragmas_Syn_AGItf hsSemMod
+                    (ecuOpts,modifiedOpts)
+                            = ehcOptUpdateWithPragmas pragmas opts
+               bUpdECU modNm' ( ecuStoreHSSemMod hsSemMod
+                              . ecuSetHasMain hasMain
+                              . ecuStorePragmas pragmas
+                              . (if modifiedOpts then ecuStoreOpts ecuOpts else id)
+                              )
+               breturn
+                 ( hsSemMod
+                 , hasMain
+                 , pragmas
+                 , if modifiedOpts then Just ecuOpts else Nothing
+                 )
+
+{-
+          ModnameAndImports modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}, _pfsrchMbCxtInfo=mbPrev}) asttype -> do
+               maybeM' (bcall $ ModnameAndImportsPMb modSearchKey (ASTPipe_Src ASTFileUse_Src ASTFileTiming_Current asttype)) breturn $ do
+                   cpSetLimitErrsWhen 1 "bcall ModnameAndImports" [rngLift emptyRange Err_Str $ "Cannot extract module name and imports from " ++ show modNm ++ " (" ++ show asttype ++ ")" ]
+                   -- should not arrive at usage of this result
+                   return $ panic $ "BuildFunction.Run.bcall ModnameAndImports: " ++ show modNm
+
+          ModnameAndImportsP modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}, _pfsrchMbCxtInfo=mbPrev}) astpipe -> do
+               maybeM' (bcall $ ModnameAndImportsPMb modSearchKey astpipe) breturn $ do
+                   return (modNm, Set.empty, Nothing, False)
+-}
+
+          ModnameAndImportsPlMb modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}, _pfsrchMbCxtInfo=mbPrev}) astplan -> do
+               -- ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               let astpipe = _astbplPipe astplan
+                   asttype = astpType astpipe
+               case asttype of
+                 ASTType_HS -> fmap Just $ bcall $ HsModnameAndImports modSearchKey
+                 ASTType_EH -> return $ Just (modNm, Set.empty, mbPrev, False)
+                 ASTType_HI -> do
+                   (_, impNmS, _, hasMain) <- bcall $ FoldHIInfo modSearchKey
+                   breturn $ Just (modNm, impNmS, mbPrev, hasMain)
+                 ASTType_Core -> do
+                   maybeM (bcall $ FoldCoreModPlMb modSearchKey astplan) (return Nothing) $ \(_, modNm', impNmS, _, hasMain, newPrev) -> do
+                     cpTr TraceOn_BldImport ["ModnameAndImportsPlMb FoldCoreModPlMb " ++ show modSearchKey, "astplan=" ++ show astplan, "impNmS=" ++ show impNmS]
+                     breturn $ Just (modNm', impNmS, newPrev, hasMain)
+                 ASTType_CoreRun -> do
+                   maybeM (bcall $ FoldCoreRunModPlMb modSearchKey astplan) (return Nothing) $ \(_, modNm', impNmS, _, hasMain, newPrev) -> do
+                     cpTr TraceOn_BldImport ["ModnameAndImportsPlMb FoldCoreRunModPlMb " ++ show modSearchKey, "astplan=" ++ show astplan, "impNmS=" ++ show impNmS]
+                     breturn $ Just (modNm', impNmS, newPrev, hasMain)
+                 _ -> do
+                   cpSetLimitErrsWhen 1 "Imports" [rngLift emptyRange Err_Str $ "Cannot extract module name and imports from " ++ show modNm ++ " (" ++ show asttype ++ ")" ]
+                   -- should not arrive at usage of this result
+                   breturn $ panic $ "BuildFunction.Run.bcall ModnameAndImports: " ++ show modNm
+
+{-
+          ModnameAndImportsPlMb modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}, _pfsrchMbCxtInfo=mbPrev}) astplan@(ASTBuildPlan {_astbplPipe=astpipe}) -> do
+               maybeM (bcall $ ASTBuildPlanChoicePMb modSearchKey astpipe) (return Nothing) $ \tmOfRes -> do
+                 maybeM (_tmofresDelayed tmOfRes) (return Nothing) $ \mp ->
+                   breturn $ Just (modNm, Map.keysSet mp, mbPrev, False)
+-}
+
+          HsModnameAndImports modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) -> do
+               opts <- bcall $ EHCOptsOf modSearchKey
+               pkgKeyDirL <- bcall ExposedPackages
+               let doCPP                = ehcOptCPP opts
+                   mkMbPkgKeyDirL doCPP = if doCPP then Just pkgKeyDirL else Nothing
+                   mbPkgKeyDirL         = mkMbPkgKeyDirL doCPP
+               cpStepUID
+
+               resFold1@( _, hasMain
+                 , pragmas, mbOpts
+                 ) <- bcall $ FoldHsMod modSearchKey mbPkgKeyDirL
+
+               let opts2 = maybe opts id mbOpts
+               resFold2@( hsSemMod, _, _, _ ) <-
+                 if (  not (ehcOptCPP opts2)                -- reinvoke if CPP has not been invoked before
+                    || ehcOptCmdLineOptsDoneViaPragma opts2 -- or options have been set via pragma
+                    )
+                    -- check whether the pragma has a cmdline option like effect
+                    && (not $ null $ filter pragmaInvolvesCmdLine $ Set.toList pragmas)
+                  then do
+                    let doCPP2 = doCPP || Set.member Pragma_CPP pragmas
+                    bcall $ FoldHsMod modSearchKey $ mkMbPkgKeyDirL doCPP2
+                  else return resFold1
+               let modNm'     = HSSemMod.realModuleNm_Syn_AGItf hsSemMod
+                   impNmS     = HSSemMod.modImpNmS_Syn_AGItf hsSemMod
+               (modNmNew, newPrev) <- newModNm modSearchKey modNm' $ ecuStoreSrcDeclImpS impNmS
+               return (modNmNew, impNmS, newPrev, hasMain)
+
+          FoldHIInfo modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) -> do
+               hiInfo <- bcall $ ASTFromFile modSearchKey (AlwaysEq ASTFileTimeHandleHow_AbsenceIgnore) ASTType_HI (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
+               opts   <- bcall $ EHCOptsOf modSearchKey
+               crsi   <- bcall $ CRSI
+               let hasMain= HI.hiiHasMain hiInfo
+                   mm     = crsiModMp crsi
+                   mmi    = Map.findWithDefault emptyModMpInfo modNm mm
+                   mmi'   = mkModMpInfo modNm
+                                        (mmiInscps mmi)
+                                        ( -- (\v -> tr "FoldHIInfo.hiiExps" (pp v) v) $
+                                         HI.hiiExps hiInfo)
+                                        (HI.hiiHiddenExps hiInfo)
+               -- when hasMain (crSetAndCheckMain modNm)
+               cpUpdSI (\crsi -> crsi {crsiModMp = Map.insert modNm mmi' mm})       -- this should be made explicit
+               bUpdECU modNm ( ecuStoreHIDeclImpS (HI.hiiHIDeclImpModS hiInfo)
+                             . ecuStoreHIUsedImpS (HI.hiiHIUsedImpModS hiInfo)
+                             . ecuSetHasMain hasMain
+                             )
+               when (ehcOptVerbosity opts >= VerboseDebug)
+                    (liftIO $ putStrLn
+                       (show modNm
+                        ++ ": hi imps, decl=" ++ show (HI.hiiHIDeclImpModS hiInfo)
+                        ++ ", used=" ++ show (HI.hiiHIUsedImpModS hiInfo)
+                    )  )
+               breturn
+                 ( hiInfo
+                 , HI.hiiHIDeclImpModS hiInfo
+                 , HI.hiiHIUsedImpModS hiInfo
+                 , hasMain
+                 )
+
+          ImportNameInfo modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) optimScope -> do
+               ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               let isWholeProg = optimScope > OptimizationScope_PerModule
+                   impNmL     | isWholeProg = []
+                              | otherwise   = ecuImpNmL ecu
+               return impNmL
+
+
+          ImportExportImpl modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) optimScope -> do
+               ecu    <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               opts   <- bcall $ EHCOptsOf modSearchKey
+               crsi   <- bcall $ CRSI
+               impNmL <- bcall $ ImportNameInfo modSearchKey optimScope
+               let isWholeProg = optimScope > OptimizationScope_PerModule
+                   expNmFldMp | ecuIsMainMod ecu = Map.empty
+                              | otherwise        = crsiExpNmOffMp modNm crsi
+                   modOffMp   | isWholeProg = Map.filterWithKey (\n _ -> n == modNm) $ crsiModOffMp crsi
+                              | otherwise   = crsiModOffMp crsi
+               return $ emptyModuleImportExportImpl
+                 { mieimplUsedModNmL        = if ecuIsMainMod ecu then [ m | (m,_) <- sortOnLazy snd $ Map.toList $ Map.map fst modOffMp ] else []
+                 , mieimplHsName2FldMpMp    = Map.fromList
+                     [ (n,(o,mp))
+                     | (n,o) <- refGen 0 1 impNmL
+                     , let (_,mp) = panicJust ("cpGenModuleImportExportImpl: " ++ show n) (Map.lookup n (crsiModOffMp crsi))
+                     ]
+                 , mieimplHsName2FldMp      = expNmFldMp
+                 }
+
+
+
+          FoldHsPMb bglob modSearchKey astpipe -> do
+               bLiftASTPipeToASTBuildPlan bglob (return Nothing) (\k p -> bcall $ FoldHsPlMb bglob k p) modSearchKey astpipe
+
+          FoldHsPlMb bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe, _astbplChoice= Choice_No c}) -> do
+               cpTrPP TraceOn_BldFold $ ["FoldHsPMb" >#< modNm, pp astplan]
+               maybe2M (return $ bIsAllowedFlowPl astplan $ astpMbFromHSToEH False)
+                       (\pl -> bcall $ ASTPlMb bglob modSearchKey pl) (return Nothing) $ \_ (ASTResult {_astresAST=hs}) -> do
+               cpTr TraceOn_BldFold $ ["FoldHsPMb ok"]
+               ecu      <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               opts     <- bcall $ EHCOptsOf modSearchKey
+               crsi     <- bcall $ CRSIOfNamePl bglob modSearchKey astplan
+               isTopMod <- bcall $ IsTopMod modSearchKey
+               let  inh    = crsi ^. crsiHSInh
+                    hsSem  = HSSem.wrap_AGItf (HSSem.sem_AGItf hs)
+                                              (inh { HSSem.opts_Inh_AGItf             = opts
+                                                   , HSSem.gUniq_Inh_AGItf            = crsi ^. crsiHereUID
+                                                   , HSSem.moduleNm_Inh_AGItf         = modNm
+                                                   , HSSem.isTopMod_Inh_AGItf         = isTopMod -- _ecuIsTopMod ecu
+                                                   , HSSem.modInScope_Inh_AGItf       = inscps
+                                                   , HSSem.modEntToOrig_Inh_AGItf     = exps
+                                                   , HSSem.topInstanceNmL_Inh_AGItf   = modInstNmL (ecuMod ecu)
+                                                   })
+                           where mmi    = panicJust "FoldHs.crsiModMp" $ Map.lookup modNm $ crsiModMp crsi
+                                 inscps = Rel.toDomMap --- $ (\v -> tr "XX mmiInscps mmi" (pp v ) v)
+                                                       $ mmiInscps
+                                                       --- $ (\v -> tr "XX mmi" (pp v ) v)
+                                                       $ mmi
+                                 exps   = Rel.toRngMap $ Rel.restrictRng (\o -> let mq = hsnQualifier (ioccNm o) in isJust mq && fromJust mq /= modNm)
+                                                       $ Rel.mapRng mentIdOcc $ mmiExps mmi
+                    hasMain= HSSem.mainValExists_Syn_AGItf hsSem
+               let trpp = HSSem.trpp_Syn_AGItf hsSem
+               when (not $ trppIsEmpty trpp) $ trPPOnIO trpp
+
+               cpSetLimitErrsWhen 5 "Dependency/name analysis" $ Seq.toList $ HSSem.errSq_Syn_AGItf hsSem
+               bUpdECU modNm ( ecuStoreHSSem hsSem
+                             -- TBD: should move elsewhere
+                             . ecuStoreHIDeclImpS ( -- (\v -> tr "YY" (pp $ Set.toList v) v) $
+                                                   ecuSrcDeclImpNmS ecu)
+                             -- . ecuSetHasMain hasMain
+                             )
+               when (ehcOptEmitHS opts)
+                    (liftIO $ putPPFPath (mkOutputFPath opts modNm (ecuFilePath ecu) "hs2") (HSSem.pp_Syn_AGItf hsSem) 1000)
+               when (ehcOptShowHS opts)
+                    (liftIO $ putWidthPPLn 120 (HSSem.pp_Syn_AGItf hsSem))
+               when (ehcOptVerbosity opts >= VerboseDebug)
+                    (liftIO $ putStrLn (show modNm ++ " hasMain=" ++ show hasMain))
+               -- when hasMain (crSetAndCheckMain modNm)
+
+               breturn $ Just
+                 ( hsSem
+                 -- , ecuSrcDeclImpNmS ecu
+                 , hasMain
+                 )
+
+          FoldEHPMb bglob modSearchKey astpipe -> do
+               bLiftASTPipeToASTBuildPlan bglob (return Nothing) (\k p -> bcall $ FoldEHPlMb bglob k p) modSearchKey astpipe
+
+          FoldEHPlMb bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe, _astbplChoice= Choice_No c}) -> do
+               maybe2M (return $ astpMbFromEH False astpipe)
+                       (\(p,_) -> bcall $ ASTPlMb bglob modSearchKey $ mkBuildPlan p c) (return Nothing) $ \_ (ASTResult {_astresAST=eh}) -> do
+               ecu  <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               opts <- bcall $ EHCOptsOf modSearchKey
+               crsi <- bcall $ CRSIOfNamePl bglob modSearchKey astplan
+               mieimpl <- bcall $ ImportExportImpl modSearchKey (ehcOptOptimizationScope opts)
+               let  mbEH   = _ecuMbEH ecu
+                    ehSem  = EHSem.wrap_AGItf (EHSem.sem_AGItf eh)
+                                              ((crsi ^. crsiEHInh)
+                                                     { EHSem.moduleNm_Inh_AGItf                = ecuModNm ecu
+                                                     , EHSem.gUniq_Inh_AGItf                   = crsi ^. crsiHereUID
+                                                     , EHSem.opts_Inh_AGItf                    = opts
+                                                     , EHSem.importUsedModules_Inh_AGItf       = ecuImportUsedModules ecu
+                                                     , EHSem.moduleImportExportImpl_Inh_AGItf  = mieimpl
+                                                     , EHSem.isMainMod_Inh_AGItf               = ecuIsMainMod ecu
+                                                     })
+                    about  = "EH analyses: Type checking"
+                    errs   = Seq.toList $ EHSem.allErrSq_Syn_AGItf ehSem
+
+               bUpdECU modNm $! ecuStoreEHSem $! ehSem
+
+               let trpp = EHSem.trpp_Syn_AGItf ehSem
+               when (not $ trppIsEmpty trpp) $ trPPOnIO trpp
+
+               when (ehcOptEmitEH opts)
+                    (liftIO $ putPPFPath (mkOutputFPath opts modNm (ecuFilePath ecu) "eh2") (EHSem.pp_Syn_AGItf ehSem) 1000)
+               when (ehcOptShowEH opts)
+                    (liftIO $ putWidthPPLn 120 (EHSem.pp_Syn_AGItf ehSem))
+               when (EhOpt_Dump `elem` ehcOptEhOpts opts) $
+                    -- void $ cpOutputSomeModule (^. ecuEH) astHandler'_EH ASTFileContent_Text "" Cfg.suffixDotlessOutputTextualEh modNm
+                    liftIO $ putPPFPath (mkOutputFPath opts modNm (ecuFilePath ecu) Cfg.suffixDotlessOutputTextualEh) (EHSem.pp_Syn_AGItf ehSem) 1000
+               isTopMod <- bcall $ IsTopMod modSearchKey
+               cpSetLimitErrsWhen 5 about errs
+               breturn $ Just ehSem
+
+          FPathPreprocessedWithCPP pkgKeyDirL modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) -> do
+               -- Just <$> cpPreprocessWithCPP pkgKeyDirL modNm
+               -- cr <- get
+               opts <- bcall $ EHCOptsOf modSearchKey
+               ecu  <- bcall $ EcuOf modNm
+               let fp              = ecuSrcFilePath ecu
+                   fpCPP           = fpathSetSuff {- mkOutputFPath opts modNm fp -} (maybe "" (\s -> s ++ "-") (fpathMbSuff fp) ++ "cpp") fp
+                   -- fpCPP           = fpathSetBase {- mkOutputFPath opts modNm fp -} (fpathBase fp ++ "-cpp") fp
+                   shellCmdCpp     = Cfg.shellCmdOverride opts Cfg.shellCmdCpp PgmExec_CPP
+                   shellCmdCppOpts = execOptsPlain $ Map.findWithDefault [] shellCmdCpp $ ehcOptExecOptsMp opts
+                   preCPP  = mkShellCmd' [Cmd_CPP,Cmd_CPP_Preprocessing] shellCmdCpp
+                               (  Cfg.cppOpts ++ gccDefs opts ["CPP"]
+                               ++ map cppOptF shellCmdCppOpts -- [ {- "traditional-cpp", -} {- "std=gnu99", -} "fno-show-column", "P" ]
+                               ++ [ cppOptI d | d <- gccInclDirs opts pkgKeyDirL ]
+                               ++ ehcOptCmdLineOpts opts
+                               ++ map (cppArg . fpathToStr) [ fp ] -- , fpCPP ]
+                               )
+               when (ehcOptVerbosity opts >= VerboseALot) $ do
+                 cpMsg modNm VerboseALot "CPP"
+                 -- liftIO $ putStrLn ("pkg db: " ++ show (ehcOptPkgDb opts))
+                 -- liftIO $ putStrLn ("pkg srch filter: " ++ (show $ ehcOptPackageSearchFilter opts))
+                 -- liftIO $ putStrLn ("exposed pkgs: " ++ show (pkgExposedPackages $ ehcOptPkgDb opts))
+                 -- liftIO $ putStrLn ("pkgKeyDirL: " ++ show pkgKeyDirL)
+                 liftIO $ putStrLn $ showShellCmd preCPP
+
+               -- when (ecuCanCompile ecu)
+               ifM (bcall $ CanCompile modSearchKey)
+                 (do liftIO $ fpathEnsureExists fpCPP
+                     cpSystem' (Just $ fpathToStr fpCPP) preCPP
+                     cpRegisterFilesToRm [fpCPP]
+                     bUpdECU modNm (ecuStoreCppFilePath fpCPP)
+                     breturn fpCPP
+                 )
+                 (do cpSetLimitErrsWhen 1 "CPP" [rngLift emptyRange Err_CannotCreateFile (show modNm) (fpathToStr fpCPP) ]
+                     -- should not arrive at usage of this result
+                     breturn $ panic $ "BuildFunction.Run.bcall FPathPreprocessedWithCPP: " ++ fpathToStr fpCPP
+                 )
+
+          FoldCoreModPlMb modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) (ASTBuildPlan {_astbplPipe= astpipe, _astbplChoice= Choice_Src astavail}) -> do
+               ecu  <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               maybe2M (return $ astpMbSrcCachedCore True astpipe)
+                       (\(p,_) -> bASTFromFileMb modSearchKey (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) (astpType p) (_astavailfContent astavail, astpUse p) (astfileuseReadTiming $ astpUse p))
+                       (return Nothing) $
+                         \_ (core,_) -> do
+               opts <- bcall $ EHCOptsOf modSearchKey
+               let inh      = Core2ChkSem.Inh_CodeAGItf
+                                  { Core2ChkSem.opts_Inh_CodeAGItf = opts
+                                  , Core2ChkSem.moduleNm_Inh_CodeAGItf = modNm
+                                  }
+                   coreSem  = Core2ChkSem.cmodCheck' inh core
+                   hasMain  = Core2ChkSem.hasMain_Syn_CodeAGItf coreSem
+                   modNm'   = Core2ChkSem.realModuleNm_Syn_CodeAGItf coreSem
+                   impNmS   = Set.fromList $ Core2ChkSem.impModNmL_Syn_CodeAGItf coreSem
+                   mod      = Core2ChkSem.mod_Syn_CodeAGItf coreSem
+               cpTr TraceOn_BldResult ["FoldCoreModPlMb " ++ show modSearchKey ++ " hasMain=" ++ show hasMain]
+               (modNmNew, newPrev) <- newModNm modSearchKey modNm' $
+                 ( ecuStoreCoreSemMod coreSem
+                 . ecuSetHasMain hasMain
+                 . ecuStoreMod mod
+                 . ecuStoreSrcDeclImpS impNmS
+                 )
+               breturn $ Just
+                 ( coreSem
+                 , modNmNew
+                 , impNmS
+                 , mod
+                 , hasMain
+                 , newPrev
+                 )
+
+
+          FoldCore2CoreRunPlMb bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe {- , _astbplChoice= Choice_No c -}}) -> do
+               maybe2M (return $ (bIsAllowedFlowPl astplan $ astpMbFromCoreToCoreRun False) >>= astplMbSubPlan)
+                       (\pl -> bcall $ ASTPlMb bglob modSearchKey pl) (return Nothing) $ \pl ASTResult {_astresAST=core} -> do
+               opts <- bcall $ EHCOptsOf modSearchKey
+               crsi <- bcall $ CRSIOfNamePl bglob modSearchKey astplan
+               hasMain <- bcall $ HasMain bglob modSearchKey $ _astbplPipe pl
+               cpTr TraceOn_BldResult ["FoldCore2CoreRunPlMb " ++ show modSearchKey ++ " subpipe=" ++ show (_astbplPipe pl) ++ " hasMain=" ++ show hasMain]
+               let sem = Core2CoreRunSem.cmod2CoreRun'' opts hasMain Nothing {- (Just $ length $ crsi ^. crsiCoreRunState ^. crcrsiReqdModules) -} (crsi ^. crsiCoreRunState ^. crcrsiNm2RefMp) core
+               cpUpdSI $ (crsiCoreRunState ^* crcrsiReqdModules) ^$= (++ [modNm]) -- (++ [ecuModNm ecu])
+               -- between module flow part, TBD: corerun, nmref part
+               -- cpUpdSI (\crsi -> crsi {crsiCore2RunInh = nm2ref'})
+               -- per module part
+               bUpdECU modNm ( ecuStoreCore2CoreRunSem sem
+                             -- . ecuStoreCoreRun corerun
+                             )
+               breturn $ Just sem
+
+
+          FoldCoreRunModPlMb modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) (ASTBuildPlan {_astbplPipe= astpipe, _astbplChoice= Choice_Src astavail}) -> do
+               -- ecu  <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               maybe2M (return $ astpMbSrcCachedCoreRun True astpipe)
+                       (\(p,_) -> bASTFromFileMb modSearchKey (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) (astpType p) (_astavailfContent astavail, astpUse p) (astfileuseReadTiming $ astpUse p))
+                       (return Nothing) $
+                         \_ (crr,_) -> do
+               let inh      = CoreRunSemMod.Inh_AGItf
+                                  { CoreRunSemMod.moduleNm_Inh_AGItf = modNm
+                                  }
+                   crrSem   = CoreRunSemMod.crmodImpExp' inh crr
+                   hasMain  = CoreRunSemMod.hasMain_Syn_AGItf crrSem
+                   modNm'   = CoreRunSemMod.realModuleNm_Syn_AGItf crrSem
+                   impNmS   = Set.fromList $ CoreRunSemMod.impModNmL_Syn_AGItf crrSem
+                   mod      = CoreRunSemMod.mod_Syn_AGItf crrSem
+               cpTr TraceOn_BldResult ["FoldCoreRunModPlMb " ++ show modSearchKey, "hasMain=" ++ show hasMain, "impNmS=" ++ show impNmS]
+               (modNmNew, newPrev) <- newModNm modSearchKey modNm' $
+                 ( (ecuCoreRunSemMod ^= crrSem)
+                 . ecuSetHasMain hasMain
+                 . ecuStoreMod mod
+                 . ecuStoreSrcDeclImpS impNmS
+                 )
+               breturn $ Just
+                 ( crrSem
+                 , modNmNew
+                 , impNmS
+                 , mod
+                 , hasMain
+                 , newPrev
+                 )
+
+          FoldCoreRunCheckPlMb bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe}) -> do
+               -- ecu  <- bcall $ EcuOfPrevNameAndPath modSearchKey
+               maybe2M (return $ (bIsAllowedFlowPl astplan $ astpMbCheckCoreRunToCoreRun False) >>= astplMbSubPlan)
+                       (\pl -> bcall $ ASTPlMb bglob modSearchKey pl) (return Nothing) $ \pl ASTResult {_astresAST=crr} -> do
+{-
+               maybe2M (return $ astpMbCheckCoreRunToCoreRun False astpipe)
+                       -- 20150905 TBD: get rid of _ecuASTFileContent
+                       (\(p,_) -> bASTFromFileMb modSearchKey (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) (astpType p) (_ecuASTFileContent ecu, astpUse p) (astfileuseReadTiming $ astpUse p))
+                       (return Nothing) $
+                         \_ (crr,_) -> do
+-}
+               crsi <- bcall $ CRSIOfNamePl bglob modSearchKey astplan
+               let inh    = CoreRun2ChkSem.Inh_AGItf
+                                { CoreRun2ChkSem.moduleNr_Inh_AGItf = Nothing -- Just $ length $ crsi ^. crsiCoreRunState ^. crcrsiReqdModules
+                                , CoreRun2ChkSem.nm2ref_Inh_AGItf = crsi ^. crsiCoreRunState ^. crcrsiNm2RefMp
+                                }
+                   crrSem = CoreRun2ChkSem.crmodCheck' inh crr
+               -- debug
+               -- ecu <- bcall $ EcuOf modNm
+               -- cpOutputSomeModule (const $ CoreRun2ChkSem.crr_Syn_AGItf crrSem) astHandler'_CoreRun ASTFileContent_Text "-FoldCoreRunCheckPlMb" Cfg.suffixDotlessOutputTextualCoreRun (ecuModNm ecu)
+               bUpdECU modNm $
+                 ( (ecuCoreRunSemChk ^= crrSem)
+                 . (ecuCoreRun ^= CoreRun2ChkSem.crr_Syn_AGItf crrSem)
+                 )
+               breturn $ Just
+                 ( crrSem
+                 , CoreRun2ChkSem.crr_Syn_AGItf crrSem
+                 )
+
+
+
+          _ -> panic $ "BuildFunction.Run.bcall: not implemented: " ++ show bfun
+
+        -- finalize
+        bend
+
+        -- debug/trace
+        getl cstk >>= \stk -> cpTr TraceOn_BldFun $ ["<<<<< " ++ show bfun] ++ map show stk
+
+        -- the result
+        return res
+  where
+    -- construct a reference to something and also yield corresponding result
+    brefto' :: BFun' m res -> BRef m res -> EHCompilePhaseT m (Maybe res)
+    brefto' bfun ref = bmemo ref >> bderef' ref
+
+    brefto :: BFun' m res -> BRef m res -> EHCompilePhaseT m res
+    brefto bfun ref = fmap (panicJust $ "BuildFunction.Run.bcall.brefto " ++ show bfun) $ brefto' bfun ref
+
+    -- lookup in cache
+    lkup :: Typeable m => BFun' m res -> BCache m -> EHCompilePhaseT m (Maybe res)
+    lkup bfun bcache =
+        case bcacheLookup bfun bcache of
+          Just (res :: Identity res) -> return $ Just $ runIdentity res
+          _ -> case bcacheLookup bfun bcache of
+            Just (ref :: BRef m res) -> bderef' ref
+            _ -> return Nothing
+
+    -- factored out: new module name extracted from src file
+    newModNm :: PrevFileSearchKey -> HsName -> (EHCompileUnit -> EHCompileUnit) -> EHCompilePhaseT m (HsName, Maybe PrevSearchInfo)
+    newModNm modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) modNm' upd = do
+        -- ecu <- bcall $ EcuOf modNm
+        -- cpTr TraceOn_BldResult ["newModNm1 " ++ show modSearchKey ++ "mod=" ++ show modNm ++ " hasMain=" ++ show (ecuHasMain ecu)]
+        modNmNew <- ifM (bcall $ IsTopMod modSearchKey)
+          (do
+            cpUpdCUWithKey modNm (\_ ecu -> (modNm', upd $ cuUpdKey modNm' ecu))
+            when (modNm /= modNm') $ do
+              crStateInfo ^* crsiBState ^* bstateCache ^* bcacheModNmForward =$: Map.insert modNm modNm'
+              cpTr TraceOn_BldRef ["newModNm rename: " ++ show modNm ++ " -> " ++ show modNm']
+            return modNm'
+          )
+          (do
+            bUpdECU modNm upd
+            return modNm
+          )
+        ecu <- bcall $ EcuOf modNmNew
+        -- cpTr TraceOn_BldResult ["newModNm2 " ++ show modSearchKey ++ "mod=" ++ show modNmNew ++ " hasMain=" ++ show (ecuHasMain ecu)]
+        let newPrev = Just (modNmNew, (ecuSrcFilePath ecu, ecuFileLocation ecu))
+        bUpdECU modNmNew $ ecuMbPrevSearchInfo ^= newPrev
+        -- ecu <- bcall $ EcuOf modNm
+        -- cpTr TraceOn_BldResult ["newModNm3 " ++ show modSearchKey ++ "modold=" ++ show modNm ++ " hasMain=" ++ show (ecuHasMain ecu)]
+        return (modNmNew, newPrev)
+
+    -- undefined result
+    undefFor modNm = return $ panic $ "BuildFunction.Run.bcall (" ++ show bfun ++ ") undefined result related to " ++ show modNm
+
+{-# LINE 1351 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- lens access
+st    = crStateInfo ^* crsiBState
+cstk  = st ^* bstateCallStack
+
+-- call init/finalization
+bstart :: (Typeable res, EHCCompileRunner m) => BFun' m res -> EHCompilePhaseT m ()
+bstart bfun = cstk =$: (BFun bfun :)
+
+bend :: (EHCCompileRunner m) => EHCompilePhaseT m ()
+bend = cstk =$: tail
+
+-- | memoize
+bmemo :: (EHCCompileRunner m, Typeable f, Typeable res) => f res -> EHCompilePhaseT m ()
+bmemo res = do
+	(BFun bfun : _) <- getl $ st ^* bstateCallStack
+	case cast bfun of
+	  Just bfun -> do
+		   cpTr TraceOn_BldFun $ ["memo  " ++ show bfun]
+		   st ^* bstateCache =$: bcacheInsert bfun res
+	  _ -> panic $ "BuildFunction.Run.bcall.bmemo: " ++ show bfun
+
+bmemo' :: (EHCCompileRunner m, Typeable res) => res -> EHCompilePhaseT m ()
+bmemo' res = do
+	(BFun bfun : _) <- getl $ st ^* bstateCallStack
+	case cast bfun of
+	  Just bfun -> do
+		   cpTr TraceOn_BldFun $ ["memo  " ++ show bfun]
+		   st ^* bstateCache =$: bcacheInsert bfun (Identity res)
+	  _ -> panic $ "BuildFunction.Run.bcall.bmemo': " ++ show bfun ++ ", " ++ show (typeOf bfun) ++ ", " ++ show (typeOf res)
+
+-- memoize & return
+breturn :: (EHCCompileRunner m, Typeable res) => res -> EHCompilePhaseT m res
+breturn res = do
+	bmemo (Identity res)
+	return res
+
+{-# LINE 1393 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Make a Choice what to build, resolve newer/older choice
+bMkASTPMbChoice :: forall m . (EHCCompileRunner m) => BuildGlobal -> PrevFileSearchKey -> ASTPipe -> TmOfResM m -- EHCompilePhaseT m (Maybe (TmOfRes m))
+bMkASTPMbChoice bglob modSearchKey astpipe = do
+    tmOf modSearchKey astpipe
+  where
+    -- cached variant
+    bTmOf :: PrevFileSearchKey -> ASTPipe -> TmOfResM m
+    bTmOf k p = bcall $ ASTBuildPlanChoicePMb bglob k p
+
+    tmOf :: PrevFileSearchKey -> ASTPipe -> TmOfResM m
+    -- source: time of src itself + imports
+    tmOf modSearchKey p@(ASTPipe_Src {astpUse=u, {- astpTiming=tm, -} astpType=t}) = do
+        let overrMbFp@(~(Just (overrFp,overr)))
+                      = astFileNameOverrideMbFPath $ _fsrchOverr $ _pfsrchKey modSearchKey
+            isOverr   = isJust overrMbFp && overr
+        ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+        case ecuLookupAvailASTFile t u (if isOverr then isOkSuff (fpathSuff overrFp) t else const True) ecu of
+          Just av -> do
+            let tm = astfileuseReadTiming u
+                choice = Choice_Src av
+                astplan = mkBuildPlan p choice
+            mbTm <- bcall $ ModfTimeOfFile modSearchKey t (_astavailfContent av, u) tm
+            cpTrPP TraceOn_BldResult ["bMkASTPMbChoice ASTPipe_Src:" >#< modSearchKey, "pipe:" >#< p, "mbTm=" >|< mbTm]
+            case mbTm of
+              Just (tm,fp) -> do
+                cpTrPP TraceOn_BldPipe ["bMkASTPMbChoice ASTPipe_Src:" >#< modSearchKey >#< tm, "file:" >#< fp, "pipe:" >#< p, "asked type:" >#< t, "cmdln type:" >#< _ecuASTType ecu, "isOverr:" >#< isOverr, "avail:" >#< av]
+                return $ Just $ emptyTmOfRes
+                  { _tmofresChoice = choice
+                  , _tmofresIsOverr = {- t == _ecuASTType ecu && -} isOverr
+                  , _tmofresDelayed = do
+                      cpTr TraceOn_BldImport ["bMkASTPMbChoice ASTPipe_Src _tmofresDelayed (1) " ++ show modSearchKey, " =" ++ show p]
+                      maybeM (bcall $ ModnameAndImportsPlMb modSearchKey astplan) (return Nothing) $ \(nm, imps, _, hasMain) -> do
+                        imptms <- forM (Set.toList imps) $ \n -> bTmOf (mkPrevFileSearchKeyWithName n) (_bglobPipe bglob) >>= \mbt -> return (n, fmap _tmofresTm mbt)
+                        cpTrPP TraceOn_BldImport $ ["bMkASTPMbChoice ASTPipe_Src _tmofresDelayed (2)" >#< show modSearchKey, "recurse on glob astpipe=" >|< _bglobPipe bglob] ++ [n >#< t | (n,t) <- imptms]
+                        if all (isJust . snd) imptms
+                          then return $ Just $ emptyTmOfDelayedRes
+                                 { _tmofdresModNm   = nm
+                                 , _tmofdresHasMain = hasMain
+                                 , _tmofdresImpMp   = Map.fromList [(n,t) | (n, Just t) <- imptms]
+                                 }
+                          else return Nothing
+                  , _tmofresTm = tm
+                  }
+              _ -> return Nothing
+          _ -> return Nothing
+      where
+        isOkSuff :: String -> ASTType -> ASTSuffixKey -> Bool
+        isOkSuff suff t sk = fromMaybe False $ asthandlerLookup' t $ \hdlr -> (astsuffixLookupSuff sk $ _asthdlrSuffixRel hdlr) >>= (return . (== suff))
+
+    -- choose first available
+    tmOf modSearchKey p@(ASTPipe_Choose {astpHow=ASTPipeHowChoice_Avail, astpPipe1=p1, astpPipe2=p2}) =
+        maybeM' (bTmOf modSearchKey p1) (return . Just . updTmChoice Choice_L) $
+          updTmChoiceM Choice_R $ bTmOf modSearchKey p2
+
+    -- choose first available, only to be overridden with second if indicated
+    tmOf modSearchKey p@(ASTPipe_Choose {astpHow=ASTPipeHowChoice_Overr, astpPipe1=p1, astpPipe2=p2}) = do
+        mbTm1 <- bTmOf modSearchKey p1
+        case mbTm1 of
+          Just tm1@(TmOfRes {_tmofresIsOverr=True}) -> return $ Just $ updTmChoice Choice_L tm1
+          _ -> do
+              mbTm2 <- bTmOf modSearchKey p2
+              case (mbTm1, mbTm2) of
+                (_      , Just tm2@(TmOfRes {_tmofresIsOverr=True})) -> return $ Just $ updTmChoice Choice_R tm2
+                (Nothing, _                                        ) -> return $ fmap (updTmChoice Choice_R) mbTm2
+                (_      , _                                        ) -> return $ fmap (updTmChoice Choice_L) mbTm1
+
+    -- choose based on newest in combi with imports also indicating being newer
+    tmOf modSearchKey p@(ASTPipe_Choose {astpHow=ASTPipeHowChoice_Newer, astpPipe1=p1, astpPipe2=p2}) =
+        tmChoose modSearchKey (return Nothing) (bTmOf modSearchKey p1) (bTmOf modSearchKey p2) (ret "1" p1 Choice_L) (ret "2" p2 Choice_R)
+      where ret msg _ ch res@(TmOfRes {_tmofresChoice=choice,_tmofresTm=tm}) = do
+              let choice' = ch choice
+              cpTrPP TraceOn_BldPipe ["bMkASTPMbChoice ASTPipe_FirstNewestAvailable:" >#< msg >#< tm, "choice:" >#< show choice', "pipe:" >#< p]
+              return $ Just $ res {_tmofresChoice=choice'}
+
+{-
+    -- cached: just time of cached file itself, if file is valid
+    tmOf modSearchKey p@(ASTPipe_Src {astpUse=ASTFileUse_Cache, astpType=t}) = ifM' (bcall $ ASTFileIsValid modSearchKey t (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev) (return Nothing) $ do
+        mbTm <- bcall $ ModfTimeOfFile modSearchKey t (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
+        case mbTm of
+          Just (tm,fp) -> do
+            cpTrPP TraceOn_BldPipe ["bMkASTPMbChoice ASTPipe_Src ASTFileUse_Cache ASTFileTiming_Prev:" >#< modSearchKey >#< tm, "file:" >#< fp, "pipe:" >#< p]
+            return $ Just $ emptyTmOfRes {_tmofresDelayed= return Nothing, _tmofresTm= tm}
+          _ -> return Nothing
+-}
+
+    -- cache: time recursively computed, if file can be cached
+    tmOf modSearchKey (ASTPipe_Cache {astpPipe=p}) = do
+        ifM' (bcall $ DirOfModIsWriteable modSearchKey) (return Nothing) $ updTmChoiceM Choice_No $ bTmOf modSearchKey p
+
+    -- whole: time recursively computed, merged into 1 time for all
+    tmOf modSearchKey (ASTPipe_Whole {astpPipe=p}) = do
+        maybeM (bTmOf modSearchKey p) (return Nothing) $ \tmr@(TmOfRes {_tmofresDelayed=mimps,_tmofresChoice=choice,_tmofresTm=tm}) -> do
+          maybeM mimps (return Nothing) $ \tmdr@(TmOfDelayedRes {_tmofdresImpMp=imps}) -> do
+            return $ Just $ tmr
+              { _tmofresDelayed= return $ Just $ tmdr {_tmofdresImpMp= Map.empty}
+              , _tmofresChoice= Choice_No choice
+              , _tmofresTm= maximum $ tm : Map.elems imps
+              }
+
+
+    -- derived: time recursively computed
+    tmOf modSearchKey (ASTPipe_Derived {astpPipe=p}) = do
+        cpTrPP TraceOn_BldPipe ["bMkASTPMbChoice ASTPipe_Derived:" >#< modSearchKey, "pipe:" >#< p]
+        updTmChoiceM Choice_No $ bTmOf modSearchKey p
+
+    -- transformation (also derived): time recursively computed
+    tmOf modSearchKey (ASTPipe_Trf {astpPipe=p}) = updTmChoiceM Choice_No $ bTmOf modSearchKey p
+
+    -- compound: maximum of all, ignoring possible absence of imports
+    tmOf modSearchKey (ASTPipe_Compound {astpPipes=ps}) = do
+        tms <- mapM (bTmOf modSearchKey) ps
+        if null tms || not (all isJust tms)
+          then return Nothing
+          else do
+            let subs = map (panicJust $ "bMkASTPMbChoice: " ++ show modSearchKey) tms
+                (mtsimps, cs, ts, os, ms) = unzip5 [ (s,c,t,o,m) | TmOfRes {_tmofresDelayed=s, _tmofresChoice=c, _tmofresTm=t, _tmofresIsOverr=o, _tmofresHasMain=m} <- subs ]
+            (tsimpsSeen, mtsimpsMbFound) <- if or ms
+              then return ([], Just mtsimps)
+              else do (seen,mb) <- breakM (maybe False _tmofdresHasMain) mtsimps
+                      return (seen, fmap snd mb)
+            let hasMain = isJust mtsimpsMbFound
+            return $ Just $ emptyTmOfRes
+              { _tmofresChoice = Choices cs
+              , _tmofresIsOverr = or os
+              , _tmofresDelayed = do
+                   tmdress@(~(tmdres:_)) <- fmap catMaybes $ maybe (return tsimpsSeen) (fmap (tsimpsSeen++) . sequence) mtsimpsMbFound
+                   let (~(nm:_),tsimps) = unzip [ (n,i) | TmOfDelayedRes {_tmofdresModNm=n, _tmofdresImpMp=i} <- tmdress ]
+                   return $ if null tsimps then Nothing else Just $ tmdres {_tmofdresHasMain= hasMain, _tmofdresImpMp= Map.unions tsimps}
+              , _tmofresTm = maximum ts
+              , _tmofresHasMain = hasMain
+              }
+
+    -- others, for now...
+    tmOf _ _ = return Nothing
+
+    tmChoose :: EHCCompileRunner m => PrevFileSearchKey -> EHCompilePhaseT m x -> TmOfResM m -> TmOfResM m -> (TmOfRes m -> EHCompilePhaseT m x) -> (TmOfRes m -> EHCompilePhaseT m x) -> EHCompilePhaseT m x
+    tmChoose modSearchKey adflt tm1 tm2 a1 a2 = tm1 >>= \mbtm1 -> tm2 >>= \mbtm2 -> case (mbtm1, mbtm2) of
+      (Just t1             , Nothing               ) -> a1 t1
+      (Nothing             , Just t2               ) -> a2 t2
+      (Just t1@(TmOfRes {_tmofresTm=tm1})
+                           , Just t2@(TmOfRes {_tmofresDelayed=mti2, _tmofresTm=tm2})
+                                                   ) -> do
+          (mxtm2, ti2) <- mti2 >>= (return . maybe (tm2, Map.empty) (\TmOfDelayedRes{_tmofdresImpMp=ti2} -> (maximum $ tm2 : Map.elems ti2, ti2)))
+          cpTrPP TraceOn_BldPipe ["tmChoose stamps" >#< modSearchKey, "tm1" >#< tm1, "mxtm2" >#< mxtm2, "tm2" >#< (tm2 >-< indent 2 (vlist $ Map.toList ti2))]
+          if tm1 `diffClockTimes` mxtm2 > noTimeDiff then a1 t1 else a2 t2
+      _ -> adflt
+
+{-# LINE 1562 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Build a AST result
+bRetAST :: forall m ast1 ast2 . (Typeable ast1, Typeable ast2, EHCCompileRunner m) => PrevFileSearchKey -> ASTPipe -> ast1 -> EHCompilePhaseT m (Maybe (ASTResult m ast2))
+bRetAST modSearchKey astpipe ast1 = do
+    case cast ast1 of
+      Just ast2 -> do
+          (_, mbset) <- bderef'' ref
+          case mbset of
+            Just set -> set ast2 >> mkASTResult ast2 ref astpipe >>= (return . Just)
+            _        -> return Nothing
+        where ref :: BRef m ast2
+              ref = BRef_AST modSearchKey (astpType astpipe)
+      _ -> return Nothing
+
+{-# LINE 1577 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Execute a Choice what to build, having resolved newer/older choice
+bExecASTPMbChoice :: (Typeable ast, EHCCompileRunner m) => BuildGlobal -> PrevFileSearchKey -> ASTBuildPlan -> EHCompilePhaseT m (Maybe (ASTResult m ast))
+bExecASTPMbChoice bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe, _astbplChoice=choice}) = do
+	   -- let asttypeAsked = astpType astpipe
+	   -- the source file available to produce the asked AST, not necessarily used
+	   ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+
+	   cpTrPP TraceOn_BldPipe [">>>>> bExecASTPMbChoice" >#< modSearchKey, pp astplan]
+	   res <- case astplan of
+		 ASTBuildPlan {_astbplPipe= ASTPipe_Derived ASTType_HI astpipe', _astbplChoice= Choice_No c} -> do
+			 -- (modNm, modSearchKey') <- bNmEtcFromAST modSearchKey astpipe
+			 let hii0 = HI.emptyHIInfo
+			 hii1 <- maybeM (bGetHsSemPlMb bglob modSearchKey astplan) (return hii0) $ \hsSem -> return $ hii0
+				   {
+				   -- cpFlowHsSem1
+				     HI.hiiFixityGam            = HSSem.gathFixityGam_Syn_AGItf hsSem
+				   , HI.hiiHIDeclImpModS        = ecuHIDeclImpNmS ecu                       -- TBD: sort out, should not be from hi
+				   }
+			 hii2 <- maybeM (bcall $ FoldEHPlMb bglob modSearchKey astplan) (return hii1) $ \ehSem -> return $ hii1
+				   {
+				   -- cpFlowEHSem1
+					 HI.hiiDataGam       = EHSem.gathDataGam_Syn_AGItf    ehSem
+				   , HI.hiiValGam        = EHSem.gathValGam_Syn_AGItf     ehSem
+				   , HI.hiiTyGam         = EHSem.gathTyGam_Syn_AGItf      ehSem
+				   , HI.hiiTyKiGam       = EHSem.gathTyKiGam_Syn_AGItf    ehSem
+				   , HI.hiiPolGam        = EHSem.gathPolGam_Syn_AGItf     ehSem
+				   , HI.hiiClGam         = EHSem.gathClGam_Syn_AGItf      ehSem
+				   , HI.hiiClDfGam       = EHSem.gathClDfGam_Syn_AGItf    ehSem
+				   , HI.hiiCHRStore      = EHSem.gathChrStore_Syn_AGItf   ehSem
+				   -- , HI.hiiLamMp         = lm
+				   , HI.hiiMbOrphan      = EHSem.mbOrphan_Syn_AGItf ehSem
+				   -- , HI.hiiHIUsedImpModS = usedImpS      -- TBD: sort out
+				   }
+			 let hii3 = hii2
+			 bRetAST modSearchKey astpipe hii2
+		 ASTBuildPlan {_astbplPipe= ASTPipe_Src ASTFileUse_Src _ asttypeAsked, _astbplChoice= Choice_Src av}
+		   -> do
+			 bASTFromFileEither modSearchKey False (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) asttypeAsked (_astavailfContent av, _astavailfUse av) (astfileuseReadTiming $ _astavailfUse av) >>=
+			   -- 20150818 TBD: factor below out
+			   either (\_ -> return Nothing)
+					  (\(a,r,t) -> fmap Just $ mkASTResult' a r astpipe (Just t))
+
+		 ASTBuildPlan {_astbplPipe= ASTPipe_Src ASTFileUse_Cache _ asttypeAsked, _astbplChoice= Choice_Src av} -> do
+			 bASTFromFileEither modSearchKey True (AlwaysEq ASTFileTimeHandleHow_AbsenceIgnore) asttypeAsked (_astavailfContent av, _astavailfUse av) (astfileuseReadTiming $ _astavailfUse av) >>=
+			   -- 20150818 TBD: factor below out
+			   either (\_ -> return Nothing)
+					  (\(a,r,t) -> fmap Just $ mkASTResult' a r astpipe (Just t))
+
+		 ASTBuildPlan {_astbplPipe= ASTPipe_Cache asttypeAsked astpipe', _astbplChoice= Choice_No c} -> do
+			 -- Cache/write AST
+			 maybeM (bcall $ ASTPlMb bglob modSearchKey $ mkBuildPlan astpipe' c) dflt $ \res -> do
+			   -- TBD: write/output side effect
+			   return $ Just $ astresPipe ^= astpipe' $ res -- (ast, ref, astpipe')
+
+		 ASTBuildPlan {_astbplPipe= ASTPipe_Choose {astpPipe1=p}, _astbplChoice= Choice_L c} -> do
+			 bcall $ ASTPlMb bglob modSearchKey $ mkBuildPlan p c
+
+		 ASTBuildPlan {_astbplPipe= ASTPipe_Choose {astpPipe2=p}, _astbplChoice= Choice_R c} -> do
+			 bcall $ ASTPlMb bglob modSearchKey $ mkBuildPlan p c
+
+
+		 -- ASTPipe_Derived ASTType_EH _ -> do
+		 ASTBuildPlan {_astbplPipe= p, _astbplChoice= Choice_No c}
+		   | isJust $ astpMbFromHSToEH True p -> do
+			 -- From: cpTranslateHs2EH
+			 maybeM (bGetHsSemPlMb bglob modSearchKey astplan) dflt
+					(bRetAST modSearchKey astpipe . HSSem.eh_Syn_AGItf)
+
+		 -- ASTPipe_Derived ASTType_Core _ -> do
+		 ASTBuildPlan {_astbplPipe= p, _astbplChoice= Choice_No c}
+		   | isJust $ astpMbFromEHToCore True p -> do
+			 -- From: cpTranslateEH2Core
+			 opts <- bcall $ EHCOptsOf modSearchKey
+			 maybeM (bcall $ FoldEHPlMb bglob modSearchKey astplan) dflt
+					(bRetAST modSearchKey astpipe . cmodTrfElimNonCodegenConstructs opts . EHSem.cmodule_Syn_AGItf)
+		 -- ASTPipe_Derived ASTType_CoreRun _ -> do
+		 ASTBuildPlan {_astbplPipe= p, _astbplChoice= Choice_No c}
+		   | isJust $ astpMbFromCoreToCoreRun True p -> do
+			 -- From: cpFoldCore2CoreRun
+			 maybeM (bcall $ FoldCore2CoreRunPlMb bglob modSearchKey astplan) dflt $ \sem -> do
+				r <- bRetAST modSearchKey astpipe $ Core2CoreRunSem.crm_Syn_CodeAGItf sem
+				-- debug
+				-- ecu <- bcall $ EcuOf modNm
+				-- cpOutputSomeModule (^. ecuCoreRun) astHandler'_CoreRun ASTFileContent_Text "-astpMbFromCoreToCoreRun" Cfg.suffixDotlessOutputTextualCoreRun (ecuModNm ecu)
+				return r
+		 ASTBuildPlan {_astbplPipe= p, _astbplChoice= Choice_No c}
+		   | isJust $ astpMbCheckCoreRunToCoreRun True p -> do
+			 maybeM (bcall $ FoldCoreRunCheckPlMb bglob modSearchKey astplan) dflt $ \(_,crr) -> do
+				r <- bRetAST modSearchKey astpipe crr
+				-- debug
+				-- ecu <- bcall $ EcuOf modNm
+				-- cpOutputSomeModule (const crr) astHandler'_CoreRun ASTFileContent_Text "-astpMbCheckCoreRunToCoreRun" Cfg.suffixDotlessOutputTextualCoreRun (ecuModNm ecu)
+				return r
+
+
+		 _ -> dflt
+
+	   cpTrPP TraceOn_BldPipe ["<<<<< bExecASTPMbChoice" >#< modSearchKey, "has res:" >#< show (isJust res), pp astplan]
+	   return res
+
+	 where
+	   dflt = return Nothing
+
+{-# LINE 1715 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+bLiftASTPipeToASTBuildPlan
+  :: (EHCCompileRunner m)
+  => BuildGlobal
+  -> EHCompilePhaseT m res
+  -> (PrevFileSearchKey -> ASTBuildPlan -> EHCompilePhaseT m res)
+  -> (PrevFileSearchKey -> ASTPipe      -> EHCompilePhaseT m res)
+bLiftASTPipeToASTBuildPlan bglob dflt f modSearchKey astpipe = do
+    maybeM (bcall $ BuildPlanPMb bglob modSearchKey astpipe) dflt $ \astplan ->
+      f modSearchKey astplan
+
+{-# LINE 1731 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Get AST from file, maybe...
+-- Wrapper around bcalls.
+bASTFromFileEither
+  :: forall res m .
+     (Typeable res, EHCCompileRunner m)
+  => PrevFileSearchKey              		--- ^ module name and possibly known path
+     -> Bool								--- ^ errors are returned instead of reported directly
+     -> (AlwaysEq ASTFileTimeHandleHow) 	--- ^ how to deal with timestamp
+     -> ASTType                         	--- ^ content type
+     -> ASTSuffixKey                        --- ^ suffix and content variation
+     -> ASTFileTiming                   	--- ^ timing (i.e. previous or current)
+     -> EHCompilePhaseT m
+          ( Either
+              ( String, [Err] )
+              ( res
+              , BRef m res
+              , ClockTime
+              )
+          )
+bASTFromFileEither modSearchKey yieldErr chkTimeStamp asttype skey tkey = do
+    let dflt = Left ("",[])
+    mbtm@(~(Just (tm,_))) <- bcall $ ModfTimeOfFile modSearchKey asttype skey tkey
+    if isJust mbtm
+      then do
+        -- TBD: faulty...
+        -- (ref :: BRef m res) <- bcall $ ASTRefFromFileMb modSearchKey chkTimeStamp asttype skey tkey
+        eithref <- bcall $ ASTRefFromFileEither modSearchKey yieldErr chkTimeStamp asttype skey tkey
+        case eithref of
+          Right ref -> fmap (maybe dflt (\ast -> Right (ast, ref, tm))) $ bderef' ref
+          Left  e   -> return $ Left e
+      else return dflt
+
+-- | Get AST from file, maybe...
+-- Wrapper around bcalls.
+bASTFromFileMb
+  :: -- forall res m .
+     (Typeable res, EHCCompileRunner m)
+  => PrevFileSearchKey              --- ^ module name and possibly known path
+     -> (AlwaysEq ASTFileTimeHandleHow) --- ^ how to deal with timestamp
+     -> ASTType                         --- ^ content type
+     -> ASTSuffixKey                        --- ^ suffix and content variation
+     -> ASTFileTiming                   --- ^ timing (i.e. previous or current)
+     -> EHCompilePhaseT m (Maybe (res, BRef m res))
+bASTFromFileMb modSearchKey chkTimeStamp asttype skey tkey =
+  fmap (either (const Nothing) (Just . tup123to12)) $ bASTFromFileEither modSearchKey False chkTimeStamp asttype skey tkey
+
+{-# LINE 1790 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Get possible Hs semantics
+bGetHsSemPlMb
+  :: (EHCCompileRunner m)
+  => BuildGlobal
+  -> PrevFileSearchKey
+  -> ASTBuildPlan
+  -> EHCompilePhaseT m
+       ( Maybe
+         ( AST_HS_Sem_Check             -- all semantics
+       ) )
+bGetHsSemPlMb bglob modSearchKey astplan = fmap (fmap extr) $ bcall $ FoldHsPlMb bglob modSearchKey astplan
+     where
+       extr (hsSem, _) = hsSem
+
+{-# LINE 1814 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Dereference an indirection into compilation state, possibly with a result, and a setter
+bderef'' :: forall res m . (Typeable res, EHCCompileRunner m) => BRef m res -> EHCompilePhaseT m (Maybe res, Maybe (res -> EHCompilePhaseT m ()))
+bderef'' bref = do
+    cr <- get
+    let st   = cr ^. crStateInfo
+        opts = st ^. crsiOpts
+
+    res@(r1,r2) <- case bref of
+      BRef_CRSI -> return (Just $ cr ^. crStateInfo, Nothing)
+
+      BRef_ExposedPackages -> return (Just $ pkgExposedPackages $ ehcOptPkgDb opts, Nothing)
+
+      BRef_ECU modNm -> do
+          mbecu <- bLookupECU modNm
+          return (mbecu, Just $ \ecu -> bUpdECU modNm (const ecu))
+
+      BRef_EHCOpts modNm -> do
+          mbecu <- bLookupECU modNm
+          let o = maybe opts id $ mbecu >>= ecuMbOpts
+          return (Just o, Nothing)
+
+      BRef_AST modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) asttype -> case asthandlerLookup asttype of
+          Just (hdlr :: ASTHandler' res) ->
+            case _asthdlrASTLens hdlr of
+              Just l -> do
+                ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+                return (ecu ^. l, Just $ \ast -> bUpdECU modNm $ l ^= Just ast)
+              _ -> dflt
+          _ -> dflt
+        where dflt = return (Nothing, Nothing)
+
+      BRef_ASTFile modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) asttype skey tkey -> case asthandlerLookup asttype of
+          Just (hdlr :: ASTHandler' res) -> case astsuffixLookup skey $ _asthdlrSuffixRel hdlr of
+            Just suffinfo -> case Map.lookup tkey $ _astsuffinfoASTLensMp suffinfo of
+              Just l -> do
+                ecu <- bcall $ EcuOfPrevNameAndPath modSearchKey
+                return (ecu ^. l, Just $ \ast -> bUpdECU modNm $ l ^= Just ast)
+              _ -> dflt
+            _ -> dflt
+          _ -> dflt
+        where dflt = return (Nothing, Nothing)
+    cpTr TraceOn_BldRef ["bderef'': ok?=" ++ show (isJust r1) ++ "," ++ show (isJust r2) ++ ", ref=" ++ show bref]
+    return res
+
+-- | Dereference an indirection into compilation state
+bderef' :: forall res m . (Typeable res, EHCCompileRunner m) => BRef m res -> EHCompilePhaseT m (Maybe res)
+bderef' bref = do
+    cpTr TraceOn_BldRef $ ["bderef' " ++ show bref]
+    fmap fst $ bderef'' bref
+
+-- | Dereference an indirection into compilation state
+bderef :: forall res m . (Typeable res, EHCCompileRunner m) => BRef m res -> EHCompilePhaseT m res
+bderef bref = do
+    fmap (panicJust $ "BuildFunction.Run.bderef " ++ show bref) $ bderef' bref
+
+{-# LINE 1881 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+type ASTFlowPred  = ASTPipe -> Maybe (ASTPipe,ASTAlreadyFlowIntoCRSIFromToInfo)
+type ASTFlowPred' = Bool -> ASTFlowPred
+
+{-# LINE 1886 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+-- | Is a particular flow of semantics allowed?
+bIsAllowedFlowPl'' :: ASTBuildPlan -> ASTFlowPred -> Maybe (ASTBuildPlan, (ASTPipe,ASTAlreadyFlowIntoCRSIFromToInfo))
+bIsAllowedFlowPl'' astplan astpred = astplFind astpred astplan
+
+-- | Is a particular flow of semantics allowed?
+bIsAllowedFlowPl' :: ASTBuildPlan -> ASTFlowPred -> Maybe (ASTBuildPlan, ASTAlreadyFlowIntoCRSIFromToInfo)
+bIsAllowedFlowPl' astplan astpred = fmap (\(pl,(_,fl)) -> (pl,fl)) $ bIsAllowedFlowPl'' astplan astpred
+
+-- | Is a particular flow of semantics allowed?
+bIsAllowedFlowPl :: ASTBuildPlan -> ASTFlowPred -> Maybe ASTBuildPlan
+bIsAllowedFlowPl astplan astpred = fmap fst $ bIsAllowedFlowPl' astplan astpred
+
+-- | Check whether a particular flow of semantics is allowed, and mark it to have occurred
+bAllowFlowPl
+  :: (EHCCompileRunner m)
+  => HsName
+  -> ASTBuildPlan
+  -> ASTSemFlowStage
+  -> ASTFlowPred
+  -> EHCompilePhaseT m (Maybe ASTBuildPlan)
+bAllowFlowPl modNm astplan flowstage astpred = do
+   ecu <- bcall (EcuOf modNm)
+   let fnd@(~(Just (astplanFnd,flowFnd)))
+               		= bIsAllowedFlowPl' astplan astpred
+       asttype 		= astpType $ _astbplPipe astplanFnd
+       key     		= (flowstage, Just flowFnd)
+       nyf     		= not $ ecuHasAlreadyFlowedWith asttype key ecu
+   cpTrPP TraceOn_BldFlow ["bAllowFlowPl" >#< modNm >#< flowstage, "astplan:" >#< astplan, "pred:" >#< fnd]
+   if isJust fnd && nyf
+     then do
+       bUpdAlreadyFlowIntoCRSIWith modNm asttype key
+       return $ Just astplanFnd
+     else return Nothing
+
+{-# LINE 1922 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+astpMbFromHSToEH, astpMbFromEHToCore, astpMbFromHS, astpMbFromEH :: ASTFlowPred'
+astpMbFromHSToEH top p = case p of {ASTPipe_Derived ASTType_EH p' | astpType p' == ASTType_HS -> Just (if' top p p', (Just ASTType_EH, ASTType_HS)); _ -> Nothing}
+astpMbFromEHToCore top p = case p of {ASTPipe_Derived ASTType_Core p' | astpType p' == ASTType_EH -> Just (if' top p p', (Just ASTType_Core, ASTType_EH)); _ -> Nothing}
+astpMbFromHS top p = case p of {ASTPipe_Derived _ p' | astpType p' == ASTType_HS -> Just (if' top p p', (Nothing, ASTType_HS)); _ -> Nothing}
+astpMbFromEH top p = case p of {ASTPipe_Derived _ p' | astpType p' == ASTType_EH -> Just (if' top p p', (Nothing, ASTType_EH)); _ -> Nothing}
+
+{-# LINE 1935 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+astpMbSrcCore, astpMbCachedCore, astpMbSrcCachedCore :: ASTFlowPred'
+astpMbSrcCore top p = case p of
+  ASTPipe_Src ASTFileUse_Src _ ASTType_Core
+    -> Just (if' top p p, (Nothing, ASTType_Core))
+  _ -> Nothing
+
+astpMbCachedCore top p = case p of
+  ASTPipe_Src ASTFileUse_Cache _ ASTType_Core
+    -> Just (if' top p p, (Nothing, ASTType_Core))
+  _ -> Nothing
+
+astpMbSrcCachedCore = astpMbSrcCore <|||> astpMbCachedCore
+
+{-# LINE 1950 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+astpMbSrcCoreRun, astpMbCachedCoreRun, astpMbSrcCachedCoreRun :: ASTFlowPred'
+astpMbSrcCoreRun top p = case p of
+  ASTPipe_Src ASTFileUse_Src _ ASTType_CoreRun
+    -> Just (if' top p p, (Nothing, ASTType_CoreRun))
+  _ -> Nothing
+
+astpMbCachedCoreRun top p = case p of
+  ASTPipe_Src ASTFileUse_Cache _ ASTType_CoreRun
+    -> Just (if' top p p, (Nothing, ASTType_CoreRun))
+  _ -> Nothing
+
+astpMbSrcCachedCoreRun = astpMbSrcCoreRun <|||> astpMbCachedCoreRun
+
+{-# LINE 1965 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+astpMbFromCoreToCoreRun :: ASTFlowPred'
+astpMbFromCoreToCoreRun top p = case p of {ASTPipe_Derived ASTType_CoreRun p' | astpType p' == ASTType_Core -> Just (if' top p p', (Just ASTType_CoreRun, ASTType_Core)); _ -> Nothing}
+
+{-# LINE 1970 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+astpMbCheckCoreRunToCoreRun :: ASTFlowPred'
+astpMbCheckCoreRunToCoreRun top p = case p of {ASTPipe_Trf ASTType_CoreRun ASTTrf_Check p' | astpType p' == ASTType_CoreRun -> Just (if' top p p', (Just ASTType_CoreRun, ASTType_CoreRun)); _ -> Nothing}
+
+{-# LINE 1979 "src/ehc/EHC/BuildFunction/Run.chs" #-}
+f1 <||>  f2 = \a   -> f1 a   <|> f2 a
+f1 <|||> f2 = \a b -> f1 a b <|> f2 a b
 
diff --git a/src/UHC/Light/Compiler/EHC/Common.hs b/src/UHC/Light/Compiler/EHC/Common.hs
--- a/src/UHC/Light/Compiler/EHC/Common.hs
+++ b/src/UHC/Light/Compiler/EHC/Common.hs
@@ -4,6 +4,7 @@
 , module UHC.Util.CompileRun2, module UHC.Util.Pretty, module UHC.Util.FPath, module UHC.Util.Utils
 , module UHC.Light.Compiler.Base.Common, module UHC.Light.Compiler.Base.HsName.Builtin, module UHC.Light.Compiler.Opts
 , module UHC.Light.Compiler.Error, module UHC.Light.Compiler.Error.Pretty
+, module UHC.Light.Compiler.EHC.ASTPipeline
 , module UHC.Light.Compiler.Gam.Full
 , HSState (..)
 , EHState (..)
@@ -15,14 +16,13 @@
 , ecuStateIsCoreRun
 , EHCompileUnitKind (..)
 , ecuStateToKind
-, ASTType (..)
-, ASTFileContent (..)
-, ASTHandlerKey
-, ASTFileUse (..)
-, ASTSuffixKey
-, ASTFileTiming (..)
+, ASTFileNameOverride (..), astFileNameOverrideMbFPath
+, ASTFileSuffOverride (..)
+, ASTFileTimeHandleHow (..)
 , FileSuffInitState
 , PrevSearchInfo
+, FileSearchKey (..)
+, PrevFileSearchKey (..), updPrevFileSearchKeyWithName, mkPrevFileSearchKeyWithName, mkPrevFileSearchKeyWithNameMbPrev, mkPrevFileSearchKeyWithNamePrev
 , FinalCompileHow (..)
 , mkShellCmd, mkShellCmd', showShellCmd
 , mkInOrOutputFPathDirFor
@@ -33,6 +33,7 @@
 , hsstateIsLiteral
 , hsstateShowLit
 , hsstateNext
+, GetMeta (..), allGetMeta
 , CState (..), OState (..)
 , prevSearchInfoAdaptedSearchPath )
 where
@@ -51,6 +52,7 @@
 import UHC.Light.Compiler.Error
 import UHC.Light.Compiler.Error.Pretty
 import GHC.Generics
+import UHC.Light.Compiler.EHC.ASTPipeline
 import UHC.Light.Compiler.Gam.Full
 import UHC.Light.Compiler.Opts.CommandLine
 import qualified UHC.Util.RelMap as Rel
@@ -60,10 +62,10 @@
 
 
 
-{-# LINE 40 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 43 "src/ehc/EHC/Common.chs" #-}
 -- dummy, so module is not empty for initial variants, and exports will take effect
 
-{-# LINE 50 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 53 "src/ehc/EHC/Common.chs" #-}
 data HSState
   = HSStart                 -- starting from .hs
   | HSAllSem                -- done all semantics for .hs
@@ -77,19 +79,19 @@
   | LHSOnlyImports          -- done imports from .lhs
   deriving (Show,Eq)
 
-{-# LINE 71 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 74 "src/ehc/EHC/Common.chs" #-}
 hsstateIsLiteral :: HSState -> Bool
 hsstateIsLiteral LHSStart       = True
 hsstateIsLiteral LHSOnlyImports = True
 hsstateIsLiteral _              = False
 
-{-# LINE 80 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 83 "src/ehc/EHC/Common.chs" #-}
 hsstateShowLit :: HSState -> String
 hsstateShowLit LHSStart       = "Literal"
 hsstateShowLit LHSOnlyImports = "Literal"
 hsstateShowLit _              = ""
 
-{-# LINE 91 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 94 "src/ehc/EHC/Common.chs" #-}
 hsstateNext :: HSState -> HSState
 hsstateNext HSStart       = HSOnlyImports
 hsstateNext HIStart       = HIOnlyImports
@@ -97,13 +99,13 @@
 hsstateNext LHSStart      = LHSOnlyImports
 hsstateNext st            = st
 
-{-# LINE 104 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 107 "src/ehc/EHC/Common.chs" #-}
 data EHState
   = EHStart
   | EHAllSem
   deriving (Show,Eq)
 
-{-# LINE 113 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 116 "src/ehc/EHC/Common.chs" #-}
 -- | State for .c files
 data CState
   = CStart
@@ -116,7 +118,7 @@
   | OAllSem
   deriving (Show,Eq)
 
-{-# LINE 129 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 132 "src/ehc/EHC/Common.chs" #-}
 data CRState
   = CRStartBinary
   | CRStartText
@@ -124,15 +126,15 @@
   | CRAllSem
   deriving (Show,Eq)
 
-{-# LINE 138 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 141 "src/ehc/EHC/Common.chs" #-}
 data CRRState
   = CRRStartBinary
-  -- | CRRStartText
+  | CRRStartText
   | CRROnlyImports
   | CRRAllSem
   deriving (Show,Eq)
 
-{-# LINE 149 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 152 "src/ehc/EHC/Common.chs" #-}
 data EHCompileUnitState
   = ECUS_Unknown
   | ECUS_Haskell !HSState
@@ -145,7 +147,7 @@
   | ECUS_Fail
   deriving (Show,Eq)
 
-{-# LINE 169 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 172 "src/ehc/EHC/Common.chs" #-}
 -- | The final state
 ecuStateFinalDestination :: (EHCompileUnitState -> EHCompileUnitState) -> EHCompileUnitState -> EHCompileUnitState
 ecuStateFinalDestination postModf
@@ -158,28 +160,28 @@
         n (ECUS_CoreRun _) = ECUS_CoreRun CRRAllSem
         n _                = ECUS_Fail
 
-{-# LINE 189 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 192 "src/ehc/EHC/Common.chs" #-}
 -- | Is compilation from Core source
 ecuStateIsCore :: EHCompileUnitState -> Bool
 ecuStateIsCore st = case st of
   ECUS_Core _ -> True
   _           -> False
 
-{-# LINE 199 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 202 "src/ehc/EHC/Common.chs" #-}
 -- | Is compilation from CoreRun source
 ecuStateIsCoreRun :: EHCompileUnitState -> Bool
 ecuStateIsCoreRun st = case st of
   ECUS_CoreRun _ -> True
   _              -> False
 
-{-# LINE 213 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 216 "src/ehc/EHC/Common.chs" #-}
 data EHCompileUnitKind
   = EHCUKind_HS     -- Haskell: .hs .lhs .hi
   | EHCUKind_C      -- C: .c
   | EHCUKind_None   -- Nothing
   deriving Eq
 
-{-# LINE 223 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 226 "src/ehc/EHC/Common.chs" #-}
 ecuStateToKind :: EHCompileUnitState -> EHCompileUnitKind
 ecuStateToKind s
   = case s of
@@ -187,62 +189,50 @@
       ECUS_C       _ -> EHCUKind_C
       _              -> EHCUKind_None
 
-{-# LINE 238 "src/ehc/EHC/Common.chs" #-}
--- | An 'Enum' of all types of ast we can deal with
-data ASTType
-  = ASTType_HS
-  | ASTType_EH
-  | ASTType_HI
-  | ASTType_Core
-  | ASTType_CoreRun
-  | ASTType_C
-  | ASTType_O
-  | ASTType_Unknown
-  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded, Show)
-
-instance Hashable ASTType
+{-# LINE 241 "src/ehc/EHC/Common.chs" #-}
+-- | Overriding an automatically chosen name (based on module name)
+data ASTFileNameOverride
+  = ASTFileNameOverride_AsIs					-- ^ fully as is
+  | ASTFileNameOverride_FPath	 		FPath	-- ^ with FPath as replacement
+  | ASTFileNameOverride_FPathAsTop	 	FPath	-- ^ with FPath as top level module path
+  deriving (Eq, Ord, Typeable, Generic)
 
-{-# LINE 271 "src/ehc/EHC/Common.chs" #-}
--- | File content variations of ast we can deal with (in principle)
-data ASTFileContent
-  = ASTFileContent_Text
-  | ASTFileContent_LitText
-  | ASTFileContent_Binary
-  | ASTFileContent_Unknown
-  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded, Show)
+instance Show ASTFileNameOverride where
+  show (ASTFileNameOverride_AsIs         ) = "AsIs"
+  show (ASTFileNameOverride_FPath      fp) = fpathToStr fp ++ "(Overr)"
+  show (ASTFileNameOverride_FPathAsTop fp) = fpathToStr fp ++ "(^Overr)"
 
-instance Hashable ASTFileContent
+instance PP ASTFileNameOverride where
+  pp = pp . show
 
-{-# LINE 283 "src/ehc/EHC/Common.chs" #-}
--- | Combination of 'ASTType' and 'ASTFileContent' as key into map of handlers
-type ASTHandlerKey = (ASTType, ASTFileContent)
+instance Hashable ASTFileNameOverride
 
-{-# LINE 288 "src/ehc/EHC/Common.chs" #-}
--- | File usage variations of ast
-data ASTFileUse
-  = ASTFileUse_Cache		-- ^ internal use cache on file
-  | ASTFileUse_Dump			-- ^ output: dumped, possibly usable as src later on
-  | ASTFileUse_Target		-- ^ output: as target of compilation
-  | ASTFileUse_Src			-- ^ input: src file
-  | ASTFileUse_Unknown		-- ^ unknown
-  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded, Show)
+-- | Possibly extract FPath
+astFileNameOverrideMbFPath :: ASTFileNameOverride -> Maybe (FPath,Bool)
+astFileNameOverrideMbFPath (ASTFileNameOverride_FPath 		fp) = Just (fp,False)
+astFileNameOverrideMbFPath (ASTFileNameOverride_FPathAsTop 	fp) = Just (fp,True)
+astFileNameOverrideMbFPath  _									= Nothing
 
-instance Hashable ASTFileUse
+{-# LINE 266 "src/ehc/EHC/Common.chs" #-}
+-- | Overriding an automatically chosen name (based on module name)
+data ASTFileSuffOverride
+  = ASTFileSuffOverride_AsIs							-- ^ fully as is
+  | ASTFileSuffOverride_Suff	 		ASTSuffixKey	-- ^ with suff from key as replacement
+  deriving (Eq, Ord, Typeable, Generic, Show)
 
-{-# LINE 301 "src/ehc/EHC/Common.chs" #-}
--- | Key for allowed suffixes, multiples allowed to cater for different suffixes
-type ASTSuffixKey = (ASTFileContent, ASTFileUse)
+instance Hashable ASTFileSuffOverride
 
-{-# LINE 306 "src/ehc/EHC/Common.chs" #-}
--- | File timing variations of ast
-data ASTFileTiming
-  = ASTFileTiming_Prev		-- ^ previously generated
-  | ASTFileTiming_Current	-- ^ current one
-  deriving (Eq, Ord, Enum, Typeable, Generic, Bounded, Show)
+{-# LINE 280 "src/ehc/EHC/Common.chs" #-}
+-- | How to handle possibly previously timing info of file
+data ASTFileTimeHandleHow
+  = ASTFileTimeHandleHow_Ignore			-- ^ just don't do anything with it
+  | ASTFileTimeHandleHow_AbsenceIsError	-- ^ if not there, file is not there, error
+  | ASTFileTimeHandleHow_AbsenceIgnore	-- ^ if not there, file is not there, ignore
+  deriving (Eq, Ord, Typeable, Generic, Show)
 
-instance Hashable ASTFileTiming
+instance Hashable ASTFileTimeHandleHow
 
-{-# LINE 320 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 295 "src/ehc/EHC/Common.chs" #-}
 -- | initial state/settings categorizing the kind of file/ast dealing with
 type FileSuffInitState =
      ( EHCompileUnitState
@@ -251,10 +241,11 @@
      , ASTFileUse
      )
 
-{-# LINE 334 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 309 "src/ehc/EHC/Common.chs" #-}
+-- | Info returned from first module/import analysis required for imports done from that module
 type PrevSearchInfo = (HsName,(FPath,FileLoc))
 
-{-# LINE 338 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 314 "src/ehc/EHC/Common.chs" #-}
 -- | strip tail part corresponding to module name, and use it to search as well
 prevSearchInfoAdaptedSearchPath :: Maybe PrevSearchInfo -> FileLocPath -> FileLocPath
 prevSearchInfoAdaptedSearchPath (Just (prevNm,(prevFp,prevLoc))) searchPath
@@ -267,12 +258,85 @@
 	  _ -> searchPath
 prevSearchInfoAdaptedSearchPath _ searchPath = searchPath
 
-{-# LINE 356 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 328 "src/ehc/EHC/Common.chs" #-}
+-- | Search key for a file to be compiled
+data FileSearchKey =
+  FileSearchKey
+    { _fsrchNm			:: HsName						-- ^ module name
+    , _fsrchOverr		:: ASTFileNameOverride			-- ^ possibly an alternate/overriding file path
+    }
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable FileSearchKey
+
+{-
+instance Eq FileSearchKey where
+  k1 == k2
+    |
+    where mbfp1@(~(Just fp)) = astFileNameOverrideMbFPath $ _fsrchOverr k1
+-}
+
+instance Show FileSearchKey where
+  show (FileSearchKey n ov) = case ov of
+    ASTFileNameOverride_AsIs -> show n
+    _                        -> show ov
+
+instance PP FileSearchKey where
+  pp = pp . show
+
+{-# LINE 355 "src/ehc/EHC/Common.chs" #-}
+-- | Full search key for a file to be compiled, possibly including (previous search) context in which search is done
+data PrevFileSearchKey =
+  PrevFileSearchKey
+    { _pfsrchKey			:: FileSearchKey			-- ^ module and possible file name info
+    , _pfsrchMbCxtInfo		:: Maybe PrevSearchInfo		-- ^ previous search context
+    }
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable PrevFileSearchKey
+
+instance Show PrevFileSearchKey where
+  show (PrevFileSearchKey k mc) = show k ++ maybe "" (\c -> "(" ++ show c ++ ")") mc
+
+instance PP PrevFileSearchKey where
+  pp = pp . show
+
+updPrevFileSearchKeyWithName :: HsName -> PrevFileSearchKey -> PrevFileSearchKey
+updPrevFileSearchKeyWithName n (PrevFileSearchKey (FileSearchKey _ f) p) = PrevFileSearchKey (FileSearchKey n f) p
+
+mkPrevFileSearchKeyWithName :: HsName -> PrevFileSearchKey
+mkPrevFileSearchKeyWithName n = mkPrevFileSearchKeyWithNameMbPrev n Nothing
+
+mkPrevFileSearchKeyWithNameMbPrev :: HsName -> Maybe PrevSearchInfo -> PrevFileSearchKey
+mkPrevFileSearchKeyWithNameMbPrev n mp = PrevFileSearchKey (FileSearchKey n ASTFileNameOverride_AsIs) mp
+
+mkPrevFileSearchKeyWithNamePrev :: HsName -> PrevSearchInfo -> PrevFileSearchKey
+mkPrevFileSearchKeyWithNamePrev n p = mkPrevFileSearchKeyWithNameMbPrev n (Just p)
+
+{-# LINE 393 "src/ehc/EHC/Common.chs" #-}
 data FinalCompileHow
   = FinalCompile_Module
   | FinalCompile_Exec
 
-{-# LINE 366 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 403 "src/ehc/EHC/Common.chs" #-}
+data GetMeta
+  = GetMeta_Src
+  | GetMeta_HI
+  | GetMeta_Core
+  | GetMeta_CoreRun
+  | GetMeta_Dir
+  deriving (Eq,Ord)
+
+allGetMeta
+  = [ GetMeta_Src
+    , GetMeta_HI
+    , GetMeta_Core
+    , GetMeta_CoreRun
+    , GetMeta_Dir
+    ]
+
+
+{-# LINE 436 "src/ehc/EHC/Common.chs" #-}
 mkShellCmd' :: [Cmd] -> FilePath -> CmdLineOpts -> (FilePath,[String])
 mkShellCmd' forCmds cmdStr o = (cmdStr, showCmdLineOpts' forCmds o)
 
@@ -282,7 +346,7 @@
 showShellCmd :: (FilePath,[String]) -> String
 showShellCmd (cmd,args) = concat $ intersperse " " $ [cmd] ++ args
 
-{-# LINE 381 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 451 "src/ehc/EHC/Common.chs" #-}
 mkInOrOutputFPathDirFor :: FPATH nm => InOrOutputFor -> EHCOpts -> nm -> FPath -> String -> (FPath,Maybe String)
 mkInOrOutputFPathDirFor inoutputfor opts modNm fp suffix
   = (fpathSetSuff suffix fp', d)
@@ -301,16 +365,16 @@
                            where d' = filePathUnPrefix d
                     _      -> (fp,Nothing)
 
-{-# LINE 406 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 476 "src/ehc/EHC/Common.chs" #-}
 mkInOrOutputFPathFor :: FPATH nm => InOrOutputFor -> EHCOpts -> nm -> FPath -> String -> FPath
 mkInOrOutputFPathFor inoutputfor opts modNm fp suffix
   = fst $ mkInOrOutputFPathDirFor inoutputfor opts modNm fp suffix
 
-{-# LINE 412 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 482 "src/ehc/EHC/Common.chs" #-}
 mkOutputFPath :: FPATH nm => EHCOpts -> nm -> FPath -> String -> FPath
 mkOutputFPath = mkInOrOutputFPathFor OutputFor_Module
 
-{-# LINE 421 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 491 "src/ehc/EHC/Common.chs" #-}
 -- | FPath for per module output
 mkPerModuleOutputFPath :: EHCOpts -> Bool -> HsName -> FPath -> String -> FPath
 mkPerModuleOutputFPath opts doSepBy_ modNm fp suffix
@@ -322,7 +386,7 @@
                where nm_ = mkOutputFPath opts (hsnMapQualified (const base) m) (fpathSetBase base f) suffix
                          where base = hsnShow "_" "_" m
 
-{-# LINE 438 "src/ehc/EHC/Common.chs" #-}
+{-# LINE 508 "src/ehc/EHC/Common.chs" #-}
 -- | FPath for final executable, with possible suffix (and forcing flag, even on given exec)
 mkPerExecOutputFPath :: EHCOpts -> HsName -> FPath -> Maybe (String, Bool) -> FPath
 mkPerExecOutputFPath opts modNm fp mbSuffix
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Cleanup.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Cleanup.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Cleanup.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Cleanup.hs
@@ -45,7 +45,6 @@
   = cpSeq [cl m | m <- modNmL]
   where cl m = cpUpdCU m
                   (\e -> e { _ecuMbCore            = Nothing
-                           , _ecuMbCoreSem         = Nothing
                            , _ecuMbCoreSemMod      = Nothing
                            }
                   )
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Common.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Common.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Common.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Common.hs
@@ -3,6 +3,7 @@
 where
 import qualified Data.Map as Map
 import qualified Data.Set as Set
+import UHC.Util.Lens
 import qualified UHC.Util.FastSeq as Seq
 import Control.Monad.State
 import UHC.Light.Compiler.EHC.Common
@@ -14,13 +15,14 @@
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
 import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
 
-{-# LINE 43 "src/ehc/EHC/CompilePhase/Common.chs" #-}
+
+{-# LINE 45 "src/ehc/EHC/CompilePhase/Common.chs" #-}
 -- | Compute impl info for module codegen
 cpGenModuleImportExportImpl :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ModuleImportExportImpl
 cpGenModuleImportExportImpl modNm
   = do { cr <- get
        ; cpMsg modNm VerboseDebug "cpGenModuleImportExportImpl"
-       ; impNmL <- cpGenImpNmInfo modNm
+       ; impNmL <- cpGenImportNameInfo modNm
        ; let (ecu,crsi,opts,fp) = crBaseInfo modNm cr
              isWholeProg = ehcOptOptimizationScope opts > OptimizationScope_PerModule
              expNmFldMp | ecuIsMainMod ecu = Map.empty
@@ -34,8 +36,7 @@
        -- ; liftIO $ putStrLn $ "cpGenModuleImportExportImpl modOffMp " ++ show modOffMp
        -- ecuHSDeclImpNmS ecu, ecuHIDeclImpNmS ecu, ecuHIUsedImpNmS ecu
        ; return $ emptyModuleImportExportImpl
-           { mieimplLamMp 			= Core2GrSem.lamMp_Inh_CodeAGItf $ crsiCoreInh crsi
-           , mieimplUsedModNmL 		= if ecuIsMainMod ecu then [ m | (m,_) <- sortOnLazy snd $ Map.toList $ Map.map fst modOffMp ] else []
+           { mieimplUsedModNmL 		= if ecuIsMainMod ecu then [ m | (m,_) <- sortOnLazy snd $ Map.toList $ Map.map fst modOffMp ] else []
            , mieimplHsName2FldMpMp 	= Map.fromList
                [ (n,(o,mp))
                | (n,o) <- refGen 0 1 impNmL
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/CompileC.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/CompileC.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/CompileC.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/CompileC.hs
@@ -1,5 +1,7 @@
 module UHC.Light.Compiler.EHC.CompilePhase.CompileC
-( cpCompileWithGCC
+( gccDefs
+, cpCompileWithGCC
+, gccInclDirs
 , cpPreprocessWithCPP )
 where
 import Data.Char
@@ -8,7 +10,7 @@
 import qualified Data.Map as Map
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.CompileRun
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import UHC.Light.Compiler.Opts.CommandLine
 import qualified UHC.Light.Compiler.Config as Cfg
 import UHC.Light.Compiler.EHC.Environment
@@ -124,11 +126,12 @@
          }
 
 {-# LINE 196 "src/ehc/EHC/CompilePhase/CompileC.chs" #-}
-cpPreprocessWithCPP :: EHCCompileRunner m => [PkgModulePartition] -> HsName -> EHCompilePhaseT m ()
+cpPreprocessWithCPP :: EHCCompileRunner m => [PkgModulePartition] -> HsName -> EHCompilePhaseT m FPath
 cpPreprocessWithCPP pkgKeyDirL modNm
   = do { cr <- get
        ; let  (ecu,crsi,opts,fp) = crBaseInfo modNm cr
               fpCPP = fpathSetSuff {- mkOutputFPath opts modNm fp -} (maybe "" (\s -> s ++ "-") (fpathMbSuff fp) ++ "cpp") fp
+              -- fpCPP = fpathSetBase {- mkOutputFPath opts modNm fp -} (fpathBase fp ++ "-cpp") fp
        ; {- when (  ehcOptCPP opts
               || modNm == hsnModIntlBase      -- 20080211, AD: builtin hack to preprocess EHC.Prelude with cpp, for now, to avoid implementation of pragmas
               ) -}
@@ -156,6 +159,7 @@
                              })
                   -- ; cpUpdCU modNm (ecuStoreSrcFilePath fpCPP)
                   ; cpUpdCU modNm (ecuStoreCppFilePath fpCPP)
+                  ; return fpCPP
                   })
        }
 
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/FlowBetweenPhase.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/FlowBetweenPhase.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/FlowBetweenPhase.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/FlowBetweenPhase.hs
@@ -3,7 +3,7 @@
 , cpFlowHsSem1
 , cpFlowHISem
 , cpFlowCoreModSem
-, cpFlowCoreSemAfterFold, cpFlowCoreSemBeforeFold
+, cpFlowCoreSemBeforeFold
 , cpFlowHILamMp
 , cpFlowOptim )
 where
@@ -14,7 +14,7 @@
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
 import UHC.Light.Compiler.EHC.CompileRun
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import qualified UHC.Light.Compiler.HS.MainAG as HSSem
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
 import UHC.Light.Compiler.LamInfo
@@ -25,8 +25,6 @@
 import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
 import qualified UHC.Light.Compiler.HI as HI
 import UHC.Light.Compiler.CHR.Solve (chrStoreUnion)
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Light.Compiler.EHC.CompilePhase.Module(cpUpdHiddenExports)
 
@@ -41,7 +39,7 @@
 
 
 
-{-# LINE 78 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
+{-# LINE 82 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 prepFlow :: a -> a
 prepFlow x | x `seq` True = x
 -- prepFlow = id
@@ -49,7 +47,7 @@
 gamUnionFlow :: Ord k => Gam k v -> Gam k v -> Gam k v
 gamUnionFlow = gamUnion
 
-{-# LINE 99 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
+{-# LINE 103 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 cpFlowHsSem1 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFlowHsSem1 modNm
   =  do  {  cr <- get
@@ -80,6 +78,7 @@
                                    else \k n -> idQualGamReplacement (EHSem.idQualGam_Inh_AGItf ehInh') k (hsnQualified n)
          ;  when (isJust (_ecuMbHSSem ecu))
                  (do { cpUpdSI (\crsi -> crsi {_crsiHSInh = hsInh', _crsiEHInh = ehInh', _crsiOpts = opts'})
+                     ; bUpdAlreadyFlowIntoCRSI modNm ASTType_HS ASTSemFlowStage_BetweenModule
                      ; cpUpdCU modNm $! ecuStoreHIInfo hii'
                      -- ; liftIO $ putStrLn (forceEval hii' `seq` "cpFlowHsSem1")
                      })
@@ -87,14 +86,14 @@
          }
 
 
-{-# LINE 142 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
+{-# LINE 147 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 cpFlowEHSem1 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFlowEHSem1 modNm
   =  do  {  cr <- get
          ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
                  ehSem    = panicJust "cpFlowEHSem1.ehSem" $ _ecuMbEHSem ecu
                  ehInh    = crsi ^. crsiEHInh
-                 coreInh  = crsiCoreInh crsi
+                 cenv     = crsi ^. crsiCEnv
                  dg       = prepFlow $! EHSem.gathDataGam_Syn_AGItf    ehSem
                  vg       = prepFlow $! EHSem.gathValGam_Syn_AGItf     ehSem
                  tg       = prepFlow $! EHSem.gathTyGam_Syn_AGItf      ehSem
@@ -105,13 +104,17 @@
                  dfg      = prepFlow $! EHSem.gathClDfGam_Syn_AGItf    ehSem
                  cs       = prepFlow $! EHSem.gathChrStore_Syn_AGItf   ehSem
                  lm       = prepFlow $! EHSem.gathLamMp_Syn_AGItf      ehSem
+                 cenv'    = ( cenvDataGam ^$= (dg `gamUnionFlow`) )
+                          . ( cenvLamMp   ^$= (lm `lamMpUnionBindAspMp`) )		-- assumption: no duplicates, otherwise merging as done later has to be done
+                          $ cenv
                  mmi      = panicJust "cpFlowEHSem1.crsiModMp" $ Map.lookup modNm $ crsiModMp crsi
                  hii      = ecu ^. ecuHIInfo
                  mentrelFilterMp
                           = mentrelFilterMpUnions [ EHSem.gathMentrelFilterMp_Syn_AGItf ehSem, mentrelToFilterMp' False [modNm] (mmiExps mmi) ]
                  usedImpS = mentrelFilterMpModuleNames mentrelFilterMp
                  ehInh'   = ehInh
-                              { EHSem.dataGam_Inh_AGItf    = dg  `gamUnionFlow`  EHSem.dataGam_Inh_AGItf    ehInh
+                              { -- EHSem.dataGam_Inh_AGItf    = dg  `gamUnionFlow`  EHSem.dataGam_Inh_AGItf    ehInh
+                                EHSem.dataGam_Inh_AGItf    = cenv' ^. cenvDataGam
                               , EHSem.valGam_Inh_AGItf     = vg  `gamUnionFlow`  EHSem.valGam_Inh_AGItf     ehInh
                               , EHSem.tyGam_Inh_AGItf      = tg  `gamUnionFlow`  EHSem.tyGam_Inh_AGItf      ehInh
                               , EHSem.tyKiGam_Inh_AGItf    = tkg `gamUnionFlow`  EHSem.tyKiGam_Inh_AGItf    ehInh
@@ -135,21 +138,21 @@
                               , HI.hiiCHRStore      = {- HI.hiiScopedPredStoreToList -} cs
                               -- , HI.hiiLamMp         = lm
                               }
-                 coreInh' = coreInh
-                              { Core2GrSem.dataGam_Inh_CodeAGItf = EHSem.dataGam_Inh_AGItf     ehInh'
-                              , Core2GrSem.lamMp_Inh_CodeAGItf   = lm `lamMpUnionBindAspMp` Core2GrSem.lamMp_Inh_CodeAGItf coreInh		-- assumption: no duplicates, otherwise merging as done later has to be done
-                              }
          ;  when (isJust (_ecuMbEHSem ecu))
                  (do { cpUpdSI
                                (\crsi -> crsi
-                                   { crsiCoreInh = coreInh', _crsiEHInh = ehInh' }
+                                   { _crsiCEnv = cenv'
+                                   , _crsiEHInh = ehInh'
+                                   }
                                )
+                     ; bUpdAlreadyFlowIntoCRSI modNm ASTType_EH ASTSemFlowStage_BetweenModule
                      ; cpUpdCU modNm ( ecuStoreHIInfo hii'
                                      . ecuStoreHIUsedImpS usedImpS
                                      . ecuStoreUsedNames mentrelFilterMp
                                      )
                      -- put back additional hidden exports
                      ; cpUpdHiddenExports modNm $ Seq.toList $ EHSem.gathHiddenExports_Syn_AGItf ehSem
+                     ; bUpdAlreadyFlowIntoCRSI modNm ASTType_EH ASTSemFlowStage_PerModule
                      })
          }
 
@@ -161,12 +164,17 @@
                  -- hiSem  = panicJust "cpFlowHISem.hiSem" $ ecuMbPrevHISem ecu
                  hiInfo = panicJust "cpFlowHISem.hiInfo" $ _ecuMbPrevHIInfo ecu
                  ehInh  = crsi ^. crsiEHInh
+                 cenv   = crsi ^. crsiCEnv
+                 cenv'  = ( cenvDataGam ^$= (HI.hiiDataGam hiInfo `gamUnionFlow`) )
+                        . ( cenvLamMp   ^$= (HI.hiiLamMp hiInfo `lamMpUnionBindAspMp`) )
+                        $ cenv
                  ehInh' = ehInh
                             { EHSem.valGam_Inh_AGItf     = (HI.hiiValGam     hiInfo) `gamUnionFlow`  EHSem.valGam_Inh_AGItf     ehInh
                             , EHSem.tyGam_Inh_AGItf      = (HI.hiiTyGam      hiInfo) `gamUnionFlow`  EHSem.tyGam_Inh_AGItf      ehInh
                             , EHSem.tyKiGam_Inh_AGItf    = (HI.hiiTyKiGam    hiInfo) `gamUnionFlow`  EHSem.tyKiGam_Inh_AGItf    ehInh
                             , EHSem.polGam_Inh_AGItf     = (HI.hiiPolGam     hiInfo) `gamUnionFlow`  EHSem.polGam_Inh_AGItf     ehInh
-                            , EHSem.dataGam_Inh_AGItf    = (HI.hiiDataGam    hiInfo) `gamUnionFlow`  EHSem.dataGam_Inh_AGItf    ehInh
+                            -- , EHSem.dataGam_Inh_AGItf    = (HI.hiiDataGam    hiInfo) `gamUnionFlow`  EHSem.dataGam_Inh_AGItf    ehInh
+                            , EHSem.dataGam_Inh_AGItf    = cenv' ^. cenvDataGam
                             , EHSem.clGam_Inh_AGItf      = (HI.hiiClGam      hiInfo) `gamUnionFlow`  EHSem.clGam_Inh_AGItf      ehInh
                             , EHSem.clDfGam_Inh_AGItf    = (HI.hiiClDfGam    hiInfo) `gamUnionFlow`  EHSem.clDfGam_Inh_AGItf    ehInh
                             , EHSem.chrStore_Inh_AGItf   = (HI.hiiCHRStore   hiInfo) `chrStoreUnion` EHSem.chrStore_Inh_AGItf   ehInh
@@ -176,61 +184,33 @@
                             { HSSem.fixityGam_Inh_AGItf  = (HI.hiiFixityGam    hiInfo) `gamUnionFlow` HSSem.fixityGam_Inh_AGItf hsInh
                             , HSSem.idGam_Inh_AGItf      = (HI.hiiIdDefOccGam  hiInfo) `gamUnionFlow` HSSem.idGam_Inh_AGItf     hsInh
                             }
-                 coreInh  = crsiCoreInh crsi
-                 coreInh' = coreInh
-                              { Core2GrSem.lamMp_Inh_CodeAGItf   = (HI.hiiLamMp hiInfo) `lamMpUnionBindAspMp` Core2GrSem.lamMp_Inh_CodeAGItf coreInh
-                              }
                  optim    = crsiOptim crsi
                  optim'   = optim
          ;  when (isJust (_ecuMbPrevHIInfo ecu))
                  (do { cpUpdSI (\crsi -> crsi { _crsiEHInh = ehInh'
-                                              , _crsiHSInh = {- tr "cpFlowHISem.crsiHSInh" (pp $ HSSem.idGam_Inh_AGItf hsInh') $ -} hsInh'
-                                              , crsiCoreInh = coreInh'
+                                              , _crsiHSInh = hsInh'
+                                              , _crsiCEnv  = cenv'
                                               , crsiOptim = optim'
                                               })
                      })
          }
 
-{-# LINE 297 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
+{-# LINE 296 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 -- | Flow info after Core source check
 cpFlowCoreModSem :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFlowCoreModSem modNm
   =  do  {  cr <- get
          ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
-                 coreInh  = crsiCoreInh crsi
                  mbCoreModSem = _ecuMbCoreSemMod ecu
          ;  when (isJust mbCoreModSem) $ do
               { let coreModSem = fromJust mbCoreModSem
-                    coreInh' = coreInh
-                      { Core2GrSem.dataGam_Inh_CodeAGItf = Core2GrSem.dataGam_Inh_CodeAGItf coreInh `gamUnionFlow` Core2ChkSem.gathDataGam_Syn_CodeAGItf coreModSem
-                      }
-              ; cpUpdSI (\crsi -> crsi { crsiCoreInh = coreInh' })
+                    cenv       = cenvDataGam ^$= (`gamUnionFlow` Core2ChkSem.gathDataGam_Syn_CodeAGItf coreModSem) $ crsi ^. crsiCEnv
+              ; cpUpdSI $
+                    ( crsiCEnv ^= cenv )
               }
          }
 
-{-# LINE 317 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
-cpFlowCoreSemAfterFold :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpFlowCoreSemAfterFold modNm
-  =  do  {  cr <- get
-         ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
-                 coreSem  = panicJust "cpFlowCoreSemAfterFold.coreSem" $ _ecuMbCoreSem ecu
-
-                 coreInh  = crsiCoreInh crsi
-                 hii      = ecu ^. ecuHIInfo
-                 am       = prepFlow $! Core2GrSem.gathLamMp_Syn_CodeAGItf coreSem
-                 coreInh' = coreInh
-                              { Core2GrSem.lamMp_Inh_CodeAGItf   = am `lamMpUnionBindAspMp` Core2GrSem.lamMp_Inh_CodeAGItf coreInh	-- assumption: old info can be overridden, otherwise merge should be done here
-                              }
-                 hii'     = hii
-                              { HI.hiiLamMp         = am
-                              }
-         ;  when (isJust (_ecuMbCoreSem ecu))
-                 (do { cpUpdSI (\crsi -> crsi {crsiCoreInh = coreInh'})
-                     ; cpUpdCU modNm ( ecuStoreHIInfo hii'
-                                     )
-                     })
-         }
-
+{-# LINE 341 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 cpFlowCoreSemBeforeFold :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFlowCoreSemBeforeFold modNm
   =  do  {  cr <- get
@@ -253,24 +233,26 @@
                           . ecuStoreHIUsedImpS usedImpS
                           . ecuStoreIntrodModS introdModS
                           )
-         ;  impNmL <- cpGenImpNmInfo modNm
+         ;  impNmL <- cpGenImportNameInfo modNm
+         -- ;  impNmL <- bcall $ ImportNameInfo (mkPrevFileSearchKeyWithName modNm) (ehcOptOptimizationScope opts)
          ;  cpUpdCU modNm ( ecuStoreCore $ cmodSetImports impNmL core
                           )
          }
 
-{-# LINE 368 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
+{-# LINE 371 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 cpFlowHILamMp :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFlowHILamMp modNm
   = do { cr <- get
        ; let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
-              coreInh  = crsiCoreInh crsi
+              cenv     = cenvLamMp ^$= (HI.hiiLamMp hii `lamMpUnionBindAspMp`) $ crsi ^. crsiCEnv	-- assumption: old info can be overridden, otherwise merge should be done here
               hii      = ecu ^. ecuHIInfo
 
          -- put back result: call info map (lambda arity, ...), overwriting previous entries
-       ; cpUpdSI (\crsi -> crsi {crsiCoreInh = coreInh {Core2GrSem.lamMp_Inh_CodeAGItf = HI.hiiLamMp hii `lamMpUnionBindAspMp` Core2GrSem.lamMp_Inh_CodeAGItf coreInh}})
+       ; cpUpdSI $
+             ( crsiCEnv ^= cenv )
        }
 
-{-# LINE 381 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
+{-# LINE 385 "src/ehc/EHC/CompilePhase/FlowBetweenPhase.chs" #-}
 cpFlowOptim :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFlowOptim modNm
   =  do  {  cr <- get
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Module.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Module.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Module.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Module.hs
@@ -3,13 +3,12 @@
 , cpCheckModsWithOrWithoutBuiltin
 , cpCheckModsWithBuiltin
 , cpCheckModsWithoutBuiltin
-, GetMeta (..), allGetMeta
-, cpGetCoreRunModnameAndImports
 , cpGetCoreModnameAndImports
-, cpGetHsModnameAndImports, cpGetHsMod, cpGetMetaInfo
+, cpGetHsModnameAndImports
+, cpGetHsMod
 , cpGetDummyCheckSrcMod
 , cpUpdateModOffMp
-, cpGenImpNmInfo
+, cpGenImportNameInfo
 , cpUpdHiddenExports )
 where
 import qualified Data.Map as Map
@@ -22,21 +21,19 @@
 import UHC.Light.Compiler.Base.Optimize
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.CompileRun
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import UHC.Light.Compiler.Module.ImportExport
 import qualified UHC.Light.Compiler.Config as Cfg
 import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
 import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
 import qualified UHC.Light.Compiler.CoreRun.Check as CoreRun2ChkSem
 import UHC.Light.Compiler.CodeGen.RefGenerator
-import UHC.Light.Compiler.EHC.BuildFunction.Run
-import UHC.Light.Compiler.Base.Debug
 
 
 
 
 
-{-# LINE 58 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 55 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 -- | Check module dependencies for given 'Mod'
 cpCheckModsModWith :: EHCCompileRunner m => (HsName -> ModMpInfo) -> [Mod] -> EHCompilePhaseT m ()
 cpCheckModsModWith dfltMod modL@(Mod {modName = modNm} : _)
@@ -48,7 +45,7 @@
        ; cpSetLimitErrsWhen 5 "Module analysis" e
        }
 
-{-# LINE 78 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 75 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpCheckModsWithOrWithoutBuiltin :: EHCCompileRunner m => Bool -> [HsName] -> EHCompilePhaseT m ()
 cpCheckModsWithOrWithoutBuiltin bltin modNmL@(modNm:_)
   = do { cr <- get
@@ -59,53 +56,17 @@
   where addBuiltin | bltin     = \m -> m { modImpL = modImpBuiltin : modImpL m }
                    | otherwise = id
 
-{-# LINE 90 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 87 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpCheckModsWithBuiltin :: EHCCompileRunner m => [HsName] -> EHCompilePhaseT m ()
 cpCheckModsWithBuiltin = cpCheckModsWithOrWithoutBuiltin True
 {-# INLINE cpCheckModsWithBuiltin #-}
 
-{-# LINE 96 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 93 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpCheckModsWithoutBuiltin :: EHCCompileRunner m => [HsName] -> EHCompilePhaseT m ()
 cpCheckModsWithoutBuiltin = cpCheckModsWithOrWithoutBuiltin False
 {-# INLINE cpCheckModsWithoutBuiltin #-}
 
-{-# LINE 106 "src/ehc/EHC/CompilePhase/Module.chs" #-}
-data GetMeta
-  = GetMeta_Src
-  | GetMeta_HI
-  | GetMeta_Core
-  | GetMeta_CoreRun
-  | GetMeta_Dir
-  deriving (Eq,Ord)
-
-allGetMeta
-  = [ GetMeta_Src
-    , GetMeta_HI
-    , GetMeta_Core
-    , GetMeta_CoreRun
-    , GetMeta_Dir
-    ]
-
-
-{-# LINE 135 "src/ehc/EHC/CompilePhase/Module.chs" #-}
-cpGetCoreRunModnameAndImports :: EHCCompileRunner m => HsName -> EHCompilePhaseT m HsName
-cpGetCoreRunModnameAndImports modNm
-  =  do  {  cr <- get
-         ;  let  (ecu,_,opts,_) = crBaseInfo modNm cr
-                 mbCrSemMod = _ecuMbCoreRunSemMod ecu
-                 crSemMod   = panicJust "cpGetCoreRunModnameAndImports" mbCrSemMod
-                 modNm'     = CoreRun2ChkSem.realModuleNm_Syn_AGItf crSemMod
-         ;  cpMsg modNm VerboseDebug $ "cpGetCoreRunModnameAndImports: " ++ show modNm ++ " -> " ++ show modNm'
-         ;  case mbCrSemMod of
-              Just _ -> cpUpdCUWithKey modNm $ \_ ecu ->
-                          ( modNm'
-                          , ecuStoreHSDeclImpS (Set.fromList $ CoreRun2ChkSem.impModNmL_Syn_AGItf crSemMod )
-                            $ cuUpdKey modNm' ecu
-                          )
-              _      -> return modNm
-         }
-
-{-# LINE 154 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 122 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpGetCoreModnameAndImports :: EHCCompileRunner m => HsName -> EHCompilePhaseT m HsName
 cpGetCoreModnameAndImports modNm
   =  do  {  cr <- get
@@ -117,13 +78,13 @@
          ;  case mbCrSemMod of
               Just _ -> cpUpdCUWithKey modNm $ \_ ecu ->
                           ( modNm'
-                          , ecuStoreHSDeclImpS (Set.fromList $ Core2ChkSem.impModNmL_Syn_CodeAGItf crSemMod )
+                          , ecuStoreSrcDeclImpS (Set.fromList $ Core2ChkSem.impModNmL_Syn_CodeAGItf crSemMod )
                             $ cuUpdKey modNm' ecu
                           )
               _      -> return modNm
          }
 
-{-# LINE 173 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 141 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpGetHsModnameAndImports :: EHCCompileRunner m => HsName -> EHCompilePhaseT m HsName
 cpGetHsModnameAndImports modNm
   =  do  {  cr <- get
@@ -131,14 +92,15 @@
                  mbHsSemMod = _ecuMbHSSemMod ecu
                  hsSemMod   = panicJust "cpGetHsModnameAndImports" mbHsSemMod
                  modNm'     = HSSemMod.realModuleNm_Syn_AGItf hsSemMod
-                 upd        = ecuStoreHSDeclImpS ( -- (\v -> tr "XX" (pp $ Set.toList v) v) $
+                 upd        = ecuStoreSrcDeclImpS ( -- (\v -> tr "XX" (pp $ Set.toList v) v) $
                                                   HSSemMod.modImpNmS_Syn_AGItf hsSemMod)
          ;  case mbHsSemMod of
-              Just _ | ecuIsTopMod ecu -> cpUpdCUWithKey modNm (\_ ecu -> (modNm', upd $ cuUpdKey modNm' ecu))
-                     | otherwise       -> do { cpUpdCU modNm upd ; return modNm }
+              Just _ | _ecuIsTopMod ecu -> cpUpdCUWithKey modNm (\_ ecu -> (modNm', upd $ cuUpdKey modNm' ecu))
+                     | otherwise        -> do { cpUpdCU modNm upd ; return modNm }
               _      -> return modNm
          }
 
+{-# LINE 158 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpGetHsMod :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpGetHsMod modNm
   =  do  {  cr <- get
@@ -154,51 +116,7 @@
                  (cpUpdCU modNm (ecuStoreMod mod))
          }
 
-cpGetMetaInfo :: EHCCompileRunner m => [GetMeta] -> HsName -> EHCompilePhaseT m ()
-cpGetMetaInfo gm modNm
-  =  do  {  cr <- get
-         ;  let (ecu,_,opts,fp) = crBaseInfo modNm cr
-         ;  when (GetMeta_Src `elem` gm) $
-                 tm opts ecu ecuStoreSrcTime        (ecuSrcFilePath ecu)
-                 -- void $ bcall $ ModfTimeOfFile modNm ASTType_HS (_ecuASTFileContent ecu, ASTFileUse_Src) ASTFileTiming_Current
-
-         ;  when (GetMeta_HI `elem` gm)
-                 (tm opts ecu ecuStoreHIInfoTime
-                                              (mkInOrOutputFPathFor (InputFrom_Loc $ ecuFileLocation ecu) opts modNm fp "hi")
-                 )
-         ;  when (GetMeta_Core `elem` gm) $
-                 -- tm opts ecu ecuStoreCoreTime      (fpathSetSuff Cfg.suffixDotlessBinaryCore fp)
-                 dfltPrev ASTType_Core modNm ecu
-         ;  when (GetMeta_CoreRun `elem` gm) $
-                 -- tm opts ecu ecuStoreCoreRunTime   (fpathSetSuff Cfg.suffixDotlessBinaryCoreRun fp)
-                 dfltPrev ASTType_CoreRun modNm ecu
-         ;  when (GetMeta_Dir `elem` gm)
-                 (wr opts ecu ecuStoreDirIsWritable (                         fp     ))
-         }
-  where dfltPrev astty modNm ecu = void $ bcall $ ModfTimeOfFile modNm astty (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
-
-        tm :: EHCCompileRunner m => EHCOpts -> EHCompileUnit -> (ClockTime -> EHCompileUnit -> EHCompileUnit) -> FPath -> EHCompilePhaseT m ()
-        tm opts ecu store fp
-          = do { let n = fpathToStr fp
-               ; nExists <- liftIO $ doesFileExist n
-               ; when (ehcOptVerbosity opts >= VerboseDebug)
-                      (do { liftIO $ putStrLn ("meta info of: " ++ show (ecuModNm ecu) ++ ", file: " ++ n ++ ", exists: " ++ show nExists)
-                          })
-               ; when nExists
-                      (do { t <- liftIO $ fpathGetModificationTime fp
-                          ; when (ehcOptVerbosity opts >= VerboseDebug)
-                                 (do { liftIO $ putStrLn ("time stamp of: " ++ show (ecuModNm ecu) ++ ", time: " ++ show t)
-                                     })
-                          ; cpUpdCU modNm $ store t
-                          })
-               }
-        wr opts ecu store fp
-          = do { pm <- liftIO $ getPermissions (maybe "." id $ fpathMbDir fp)
-               -- ; liftIO $ putStrLn (fpathToStr fp ++ " writ " ++ show (writable pm))
-               ; cpUpdCU modNm $ store (writable pm)
-               }
-
-{-# LINE 269 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 179 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpGetDummyCheckSrcMod :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpGetDummyCheckSrcMod modNm
   = do { cr <- get
@@ -209,7 +127,7 @@
        ; cpUpdSI (\crsi -> crsi {crsiModMp = Map.insert modNm emptyModMpInfo mm})
        }
 
-{-# LINE 285 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 195 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpUpdateModOffMp :: EHCCompileRunner m => [HsName] -> EHCompilePhaseT m ()
 cpUpdateModOffMp modNmL@(modNm:_)
   = do { cr <- get
@@ -227,10 +145,10 @@
        ; cpUpdSI (\crsi -> crsi {crsiModOffMp = offMp'})
        }
 
-{-# LINE 308 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 218 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 -- | Compute imported module names
-cpGenImpNmInfo :: EHCCompileRunner m => HsName -> EHCompilePhaseT m [HsName]
-cpGenImpNmInfo modNm
+cpGenImportNameInfo :: EHCCompileRunner m => HsName -> EHCompilePhaseT m [HsName]
+cpGenImportNameInfo modNm
   = do { cr <- get
        ; let (ecu,crsi,opts,fp) = crBaseInfo modNm cr
              isWholeProg = ehcOptOptimizationScope opts > OptimizationScope_PerModule
@@ -239,7 +157,7 @@
        ; return impNmL
        }
 
-{-# LINE 325 "src/ehc/EHC/CompilePhase/Module.chs" #-}
+{-# LINE 235 "src/ehc/EHC/CompilePhase/Module.chs" #-}
 cpUpdHiddenExports :: EHCCompileRunner m => HsName -> [(HsName,IdOccKind)] -> EHCompilePhaseT m ()
 cpUpdHiddenExports modNm exps
   = when (not $ null exps)
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Output.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Output.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Output.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Output.hs
@@ -12,7 +12,7 @@
 import UHC.Util.Lens
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.CompileRun
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import qualified UHC.Light.Compiler.Config as Cfg
 import UHC.Light.Compiler.EHC.ASTHandler.Instances
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
@@ -25,7 +25,7 @@
 import UHC.Util.Serialize
 import UHC.Light.Compiler.Gam
 import UHC.Light.Compiler.Module.ImportExport
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import UHC.Light.Compiler.Gam.Utils
 
 
@@ -42,14 +42,15 @@
 -- | Abstraction for writing some module to output with variation in suffices
 cpOutputSomeModules
   :: EHCCompileRunner m
-     => ASTHandler' mod -- (EHCOpts -> EHCompileUnit -> FPath -> FilePath -> mod -> IO Bool)
+     => Maybe EHCOpts
+     -> ASTHandler' mod -- (EHCOpts -> EHCompileUnit -> FPath -> FilePath -> mod -> IO Bool)
      -> ASTFileContent
      -> (Int -> String -> String)
      -> String
      -> HsName
      -> [(String,mod)]
      -> EHCompilePhaseT m [Maybe FPath]
-cpOutputSomeModules astHdlr how mknmsuff suff modNm mods = do
+cpOutputSomeModules mbOpts astHdlr how mknmsuff suff modNm mods = do
     cr <- get
     let  (ecu,crsi,opts,fp) = crBaseInfo modNm cr
     forM (zip [1..] mods) $ \(nr,(nmsuff,mod)) -> do
@@ -62,7 +63,7 @@
           asthdlrOutputIO astHdlr how opts ecu modNm fpC fnC mod
       return $ if okWrite then Just fpC else Nothing
 
-{-# LINE 132 "src/ehc/EHC/CompilePhase/Output.chs" #-}
+{-# LINE 133 "src/ehc/EHC/CompilePhase/Output.chs" #-}
 -- | Abstraction for writing a module, using cpOutputSomeModules
 cpOutputSomeModule
   :: EHCCompileRunner m
@@ -78,16 +79,16 @@
          ;  let  (ecu,_,_,_) = crBaseInfo modNm cr
                  mod    = getMod ecu
          ;  cpMsg modNm VerboseALot $ "Emit " ++ _asthdlrName astHdlr
-         ;  fmap head $ cpOutputSomeModules astHdlr how (\_ nm -> nm) suff modNm [(nmsuff,mod)]
+         ;  fmap head $ cpOutputSomeModules Nothing astHdlr how (\_ nm -> nm) suff modNm [(nmsuff,mod)]
          }
 
-{-# LINE 188 "src/ehc/EHC/CompilePhase/Output.chs" #-}
+{-# LINE 189 "src/ehc/EHC/CompilePhase/Output.chs" #-}
 cpOutputCore :: EHCCompileRunner m => ASTFileContent -> String -> String -> HsName -> EHCompilePhaseT m FPath
 cpOutputCore how nmsuff suff modNm =
     fmap (panicJust "cpOutputGrin.cpOutputSomeModule") $
       cpOutputSomeModule (^. ecuCore) astHandler'_Core how nmsuff suff modNm
 
-{-# LINE 254 "src/ehc/EHC/CompilePhase/Output.chs" #-}
+{-# LINE 255 "src/ehc/EHC/CompilePhase/Output.chs" #-}
 cpOutputHI :: EHCCompileRunner m => String -> HsName -> EHCompilePhaseT m ()
 cpOutputHI suff modNm
   =  do  {  cr <- get
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Parsers.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Parsers.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Parsers.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Parsers.hs
@@ -1,10 +1,5 @@
 module UHC.Light.Compiler.EHC.CompilePhase.Parsers
-( cpParseEH
-, cpParseCoreWithFPath
-, cpParseCoreRunWithFPath
-, cpDecode''
-, cpDecodeCore
-, cpDecodeCoreRun
+( cpDecode''
 , cpGetPrevHI
 , cpGetPrevCore
 , cpGetPrevCoreRun
@@ -18,7 +13,7 @@
 import UHC.Light.Compiler.Scanner.Common
 import UHC.Util.ParseUtils
 import UHC.Util.Lens
-import Control.Monad.Error
+import UHC.Util.Error
 import Control.Monad.State
 import qualified Data.Map as Map
 import UHC.Light.Compiler.EHC.Common
@@ -37,8 +32,6 @@
 import qualified UHC.Light.Compiler.HI as HI
 import qualified UHC.Util.Binary as Bin
 import UHC.Util.Serialize
-import qualified UHC.Light.Compiler.Config as Cfg
-import qualified UHC.Light.Compiler.SourceCodeSig as Sig
 
 
 
@@ -47,7 +40,7 @@
 
 
 
-{-# LINE 81 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+{-# LINE 83 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
 -- | Generalization of parser invocation
 cpParseWithFPath
   :: ( EHCCompileRunner m
@@ -68,64 +61,19 @@
           Just (ASTParser p) -> do
                (res,errs) <- parseWithFPath sopts popts p (maybe (ecuFilePath (crCU modNm cr)) id mbFp)
                cpUpdCU modNm (_asthdlrEcuStore astHdlr res)
-               unless (ehpoptsStopAtErr popts) $ seterrs errs
+               unless (ehpoptsOkToStopAtErr popts) $ seterrs errs
           _ -> seterrs [strMsg $ "No parser for " ++ _asthdlrName astHdlr]
       }
 
-{-# LINE 107 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpParseEH :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpParseEH modNm
-  = cpParseWithFPath astHandler'_EH defaultEHParseOpts Nothing modNm
-
-{-# LINE 130 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+{-# LINE 132 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
 cpParseHs :: EHCCompileRunner m => Bool -> HsName -> EHCompilePhaseT m ()
 cpParseHs litmode = cpParseWithFPath astHandler'_HS (defaultEHParseOpts {ehpoptsLitMode=litmode}) Nothing
 
-{-# LINE 140 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+{-# LINE 142 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
 cpParseHsImport :: EHCCompileRunner m => Bool -> HsName -> EHCompilePhaseT m ()
-cpParseHsImport litmode = cpParseWithFPath astHandler'_HS (defaultEHParseOpts {ehpoptsStopAtErr=True, ehpoptsLitMode=litmode, ehpoptsForImport=True}) Nothing
-
-{-# LINE 145 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpParseCoreWithFPath :: EHCCompileRunner m => Maybe FPath -> HsName -> EHCompilePhaseT m ()
-cpParseCoreWithFPath = cpParseWithFPath astHandler'_Core (defaultEHParseOpts)
-
-{-# LINE 150 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpParseCoreRunWithFPath :: EHCCompileRunner m => Maybe FPath -> HsName -> EHCompilePhaseT m ()
-cpParseCoreRunWithFPath = cpParseWithFPath astHandler'_CoreRun (defaultEHParseOpts)
-
-{-# LINE 159 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpDecodeHIInfo :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpDecodeHIInfo modNm
-  = do { cr <- get
-       ; let  (ecu,_,opts,fp) = crBaseInfo modNm cr
-              fpH     = asthdlrMkInputFPath astHandler'_HI opts ecu (ASTFileContent_Binary, ASTFileUse_Cache) modNm fp
-       ; cpMsg' modNm VerboseALot "Decoding" Nothing fpH
-       ; hiinfo <- liftIO $
-           CE.catch (getSGetFile (fpathToStr fpH) (HI.sgetHIInfo opts))
-                    (\(_ :: SomeException) -> return $ HI.emptyHIInfo {HI.hiiValidity = HI.HIValidity_Absent})
-       ; when (ehcOptVerbosity opts > VerboseALot)
-              (do { liftIO $ putPPLn (pp hiinfo)
-                  })
-       ; let canCompile = ecuCanCompile ecu
-       ; case HI.hiiValidity hiinfo of
-           HI.HIValidity_WrongMagic | not canCompile
-             -> cpSetLimitErrsWhen 1 "Read HI"
-                  [rngLift emptyRange Err_WrongMagic
-                     (show modNm)
-                     (fpathToStr fpH)
-                  ]
-           HI.HIValidity_Inconsistent | not canCompile
-             -> cpSetLimitErrsWhen 1 "Read HI (of previous compile) of module"
-                  [rngLift emptyRange Err_InconsistentHI
-                     (show modNm)
-                     (fpathToStr fpH)
-                     [Sig.timestamp, Cfg.installVariant opts, show $ ehcOptTarget opts, show $ ehcOptTargetFlavor opts]
-                     [HI.hiiSrcTimeStamp hiinfo   , HI.hiiCompiler hiinfo  , show $ HI.hiiTarget hiinfo, show $ HI.hiiTargetFlavor hiinfo]
-                  ]
-           _ -> cpUpdCU modNm (ecuStorePrevHIInfo {-- $ HI.hiiPostCheckValidity opts -} hiinfo)
-       }
+cpParseHsImport litmode = cpParseWithFPath astHandler'_HS (defaultEHParseOpts {ehpoptsOkToStopAtErr=True, ehpoptsLitMode=litmode, ehpoptsForImport=True}) Nothing
 
-{-# LINE 196 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+{-# LINE 198 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
 -- | Decode from serialized file and store result in the compileunit for the module modNm
 cpDecode :: (EHCCompileRunner m, Serialize x) => Maybe String -> EcuUpdater x -> HsName -> EHCompilePhaseT m ()
 cpDecode mbSuff store modNm
@@ -137,7 +85,7 @@
        ; cpUpdCU modNm (store x)
        }
 
-{-# LINE 209 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+{-# LINE 211 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
 -- | Decode from serialized file and store result in the compileunit for the module modNm, return True if decoding could be done
 cpDecode'' :: EHCCompileRunner m => ASTHandler' ast -> ASTSuffixKey -> ASTFileTiming -> HsName -> EHCompilePhaseT m Bool
 cpDecode'' astHdlr skey tkey modNm
@@ -146,7 +94,7 @@
              mbi@(~(Just info)) = astsuffixLookup skey $ _asthdlrSuffixRel astHdlr
              mbl@(~(Just lens)) = Map.lookup tkey $ _astsuffinfoASTLensMp info
              -- fpC                = fpathSetSuff (_astsuffinfoSuff info) fp
-             fpC                = asthdlrMkInputFPath astHdlr opts ecu skey modNm fp
+             fpC                = asthdlrMkInputFPath astHdlr opts ecu (ASTFileSuffOverride_Suff skey) modNm fp
        ; if isJust mbi && isJust mbl
          then do
            cpMsg' modNm VerboseALot "Decoding" Nothing fpC
@@ -171,49 +119,48 @@
     okDecode <- cpDecode'' astHdlr skey tkey modNm
     unless okDecode $ cpSetLimitErrsWhen 1 ("Decode " ++ _asthdlrName astHdlr) [strMsg $ "No decoder/lens for " ++ _asthdlrName astHdlr ++ " (" ++ show skey ++ "/" ++ show tkey ++ ")"]
 
-{-# LINE 249 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpDecodeCore :: EHCCompileRunner m => Maybe String -> HsName -> EHCompilePhaseT m ()
--- cpDecodeCore = cpDecode' astHdlr skey timing
-cpDecodeCore suff = cpDecode suff ecuStoreCore
-
-{-# LINE 255 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpDecodeCoreRun :: EHCCompileRunner m => Maybe String -> HsName -> EHCompilePhaseT m ()
-cpDecodeCoreRun suff = cpDecode suff ecuStoreCore
-
-{-# LINE 264 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpGetPrevHI :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
+{-# LINE 266 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+cpGetPrevHI :: EHCCompileRunner m => HsName -> EHCompilePhaseT m AST_HI
 cpGetPrevHI modNm
-  = do { cr <- get
-       ; cpMsg modNm VerboseDebug "cpGetPrevHI"
+  = do { cpMsg modNm VerboseDebug "cpGetPrevHI"
+{-
+       ; cr <- get
        ; let  ecu        = crCU modNm cr
        -- ; when (isJust (ecuMbHITime ecu))
        --        (cpParseHI modNm)
        ; when (isJust (_ecuMbHIInfoTime ecu)) $
               -- cpDecodeHIInfo modNm
               cpDecode' astHandler'_HI (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev modNm
+-}
+       ; bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_AbsenceIgnore) ASTType_HI (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
        }
 
-{-# LINE 278 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpGetPrevCore :: EHCCompileRunner m => HsName -> EHCompilePhaseT m Core.CModule
+{-# LINE 283 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+cpGetPrevCore :: EHCCompileRunner m => HsName -> EHCompilePhaseT m AST_Core
 cpGetPrevCore modNm
-  = do { cr <- get
-       ; cpMsg modNm VerboseDebug "cpGetPrevCore"
-       -- ; let  ecu    = crCU modNm cr
-       -- ; when (isJust (_ecuMbCoreTime ecu) && isNothing (_ecuMbCore ecu)) $
-              -- cpDecodeCore (Just Cfg.suffixDotlessBinaryCore) modNm
-              -- cpDecode' astHandler'_Core (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev modNm
-       -- ; fmap (fromJust . _ecuMbCore) $ gets (crCU modNm)
-       ; bcall $ ASTFromFile (modNm,Nothing) ASTType_Core (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
+  = do { cpMsg modNm VerboseDebug "cpGetPrevCore"
+{-
+       ; cr <- get
+       ; let  ecu    = crCU modNm cr
+       ; when (isJust (_ecuMbCoreTime ecu) && isNothing (_ecuMbCore ecu)) $
+           -- cpDecodeCore (Just Cfg.suffixDotlessBinaryCore) modNm
+           -- cpDecode' astHandler'_Core (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev modNm
+       ; fmap (fromJust . _ecuMbCore) $ gets (crCU modNm)
+-}
+       ; bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_AbsenceIgnore) ASTType_Core (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
        }
 
-{-# LINE 292 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
-cpGetPrevCoreRun :: EHCCompileRunner m => HsName -> EHCompilePhaseT m CoreRun.Mod
+{-# LINE 299 "src/ehc/EHC/CompilePhase/Parsers.chs" #-}
+cpGetPrevCoreRun :: EHCCompileRunner m => HsName -> EHCompilePhaseT m AST_CoreRun
 cpGetPrevCoreRun modNm
-  = do { cr <- get
-       ; cpMsg modNm VerboseDebug "cpGetPrevCoreRun"
+  = do { cpMsg modNm VerboseDebug "cpGetPrevCoreRun"
+{-
+       ; cr <- get
        ; let  ecu    = crCU modNm cr
        ; when (isJust (_ecuMbCoreRunTime ecu) && isNothing (_ecuMbCoreRun ecu))
               (cpDecodeCoreRun (Just Cfg.suffixDotlessBinaryCoreRun) modNm)
        ; fmap (fromJust . _ecuMbCoreRun) $ gets (crCU modNm)
+-}
+       ; bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_AbsenceIgnore) ASTType_CoreRun (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
        }
 
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Run.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Run.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Run.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Run.hs
@@ -1,7 +1,9 @@
 module UHC.Light.Compiler.EHC.CompilePhase.Run
 ( cpRunCoreRun
 , cpRunCoreRun2
-, cpRunCoreRun3 )
+, cpRunCoreRun3
+, cpRunCoreRun4
+, cpRunCoreRun5 )
 where
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
@@ -9,13 +11,23 @@
 import Data.Maybe
 import Control.Monad.State
 import Control.Exception
+import UHC.Util.Lens
+import qualified UHC.Util.RelMap as Rel
+import qualified Data.Set as Set
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.EHC.CompilePhase.Parsers
 import UHC.Light.Compiler.Core.ToCoreRun
 import UHC.Light.Compiler.CoreRun
 import UHC.Light.Compiler.CoreRun.Run
 import UHC.Light.Compiler.CoreRun.Run.Val.RunExplStk as RE
+import UHC.Light.Compiler.EHC.BuildFunction.Run
+import UHC.Light.Compiler.EHC.CompilePhase.Output
+import UHC.Light.Compiler.EHC.ASTHandler
+import UHC.Light.Compiler.EHC.ASTHandler.Instances
+import qualified UHC.Light.Compiler.Config as Cfg
 
-{-# LINE 45 "src/ehc/EHC/CompilePhase/Run.chs" #-}
+
+{-# LINE 66 "src/ehc/EHC/CompilePhase/Run.chs" #-}
 -- | Run CoreRun.
 -- TBD: fix dependence on whole program linked
 cpRunCoreRun :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
@@ -33,7 +45,7 @@
              (\_ -> return ())
              res
 
-{-# LINE 72 "src/ehc/EHC/CompilePhase/Run.chs" #-}
+{-# LINE 93 "src/ehc/EHC/CompilePhase/Run.chs" #-}
 -- | Run CoreRun.
 -- 20150130: TBD: does not work yet
 cpRunCoreRun2 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
@@ -49,7 +61,7 @@
           return $ flip evalState emptyNm2RefMp $ do
             forM (zip cores [0..]) $ \(cr,modnr) -> do
               prevNm2Ref <- get
-              let (m,nm2ref,_) = cmod2CoreRun' opts hasMain modnr prevNm2Ref cr
+              let (m,nm2ref,_) = cmod2CoreRun' opts hasMain (Just modnr) prevNm2Ref cr
               put $ nm2refUnion nm2ref prevNm2Ref
               return m
     cpMsg modNm VerboseNormal "Run Core"
@@ -60,7 +72,7 @@
            (\_ -> return ())
            res
 
-{-# LINE 109 "src/ehc/EHC/CompilePhase/Run.chs" #-}
+{-# LINE 130 "src/ehc/EHC/CompilePhase/Run.chs" #-}
 -- | Run CoreRun.
 cpRunCoreRun3 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpRunCoreRun3 modNm = do
@@ -79,4 +91,65 @@
     either (\e -> cpSetLimitErrsWhen 1 "Run Core(Run) errors" [e])
            (\_ -> return ())
            res
+
+{-# LINE 160 "src/ehc/EHC/CompilePhase/Run.chs" #-}
+-- | Run CoreRun. Variant for new build plan/driver
+-- TBD: fix dependence on whole program linked, in progress as cpRunCoreRun5
+cpRunCoreRun4 :: EHCCompileRunner m => BuildGlobal -> PrevFileSearchKey -> ASTBuildPlan -> EHCompilePhaseT m ()
+cpRunCoreRun4 bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe}) = do
+    maybeM (bcall $ ASTPlMb bglob modSearchKey astplan) (return ()) $ \(ASTResult {_astresAST=(mod :: AST_CoreRun)}) -> do
+      {-
+      crsi <- bcall $ CRSIOfNamePl modSearchKey astplan
+      let impModNmL = crsi ^. crsiCoreRunState ^. crcrsiReqdModules
+      impModL <- forM impModNmL $ \nm ->
+        maybeM (bcall $ ASTPMb (mkPrevFileSearchKeyWithName nm) astpipe)
+          (do cpSetLimitErrsWhen 1 "Run Core(Run) errors" [rngLift emptyRange Err_Str $ "Cannot load CoreRun module: " ++ show nm]
+              return $ panic "cpRunCoreRun4: not allowed to use AST result!!"
+          ) $
+          \(ASTResult {_astresAST=(mod :: AST_CoreRun)}) -> return mod
+      -}
+      opts <- bcall $ EHCOptsOf modSearchKey
+      cpMsg modNm VerboseNormal "Run Core (4)"
+      res <- liftIO $ catch
+        (runCoreRun opts [] mod $ cmodRun opts mod)
+        (\(e :: SomeException) -> hFlush stdout >> (return $ Left $ strMsg $ "cpRunCoreRun4: " ++ show e))
+      either (\e -> cpSetLimitErrsWhen 1 "Run Core(Run) errors" [e])
+             (\_ -> return ())
+             res
+
+{-# LINE 192 "src/ehc/EHC/CompilePhase/Run.chs" #-}
+-- | Run CoreRun. Variant for new build plan/driver
+-- TBD: fix dependence on whole program linked
+cpRunCoreRun5 :: EHCCompileRunner m => BuildGlobal -> PrevFileSearchKey -> ASTBuildPlan -> EHCompilePhaseT m ()
+cpRunCoreRun5 bglob modSearchKey@(PrevFileSearchKey {_pfsrchKey=FileSearchKey {_fsrchNm=modNm}}) astplan@(ASTBuildPlan {_astbplPipe=astpipe}) = do
+    maybeM (bcall $ ASTPlMb bglob modSearchKey astplan) (return ()) $ \(ASTResult {_astresAST=(mod :: AST_CoreRun)}) -> do
+      -- debug
+      ecu <- bcall $ EcuOf modNm
+      cpOutputSomeModule (const mod) astHandler'_CoreRun ASTFileContent_Text "-cpRunCoreRun5" Cfg.suffixDotlessOutputTextualCoreRun (ecuModNm ecu)
+      crsi <- bcall $ CRSIOfNamePl bglob modSearchKey astplan
+      let impModNmL = (crsi ^. crsiCoreRunState ^. crcrsiReqdModules) \\ [modNm]
+      cpTrPP TraceOn_BldMod $
+        [ "cpRunCoreRun5 mod=" >|< modNm
+        , "astplan:" >#< astplan
+        , "imps:" >-< indent 2 (vlist impModNmL)
+        , "crsi nm2ref mods:" >-< indent 2 (vlist $ Set.toList $ Set.map fromJust $ Set.filter isJust $ Set.map hsnQualifier $ Rel.dom $ crsi ^. crsiCoreRunState ^. crcrsiNm2RefMp)
+        ]
+        -- ++ [ n >#< ppCommas rs | (n,rs) <- Rel.toDomList $ crsi ^. crsiCoreRunState ^. crcrsiNm2RefMp ]
+      impModL <- forM impModNmL $ \nm ->
+        maybeM (bcall $ ASTPMb bglob (mkPrevFileSearchKeyWithName nm) astpipe)
+          (do cpSetLimitErrsWhen 1 "Run Core(Run) errors" [rngLift emptyRange Err_Str $ "Cannot load CoreRun module: " ++ show nm]
+              return $ panic "cpRunCoreRun5: not allowed to use AST result!!"
+          ) $
+          \(ASTResult {_astresAST=(mod :: AST_CoreRun)}) -> return mod
+      opts <- bcall $ EHCOptsOf modSearchKey
+      cpMsg modNm VerboseNormal "Run Core (5)"
+      {-
+      res <- liftIO $ catch
+        (runCoreRun opts impModL mod $ cmodRun opts mod)
+        (\(e :: SomeException) -> hFlush stdout >> (return $ Left $ strMsg $ "cpRunCoreRun5: " ++ show e))
+      -}
+      res <- liftIO $ runCoreRun2 opts impModL mod $ cmodRun opts mod
+      either (\e -> cpSetLimitErrsWhen 1 "Run Core(Run) errors" [e])
+             (\_ -> return ())
+             res
 
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Semantics.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Semantics.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Semantics.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Semantics.hs
@@ -1,9 +1,7 @@
 module UHC.Light.Compiler.EHC.CompilePhase.Semantics
-( cpFoldCore2Grin
-, cpFoldCore2CoreRun
+( cpFoldCore2CoreRun
 , cpFoldEH
 , cpFoldHs
-, cpFoldCoreRunMod
 , cpFoldCoreMod
 , cpFoldHsMod
 , cpFoldHIInfo )
@@ -14,7 +12,7 @@
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
 import UHC.Light.Compiler.EHC.CompileRun
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import qualified UHC.Light.Compiler.HS.MainAG as HSSem
 import qualified UHC.Light.Compiler.Core as Core
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
@@ -28,8 +26,6 @@
 import qualified UHC.Util.Rel as Rel
 import UHC.Light.Compiler.Module.ImportExport
 import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 
 
 
@@ -42,26 +38,7 @@
 
 
 
-{-# LINE 72 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
-cpFoldCore2Grin :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpFoldCore2Grin modNm
-  =  do  {  cr <- get
-         ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
-                 mbCore   = _ecuMbCore ecu
-                 core     = panicJust "cpFoldCore2Grin" mbCore
-                 coreInh  = crsiCoreInh crsi
-                 coreSem  = Core2GrSem.wrap_CodeAGItf
-                              (Core2GrSem.sem_CodeAGItf (Core.CodeAGItf_AGItf core))
-                              (coreInh { Core2GrSem.gUniq_Inh_CodeAGItf                         = crsi ^. crsiHereUID
-                                       , Core2GrSem.opts_Inh_CodeAGItf                          = opts
-                                       , Core2GrSem.importUsedModules_Inh_CodeAGItf             = ecuImportUsedModules ecu
-                                       })
-         ;  when (isJust mbCore)
-                 (cpUpdCU modNm ( ecuStoreCoreSem coreSem
-                                ))
-         }
-
-{-# LINE 94 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
+{-# LINE 101 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
 cpFoldCore2CoreRun :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFoldCore2CoreRun modNm
   =  do  {  cr <- get
@@ -69,42 +46,21 @@
                  mbCore   				= _ecuMbCore ecu
                  hasMain  				= ecuHasMain ecu
                  core     				= panicJust "cpFoldCore2CoreRun" mbCore
-                 core2RunInh			= crsiCore2RunInh crsi
-                 (corerun,nm2ref,sem)	= Core2CoreRunSem.cmod2CoreRun' opts hasMain 0 core2RunInh core
+                 inhLbl                 = crsiCoreRunState ^* crcrsiNm2RefMp
+                 core2RunInh			= crsi ^. inhLbl
+                 (corerun,nm2ref,sem)	= Core2CoreRunSem.cmod2CoreRun' opts hasMain Nothing core2RunInh core
                  core2RunInh'			= nm2ref `CoreRun.nm2refUnion` core2RunInh
          ;  when (isJust mbCore) $ do
                  -- between module flow part
-                 cpUpdSI (\crsi -> crsi {crsiCore2RunInh = core2RunInh'})
+                 cpUpdSI $ inhLbl ^= core2RunInh'
+                 -- cpUpdSI (\crsi -> crsi {_crsiCore2RunInh = core2RunInh'})
                  -- per module part
                  cpUpdCU modNm ( ecuStoreCoreRun corerun
                                . ecuStoreCore2CoreRunSem sem
                                )
          }
 
-{-# LINE 119 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
-cpFoldCoreRunMod :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpFoldCoreRunMod modNm
-  =  do  {  cr <- get
-         ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
-                 mbCoreRun= _ecuMbCoreRun ecu
-                 core     = panicJust "cpFoldCoreRunMod" mbCoreRun
-                 inh      = CoreRun2ChkSem.Inh_AGItf
-                                { CoreRun2ChkSem.opts_Inh_AGItf = opts
-                                , CoreRun2ChkSem.moduleNm_Inh_AGItf = modNm
-                                -- , CoreRun2ChkSem.dataGam_Inh_AGItf = EHSem.dataGam_Inh_AGItf $ _crsiEHInh crsi
-                                }
-                 crrSem   = CoreRun2ChkSem.crmodCheck' inh core
-                 hasMain  = CoreRun2ChkSem.hasMain_Syn_AGItf crrSem
-                 mod      = CoreRun2ChkSem.mod_Syn_AGItf crrSem
-         -- ;  liftIO $ putStrLn $ "cpFoldCoreRunMod " ++ show hasMain
-         ;  when (isJust mbCoreRun)
-                 (cpUpdCU modNm ( ecuStoreCoreRunSemMod crrSem
-                                . ecuSetHasMain hasMain
-                                . ecuStoreMod mod
-                                ))
-         }
-
-{-# LINE 143 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
+{-# LINE 151 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
 cpFoldCoreMod :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFoldCoreMod modNm
   =  do  {  cr <- get
@@ -114,7 +70,6 @@
                  inh      = Core2ChkSem.Inh_CodeAGItf
                                 { Core2ChkSem.opts_Inh_CodeAGItf = opts
                                 , Core2ChkSem.moduleNm_Inh_CodeAGItf = modNm
-                                , Core2ChkSem.dataGam_Inh_CodeAGItf = EHSem.dataGam_Inh_AGItf $ crsi ^. crsiEHInh
                                 }
                  coreSem  = Core2ChkSem.cmodCheck' inh core
                  hasMain  = Core2ChkSem.hasMain_Syn_CodeAGItf coreSem
@@ -127,13 +82,14 @@
                                 ))
          }
 
-{-# LINE 167 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
+{-# LINE 174 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
 cpFoldEH :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFoldEH modNm
   =  do  {  cr <- get
-         ;  mieimpl <- cpGenModuleImportExportImpl modNm
          ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
-                 mbEH   = _ecuMbEH ecu
+         ;  mieimpl <- cpGenModuleImportExportImpl modNm
+         -- ;  mieimpl <- bcall $ ImportExportImpl (mkPrevFileSearchKeyWithName modNm) (ehcOptOptimizationScope opts)
+         ;  let  mbEH   = _ecuMbEH ecu
                  ehSem  = EHSem.wrap_AGItf (EHSem.sem_AGItf $ panicJust "cpFoldEH" mbEH)
                                            ((crsi ^. crsiEHInh)
                                                   { EHSem.moduleNm_Inh_AGItf         		= ecuModNm ecu
@@ -147,10 +103,11 @@
                  (cpUpdCU modNm $! ecuStoreEHSem $! ehSem)
          }
 
-{-# LINE 194 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
+{-# LINE 202 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
 cpFoldHs :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFoldHs modNm
   =  do  {  cr <- get
+         -- ;  isTopMod <- bcall $ IsTopMod $ mkPrevFileSearchKeyWithName modNm
          ;  let  (ecu,crsi,opts,_) = crBaseInfo modNm cr
                  mbHS   = _ecuMbHS ecu
                  inh    = crsi ^. crsiHSInh
@@ -158,7 +115,7 @@
                                            (inh { HSSem.opts_Inh_AGItf             = opts
                                                 , HSSem.gUniq_Inh_AGItf            = crsi ^. crsiHereUID
                                                 , HSSem.moduleNm_Inh_AGItf         = modNm
-                                                , HSSem.isTopMod_Inh_AGItf         = ecuIsTopMod ecu
+                                                , HSSem.isTopMod_Inh_AGItf         = {- isTopMod -- -} _ecuIsTopMod ecu
                                                 , HSSem.modInScope_Inh_AGItf       = inscps
                                                 , HSSem.modEntToOrig_Inh_AGItf     = exps
                                                 , HSSem.topInstanceNmL_Inh_AGItf   = modInstNmL (ecuMod ecu)
@@ -174,7 +131,7 @@
          ;  when (isJust mbHS)
                  (do { cpUpdCU modNm ( ecuStoreHSSem hsSem
                                      . ecuStoreHIDeclImpS ( -- (\v -> tr "YY" (pp $ Set.toList v) v) $
-                                                           ecuHSDeclImpNmS ecu)
+                                                           ecuSrcDeclImpNmS ecu)
                                      -- . ecuSetHasMain hasMain
                                      )
                      ; when (ehcOptVerbosity opts >= VerboseDebug)
@@ -183,7 +140,7 @@
                      })
          }
 
-{-# LINE 241 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
+{-# LINE 252 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
 cpFoldHsMod :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFoldHsMod modNm
   =  do  {  cr <- get
@@ -206,7 +163,7 @@
                  )              )
          }
 
-{-# LINE 269 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
+{-# LINE 280 "src/ehc/EHC/CompilePhase/Semantics.chs" #-}
 cpFoldHIInfo :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpFoldHIInfo modNm
   =  do  {  cr <- get
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/TopLevelPhases.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/TopLevelPhases.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/TopLevelPhases.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/TopLevelPhases.hs
@@ -10,6 +10,8 @@
 import qualified UHC.Util.FastSeq as Seq
 import Control.Monad.State
 import qualified UHC.Light.Compiler.Config as Cfg
+import UHC.Light.Compiler.EHC.ASTTypes
+import UHC.Light.Compiler.EHC.BuildFunction.Run
 import System.IO.Unsafe
 import Debug.Trace
 import UHC.Light.Compiler.Base.Optimize
@@ -29,7 +31,6 @@
 import UHC.Light.Compiler.EHC.CompileGroup
 import UHC.Light.Compiler.EHC.CompilePhase.Module
 import UHC.Light.Compiler.Module.ImportExport
-import qualified UHC.Light.Compiler.Core as Core (cModMergeByConcat)
 import qualified UHC.Light.Compiler.Core.Merge as CMerge (cModMerge)
 import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
 import qualified UHC.Light.Compiler.CoreRun.Check as CoreRun2ChkSem
@@ -71,7 +72,7 @@
 
 
 
-{-# LINE 118 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 121 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | top lever driver for after all per-module work has been done, and whole program stuff like combining/linking can start
 cpEhcFullProgLinkAllModules :: EHCCompileRunner m => [HsName] -> EHCompilePhaseT m ()
 cpEhcFullProgLinkAllModules modNmL
@@ -116,7 +117,7 @@
                         _ -> return ()
       }
 
-{-# LINE 175 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 178 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcCheckAbsenceOfMutRecModules :: EHCCompileRunner m => EHCompilePhaseT m ()
 cpEhcCheckAbsenceOfMutRecModules
  = do { cr <- get
@@ -126,7 +127,7 @@
              )
       }
 
-{-# LINE 198 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 201 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcFullProgCompileAllModules :: EHCCompileRunner m => EHCompilePhaseT m ()
 cpEhcFullProgCompileAllModules
  = do { cr <- get
@@ -142,13 +143,13 @@
               )
       }
 
-{-# LINE 230 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 233 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcFullProgPostModulePhases :: EHCCompileRunner m => EHCOpts -> [HsName] -> ([HsName],HsName) -> EHCompilePhaseT m ()
 cpEhcFullProgPostModulePhases opts modNmL modSpl
   | ehcOptOptimizationScope opts >= OptimizationScope_WholeCore = cpEhcCoreFullProgPostModulePhases opts modNmL modSpl
   | otherwise                                                   = return ()
 
-{-# LINE 272 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 275 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcCoreFullProgPostModulePhases :: EHCCompileRunner m => EHCOpts -> [HsName] -> ([HsName],HsName) -> EHCompilePhaseT m ()
 cpEhcCoreFullProgPostModulePhases opts modNmL (impModNmL,mainModNm)
   = cpSeq ([ cpSeq [void $ cpGetPrevCore m | m <- modNmL]
@@ -170,12 +171,12 @@
                }
           where mOf m cr = panicJust ("cpEhcCoreFullProgPostModulePhases.mergeIntoOneBigCore: " ++ show m) $ _ecuMbCore $ crCU m cr
 
-{-# LINE 297 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 300 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 {-|
 Per module compilation of (import) ordered sequence of module, as part of a full program compilation
 
 -}
-{-# LINE 301 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 304 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcFullProgModuleCompileN :: EHCCompileRunner m => [HsName] -> EHCompilePhaseT m ()
 cpEhcFullProgModuleCompileN modNmL
   = cpSeq (merge (map cpEhcFullProgModuleCompile1    modNmL)
@@ -185,18 +186,19 @@
         merge []       cs       = cs
         merge cs       []       = cs
 
-{-# LINE 312 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 315 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 {-|
 Find out whether a compilation is needed, and if so, can be done.
 
 -}
-{-# LINE 316 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 319 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcFullProgModuleDetermineNeedsCompile :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcFullProgModuleDetermineNeedsCompile modNm
   = do { cr <- get
        ; let (ecu,_,opts,_) = crBaseInfo modNm cr
              needsCompile = crModNeedsCompile modNm cr
              canCompile   = ecuCanCompile ecu
+       -- ; canCompile <- bcall $ CanCompile $ mkPrevFileSearchKeyWithName modNm
        ; when (ehcOptVerbosity opts >= VerboseDebug)
               (liftIO $ putStrLn
                 (  show modNm
@@ -207,19 +209,19 @@
                 ++ ", can use HI instead of HS: " ++ show (ecuCanUseHIInsteadOfHS ecu)
                 ++ ", has main: " ++ show (ecuHasMain ecu)
                 ++ ", is main: " ++ show (ecuIsMainMod ecu)
-                ++ ", is top: " ++ show (ecuIsTopMod ecu)
+                ++ ", is top: " ++ show (_ecuIsTopMod ecu)
                 ++ ", valid HI: " ++ show (ecuIsValidHIInfo ecu)
                 ++ ", HS newer: " ++ show (ecuIsHSNewerThanHI ecu)
                 ))
        ; cpUpdCU modNm (ecuSetNeedsCompile (needsCompile && canCompile))
        }
 
-{-# LINE 341 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 345 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 {-|
 Compilation of 1 module, as part of a full program compilation
 
 -}
-{-# LINE 345 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 349 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcFullProgModuleCompile1 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcFullProgModuleCompile1 modNm
   = do { cr <- get
@@ -237,12 +239,12 @@
        ; when (ecuHasMain ecu) (crSetAndCheckMain modNm)
        }
 
-{-# LINE 364 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 368 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 {-|
 Flow of info between modules, as part of a full program compilation
 
 -}
-{-# LINE 368 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 372 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcFullProgBetweenModuleFlow :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcFullProgBetweenModuleFlow modNm
   = do { cr <- get
@@ -253,10 +255,10 @@
        ; cpCleanupFlow modNm
        }
 
-{-# LINE 390 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 394 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcModuleCompile1 :: EHCCompileRunner m => Maybe EHCompileUnitState -> HsName -> EHCompilePhaseT m HsName
 cpEhcModuleCompile1 targHSState modNm
-{-# LINE 394 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 398 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
   = do { cr <- get
        ; let (ecu,_,opts,fp) = crBaseInfo modNm cr
              defaultResult = modNm
@@ -265,14 +267,17 @@
        ; when (ehcOptVerbosity opts >= VerboseDebug)
               (liftIO $ putStrLn ("State: in: " ++ show (ecuState ecu) ++ ", to: " ++ show targHSState))
        ; case (ecuState ecu,targHSState) of
-{-# LINE 422 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 426 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
            (ECUS_Haskell st,Just (ECUS_Haskell HSOnlyImports))
              |    st == HSStart
                || st == LHSStart
              -> do { cpEhcHaskellModulePrepareSrc modNm
+{-
+-}
                    ; modNm2 <- cpEhcHaskellImport stnext
                                                   (pkgExposedPackages $ ehcOptPkgDb opts)
                                                   modNm
+                   -- ; (modNm2, _, _, _) <- bcall $ HsModnameAndImports modNm
                    ; cpEhcHaskellModulePrepareHS2 modNm2
                    ; cpMsg modNm2 VerboseNormal ("Imports of " ++ hsstateShowLit st ++ "Haskell")
                    ; when (ehcOptVerbosity opts >= VerboseDebug)
@@ -305,7 +310,8 @@
              |    st == HSOnlyImports
                || st == LHSOnlyImports
              -> do { cpMsg modNm VerboseMinimal ("Compiling " ++ hsstateShowLit st ++ "Haskell")
-                   ; cpEhcHaskellModuleAfterImport (ecuIsTopMod ecu) opts st
+                   -- ; isTopMod <- bcall $ IsTopMod $ mkPrevFileSearchKeyWithName modNm
+                   ; cpEhcHaskellModuleAfterImport {- isTopMod -} (_ecuIsTopMod ecu) opts st
                                                    (pkgExposedPackages $ ehcOptPkgDb opts)
                                                    modNm
                    ; cpUpdCU modNm (ecuStoreState (ECUS_Haskell HSAllSem))
@@ -320,7 +326,7 @@
                    ; return defaultResult
                    }
 
-{-# LINE 493 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 501 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
            (ECUS_Haskell HSStart,_)
              -> do { cpMsg modNm VerboseMinimal "Compiling Haskell"
                    ; cpEhcHaskellModulePrepare modNm
@@ -342,33 +348,20 @@
                    ; cpUpdCU modNm (ecuStoreState (ECUS_Haskell HMOnlyMinimal))
                    ; return defaultResult
                    }
-           (ECUS_CoreRun cst, Just (ECUS_Haskell HSOnlyImports))
-             | {- cst == CRRStartText || -} isBinary
-             -> do { cpMsg modNm VerboseNormal $ "Reading CoreRun (" ++ (if isBinary then "binary" else "textual") ++ ")"
-                   ; cpEhcHaskellModulePrepareSrc modNm
-                   ; modNm2 <- cpEhcCoreRunImport isBinary modNm
-                   ; cpUpdCU modNm2 (ecuStoreState (ECUS_CoreRun CRROnlyImports))
-                   ; return modNm2
-                   }
-             where isBinary = cst == CRRStartBinary
-           (ECUS_CoreRun CRROnlyImports,Just (ECUS_CoreRun CRRAllSem))
-             -> do { cpMsg modNm VerboseMinimal "Compiling CoreRun"
-                   ; cpEhcCoreRunModuleAfterImport (ecuIsTopMod ecu) opts modNm
-                   ; cpUpdCU modNm (ecuStoreState (ECUS_CoreRun CRRAllSem))
-                   ; return defaultResult
-                   }
            (ECUS_Core cst, Just (ECUS_Haskell HSOnlyImports))
              | cst == CRStartText || isBinary
              -> do { cpMsg modNm VerboseNormal $ "Reading Core (" ++ (if isBinary then "binary" else "textual") ++ ")"
                    ; cpEhcHaskellModulePrepareSrc modNm
                    ; modNm2 <- cpEhcCoreImport isBinary modNm
+                   -- ; (modNm2, _, _, _) <- bcall $ ModnameAndImports (mkPrevFileSearchKeyWithName modNm) ASTType_Core
                    ; cpUpdCU modNm2 (ecuStoreState (ECUS_Core CROnlyImports))
                    ; return modNm2
                    }
              where isBinary = cst == CRStartBinary
            (ECUS_Core CROnlyImports,Just (ECUS_Core CRAllSem))
              -> do { cpMsg modNm VerboseMinimal "Compiling Core"
-                   ; cpEhcCoreModuleAfterImport (ecuIsTopMod ecu) opts modNm
+                   -- ; isTopMod <- bcall $ IsTopMod $ mkPrevFileSearchKeyWithName modNm
+                   ; cpEhcCoreModuleAfterImport {- isTopMod -} (_ecuIsTopMod ecu) opts modNm
                    ; cpUpdCU modNm (ecuStoreState (ECUS_Core CRAllSem))
                    ; return defaultResult
                    }
@@ -377,7 +370,9 @@
            (ECUS_Eh EHStart,_)
              -> do { cpMsg modNm VerboseMinimal "Compiling EH"
                    ; cpUpdOpts (\o -> o {ehcOptHsChecksInEH = True})
-                   ; cpEhcEhParse modNm
+                   ; (_ :: AST_EH) <- bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_Ignore) ASTType_EH (ASTFileContent_Text, ASTFileUse_Src) ASTFileTiming_Current
+                   ; cpStopAt CompilePoint_Parse
+                   -- ; cpEhcEhParse modNm
                    ; cpGetDummyCheckSrcMod modNm
                    ; cpEhcEhModuleCommonPhases True True True opts modNm
 
@@ -413,12 +408,12 @@
            _ -> return defaultResult
        }
 
-{-# LINE 622 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 636 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 {-|
 EH common phases: analysis + core + grin
 
 -}
-{-# LINE 626 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 640 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcCoreModuleCommonPhases :: EHCCompileRunner m => Bool -> Bool -> Bool -> EHCOpts -> HsName -> EHCompilePhaseT m ()
 cpEhcCoreModuleCommonPhases isMainMod isTopMod doMkExec opts modNm
   = cpSeq ([
@@ -426,14 +421,14 @@
            ]
           )
 
-{-# LINE 643 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 657 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcEhModuleCommonPhases :: EHCCompileRunner m => Bool -> Bool -> Bool -> EHCOpts -> HsName -> EHCompilePhaseT m ()
 cpEhcEhModuleCommonPhases isMainMod isTopMod doMkExec opts modNm
   = cpSeq [ cpEhcEhAnalyseModuleDefs modNm
           , cpEhcCoreModuleCommonPhases isMainMod isTopMod doMkExec opts modNm
           ]
 
-{-# LINE 651 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 665 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Common phases when starting with a Haskell module.
 -- HS common phases: HS analysis + EH common
 cpEhcHaskellModuleCommonPhases :: EHCCompileRunner m => Bool -> Bool -> EHCOpts -> HsName -> EHCompilePhaseT m ()
@@ -447,7 +442,7 @@
                }
           ]
 
-{-# LINE 670 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 684 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | All the work to be done after Haskell src imports have been read/analysed.
 -- Post module import common phases: Parse + Module analysis + HS common
 cpEhcHaskellModuleAfterImport
@@ -467,7 +462,7 @@
           , cpEhcHaskellModulePostlude modNm
           ]
 
-{-# LINE 697 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 711 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | All the work to be done after Core src/binary imports have been read/analysed
 cpEhcCoreModuleAfterImport
   :: EHCCompileRunner m =>
@@ -485,7 +480,7 @@
           ]
        }
 
-{-# LINE 716 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 730 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | All the work to be done after CoreRun src/binary imports have been read/analysed
 cpEhcCoreRunModuleAfterImport
   :: EHCCompileRunner m =>
@@ -503,39 +498,37 @@
           ]
        }
 
-{-# LINE 739 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 753 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 {-|
 Prepare module for compilation.
 This should be the first step before compilation of a module and is meant to obtain cached info from a previous compilation.
 
 -}
-{-# LINE 756 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 770 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcHaskellModulePrepareSrc :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcHaskellModulePrepareSrc modNm
   = cpGetMetaInfo [GetMeta_Src,GetMeta_Dir] modNm
 
 cpEhcHaskellModulePrepareHS2 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpEhcHaskellModulePrepareHS2 modNm
-  = cpSeq [ cpGetMetaInfo
+cpEhcHaskellModulePrepareHS2 modNm = do
+          cpGetMetaInfo
               [ GetMeta_Src, GetMeta_HI, GetMeta_Core
               , GetMeta_CoreRun
               , GetMeta_Dir
               ] modNm
-          , cpGetPrevHI modNm
-          -- , cpFoldHI modNm
-          , cpFoldHIInfo modNm
-          ]
+          cpGetPrevHI modNm
+          cpFoldHIInfo modNm
+          -- void $ bcall $ FoldHIInfo modNm
 
 cpEhcHaskellModulePrepareHI :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpEhcHaskellModulePrepareHI modNm
-  = cpSeq [ cpGetMetaInfo
+cpEhcHaskellModulePrepareHI modNm = do
+          cpGetMetaInfo
               [ GetMeta_HI, GetMeta_Core
               , GetMeta_CoreRun
               ] modNm
-          , cpGetPrevHI modNm
-          -- , cpFoldHI modNm
-          , cpFoldHIInfo modNm
-          ]
+          cpGetPrevHI modNm
+          cpFoldHIInfo modNm
+          -- void $ bcall $ FoldHIInfo modNm
 
 cpEhcHaskellModulePrepare :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcHaskellModulePrepare modNm
@@ -543,14 +536,14 @@
           , cpEhcHaskellModulePrepareHS2 modNm
           ]
 
-{-# LINE 801 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 813 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpEhcHaskellModulePostlude :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcHaskellModulePostlude modNm
   = cpSeq [ cpOutputHI "hi" modNm
           , cpCleanupCU modNm
           ]
 
-{-# LINE 811 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 823 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Get import information from Haskell module source text.
 cpEhcHaskellImport
   :: EHCCompileRunner m =>
@@ -592,15 +585,18 @@
        }
   where cppAndParse modNm
           doCPP
-          = cpSeq [ when doCPP (cpPreprocessWithCPP pkgKeyDirL modNm)
+          = cpSeq [ -- when doCPP (void $ bcall $ FPathPreprocessedWithCPP pkgKeyDirL (mkPrevFileSearchKeyWithName modNm))
+                    when doCPP (void $ cpPreprocessWithCPP pkgKeyDirL modNm)
                   , cpParseHsImport (hsstateIsLiteral hsst) modNm
+                  -- , bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) ASTType_HS (ASTFileContent_Text, ASTFileUse_SrcImport) ASTFileTiming_Current
                   ]
         foldAndImport modNm
-          = do { cpFoldHsMod modNm
-               ; cpGetHsModnameAndImports modNm
-               }
+          = do cpFoldHsMod modNm
+               -- bcall $ FoldHsMod (mkPrevFileSearchKeyWithName modNm)
+               cpGetHsModnameAndImports modNm
 
-{-# LINE 877 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+
+{-# LINE 892 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Parse a Haskell module
 cpEhcHaskellParse
   :: EHCCompileRunner m =>
@@ -611,29 +607,20 @@
      doCPP litmode
      pkgKeyDirL
      modNm
-  = cpSeq (
-             (if doCPP then [cpPreprocessWithCPP pkgKeyDirL modNm] else [])
-          ++ [ cpParseHs litmode modNm ]
-          ++ [ cpMsg modNm VerboseALot "Parsing done"
-             , cpStopAt CompilePoint_Parse
-             ]
-          )
-
-{-# LINE 905 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
-cpEhcEhParse :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpEhcEhParse modNm
-  = cpSeq [ cpParseEH modNm
-          , cpStopAt CompilePoint_Parse
-          ]
-
-{-# LINE 913 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
-cpEhcCoreParse :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpEhcCoreParse modNm
-  = cpSeq [ cpParseCoreWithFPath Nothing modNm
-          , cpStopAt CompilePoint_Parse
-          ]
+  = do ecu <- bcall $ EcuOf modNm
+       if doCPP
+         then do	-- 20150721 AD: this alternative should be done by else branch too
+           -- bcall $ FPathPreprocessedWithCPP pkgKeyDirL modNm
+           cpPreprocessWithCPP pkgKeyDirL modNm
+           cpParseHs litmode modNm
+         else do
+           -- (_ :: AST_HS) <- bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_AbsenceIsError) ASTType_HS (_ecuASTFileContent ecu, ASTFileUse_Src) ASTFileTiming_Current
+           cpParseHs litmode modNm
+           return ()
+       cpMsg modNm VerboseALot "Parsing done"
+       cpStopAt CompilePoint_Parse
 
-{-# LINE 921 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 944 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a Haskell src module for
 --     (1) module information (import, export, etc),
 cpEhcHaskellAnalyseModuleItf :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
@@ -643,7 +630,7 @@
           , cpCleanupHSMod modNm
           ]
 
-{-# LINE 937 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 960 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a Core text/binary src module for
 --     (1) module information (import, export, etc).
 -- Note: TBD: identical to cpEhcCoreRunAnalyseModuleItf
@@ -654,7 +641,7 @@
           -- , cpCleanupHSMod modNm
           ]
 
-{-# LINE 954 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 977 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a CoreRun text/binary src module for
 --     (1) module information (import, export, etc).
 -- Note: TBD: identical to cpEhcCoreAnalyseModuleItf
@@ -665,7 +652,7 @@
           -- , cpCleanupHSMod modNm
           ]
 
-{-# LINE 971 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 994 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a Haskell src module for
 --     (2) names + dependencies
 cpEhcHaskellAnalyseModuleDefs :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
@@ -676,7 +663,7 @@
           , cpStopAt CompilePoint_AnalHS
           ]
 
-{-# LINE 983 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1006 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a Haskell src module for
 --     (3) types
 cpEhcEhAnalyseModuleDefs :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
@@ -686,7 +673,7 @@
           , cpStopAt CompilePoint_AnalEH
           ]
 
-{-# LINE 994 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1017 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Part 1 Core processing, on a per module basis, part1 is done always
 cpEhcCorePerModulePart1 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcCorePerModulePart1 modNm
@@ -703,39 +690,29 @@
            )
        }
 
-{-# LINE 1026 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1049 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Get import information from Core module source text/binary.
 cpEhcCoreImport
   :: EHCCompileRunner m => Bool -> HsName -> EHCompilePhaseT m HsName
 cpEhcCoreImport
      isBinary modNm
-  = do { cr <- get
-       ; let (_,opts) = crBaseInfo' cr
-
-       ; if isBinary
-         then cpDecodeCore Nothing modNm
-         else cpParseCoreWithFPath Nothing modNm
-       ; cpFoldCoreMod modNm
-       ; cpGetCoreModnameAndImports modNm
-       }
+  = do
+{-
+       cr <- get
+       let (_,opts) = crBaseInfo' cr
 
-{-# LINE 1043 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
--- | Get import information from CoreRun module source text/binary.
-cpEhcCoreRunImport
-  :: EHCCompileRunner m => Bool -> HsName -> EHCompilePhaseT m HsName
-cpEhcCoreRunImport
-     isBinary modNm
-  = do { cr <- get
-       ; let (_,opts) = crBaseInfo' cr
+       if isBinary
+       then cpDecodeCore Nothing modNm
+       else cpParseCoreWithFPath Nothing modNm
+-}
+{-
+-}
+       (_ :: AST_Core) <- bcall $ ASTFromFile (mkPrevFileSearchKeyWithName modNm) (AlwaysEq ASTFileTimeHandleHow_Ignore) ASTType_Core (if isBinary then ASTFileContent_Binary else ASTFileContent_Text, ASTFileUse_Src) ASTFileTiming_Current
 
-       ; {- if isBinary
-         then -} cpDecodeCoreRun Nothing modNm
-         {- else cpParseCoreWithFPath Nothing modNm -}
-       ; cpFoldCoreRunMod modNm
-       ; cpGetCoreRunModnameAndImports modNm
-       }
+       cpFoldCoreMod modNm
+       cpGetCoreModnameAndImports modNm
 
-{-# LINE 1060 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1094 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a Core src module
 cpEhcCoreAnalyseModule :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcCoreAnalyseModule modNm
@@ -747,7 +724,7 @@
        ; cpSetLimitErrsWhen 5 "Core analysis" errs
        }
 
-{-# LINE 1073 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1107 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Analyse a CoreRun src module
 cpEhcCoreRunAnalyseModule :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcCoreRunAnalyseModule modNm
@@ -759,7 +736,7 @@
        ; cpSetLimitErrsWhen 5 "CoreRun analysis" errs
        }
 
-{-# LINE 1086 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1120 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Part 2 Core processing, part2 is done either for per individual module compilation or after full program analysis
 cpEhcCorePerModulePart2 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcCorePerModulePart2 modNm
@@ -770,12 +747,7 @@
                ]
        }
 
-{-# LINE 1105 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
--- | Part 2 CoreRun processing, part2 is done either for per individual module compilation or after full program analysis
-cpEhcCoreRunPerModulePart2 :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpEhcCoreRunPerModulePart2 = cpProcessCoreRunRest
-
-{-# LINE 1136 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1170 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Core+grin processing, on a per module basis, may only be done when full program analysis is done
 cpEhcCoreGrinPerModuleDoneFullProgAnalysis :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpEhcCoreGrinPerModuleDoneFullProgAnalysis modNm
@@ -785,7 +757,7 @@
              ]
           )
 
-{-# LINE 1147 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1181 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | Make final executable code, either still partly or fully (i.e. also linking)
 cpEhcExecutablePerModule :: EHCCompileRunner m => FinalCompileHow -> [HsName] -> HsName -> EHCompilePhaseT m ()
 cpEhcExecutablePerModule how impModNmL modNm
@@ -795,16 +767,21 @@
               [ cpCompileWithGCC how impModNmL modNm ]
        }
 
-{-# LINE 1173 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1207 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpProcessHs :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
-cpProcessHs modNm
-  = cpSeq [ cpFoldHs modNm
-          , cpFlowHsSem1 modNm
-          , cpTranslateHs2EH modNm
-          , cpCleanupHS modNm
-          ]
+cpProcessHs modNm = do
+    cpFoldHs modNm
+    -- bcall $ FoldHs (mkPrevFileSearchKeyWithName modNm) astpipe_EH_from_HS
+    cpFlowHsSem1 modNm
+    -- bcall $ CRSIOfName (mkPrevFileSearchKeyWithName modNm) ASTType_HS
+    -- bcall $ CRSIOfNameP (mkPrevFileSearchKeyWithName modNm) astpipe_EH_from_HS
+    cpTranslateHs2EH modNm
+    -- (_ :: AST_EH) <- bcall $ AST (mkPrevFileSearchKeyWithName modNm) ASTType_EH
+    -- (_ :: AST_EH) <- bcall $ ASTP (mkPrevFileSearchKeyWithName modNm) astpipe_EH_from_HS
+    cpCleanupHS modNm
+    return ()
 
-{-# LINE 1187 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1226 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpProcessEH :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessEH modNm
   = do { cr <- get
@@ -821,17 +798,22 @@
        -- ; cpUpdStateInfo (\crsi -> crsi {crsiOpts = optsTr})
        ; cpUpdCU modNm (ecuStoreOpts optsTr)
        -}
-       ; cpSeq [ cpFoldEH modNm
-               , cpCleanupFoldEH modNm
-               , cpFlowEHSem1 modNm
-               , cpTranslateEH2Output modNm
-               ,
-                      cpTranslateEH2Core modNm
-               , cpCleanupEH modNm
-               ]
+       ; cpFoldEH modNm
+       -- ; void $ bcall $ FoldEH (mkPrevFileSearchKeyWithName modNm)
+       ; cpCleanupFoldEH modNm
+       ; cpFlowEHSem1 modNm
+       ; cpTranslateEH2Output modNm
+{- -- %%[[(8 tycore)
+       ; if ehcOptTyCore optsTr
+         then cpTranslateEH2TyCore modNm
+         else
+-} -- %%]]
+       ; cpTranslateEH2Core modNm
+       -- ; (_ :: AST_Core) <- bcall $ AST (mkPrevFileSearchKeyWithName modNm) ASTType_Core
+       ; cpCleanupEH modNm
        }
 
-{-# LINE 1249 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1288 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- unprocessed core -> folded core
 cpProcessCoreBasic :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessCoreBasic modNm
@@ -842,28 +824,29 @@
                , void $ cpOutputCore    ASTFileContent_Binary    {-[]-} "" Cfg.suffixDotlessBinaryCore    modNm
                -- , void $ cpOutputSomeModule (^. ecuCore) astHandler'_Core ASTFileContent_Binary "" Cfg.suffixDotlessBinaryCore modNm
                , cpProcessCoreFold modNm
+{-
                , when (targetIsCoreVariation (ehcOptTarget opts)) $
                    void $ -- cpOutputCoreRun ASTFileContent_Binary "" Cfg.suffixDotlessBinaryCoreRun modNm
                           cpOutputSomeModule (^. ecuCoreRun) astHandler'_CoreRun ASTFileContent_Binary "" Cfg.suffixDotlessBinaryCoreRun modNm
+-}
                ]
         }
 
-{-# LINE 1271 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1312 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- unfolded core -> folded core
 -- (called on merged core, and on core directly generated from cached grin)
 cpProcessCoreFold :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessCoreFold modNm
   = do { cr <- get
        ; let (_,_,opts,_) = crBaseInfo modNm cr
-       ; cpSeq $ [] ++
-		  [ cpFlowCoreSemBeforeFold modNm ] ++
-		  (if targetIsViaGrin (ehcOptTarget opts) then [ cpFoldCore2Grin modNm ] else []) ++
-		  (if targetIsCoreVariation (ehcOptTarget opts) then [ cpFoldCore2CoreRun modNm ] else []) ++
-		  [ cpFlowCoreSemAfterFold modNm ] ++
-          []
+       -- ; cpSeq $ [] ++
+       ; cpFlowCoreSemBeforeFold modNm
+       ; when (targetIsCoreVariation (ehcOptTarget opts)) $
+           cpFoldCore2CoreRun modNm
+       ; return ()
        }
 
-{-# LINE 1293 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1339 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpProcessCoreModFold :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessCoreModFold modNm
   = cpSeq $
@@ -871,7 +854,7 @@
       , cpFlowCoreModSem modNm
       ]
 
-{-# LINE 1302 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1348 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 cpProcessCoreRunModFold :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessCoreRunModFold modNm
   = cpSeq $
@@ -879,7 +862,7 @@
       -- , cpFlowCoreRunModSem modNm
       ]
 
-{-# LINE 1311 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1357 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- folded core -> grin, jazy, and the rest
 cpProcessCoreRest :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessCoreRest modNm
@@ -898,7 +881,7 @@
        }
 
 
-{-# LINE 1349 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
+{-# LINE 1395 "src/ehc/EHC/CompilePhase/TopLevelPhases.chs" #-}
 -- | folded corerun -> ...
 cpProcessCoreRunRest :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpProcessCoreRunRest modNm
@@ -907,12 +890,15 @@
        ; cpSeq (   []
                 ++ (if CoreOpt_RunDump `elem` ehcOptCoreOpts opts
                     then -- [void $ cpOutputCore CPOutputCoreHow_CoreRun_Text {-[]-} "" Cfg.suffixDotlessInputOutputCoreRun modNm]
-                         [void $ cpOutputSomeModule (^. ecuCoreRun) astHandler'_CoreRun ASTFileContent_Text "" Cfg.suffixDotlessInputOutputCoreRun modNm]
+                         [void $ cpOutputSomeModule (^. ecuCoreRun) astHandler'_CoreRun ASTFileContent_Text "" Cfg.suffixDotlessOutputTextualCoreRun modNm]
                     else [])
                 ++ (if CoreOpt_Run `elem` ehcOptCoreOpts opts		-- TBD: only when right backend? For now, just do it
                     then [cpRunCoreRun  modNm]
                          -- [cpRunCoreRun2 modNm]
                          -- [cpRunCoreRun3 modNm]
+                    else [])
+                ++ (if targetIsCoreVariation (ehcOptTarget opts)
+                    then [void $ cpOutputSomeModule (^. ecuCoreRun) astHandler'_CoreRun ASTFileContent_Binary "" Cfg.suffixDotlessInputOutputBinaryCoreRun modNm]
                     else [])
                )
        }
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Transformations.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Transformations.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Transformations.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Transformations.hs
@@ -14,6 +14,7 @@
 import UHC.Light.Compiler.CodeGen.TrfUtils
 import UHC.Light.Compiler.Core.Trf
 import UHC.Light.Compiler.EHC.CompilePhase.Output
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
 import qualified UHC.Light.Compiler.HI as HI
 import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
@@ -28,7 +29,7 @@
 
 
 
-{-# LINE 78 "src/ehc/EHC/CompilePhase/Transformations.chs" #-}
+{-# LINE 82 "src/ehc/EHC/CompilePhase/Transformations.chs" #-}
 cpTransformCore :: EHCCompileRunner m => OptimizationScope -> HsName -> EHCompilePhaseT m ()
 cpTransformCore optimScope modNm
   = do { cr <- get
@@ -37,7 +38,6 @@
 
          -- transform
        ; let  mbCore     = _ecuMbCore ecu
-              coreInh    = crsiCoreInh crsi
               trfcoreIn  = emptyTrfCore
                              { trfstMod             	= panicJust "cpTransformCore" mbCore
                              , trfstUniq            	= crsi ^. crsiNextUID
@@ -47,10 +47,11 @@
                                  , trfcoreNotYetTransformed
                                  						= maybe (trfcoreNotYetTransformed emptyTrfCoreExtra) Core2ChkSem.notYetTransformed_Syn_CodeAGItf $ _ecuMbCoreSemMod ecu
                                  , trfcoreExpNmOffMp    = crsiExpNmOffMpDbg "cpTransformCore" modNm crsi
-								 , trfcoreInhLamMp      = Core2GrSem.lamMp_Inh_CodeAGItf $ crsiCoreInh crsi
                                  }
                              }
-              trfcoreOut = trfCore opts optimScope (Core2GrSem.dataGam_Inh_CodeAGItf $ crsiCoreInh crsi) modNm trfcoreIn
+              trfcoreOut = trfCore opts optimScope
+                                   (crsi ^. crsiCEnv ^. cenvDataGam)
+                                   modNm trfcoreIn
 
        -- ; liftIO $ putStrLn $ "cpTransformCore trfcoreNotYetTransformed: " ++ show (trfcoreNotYetTransformed $ trfstExtra trfcoreIn)
          -- put back result: Core
@@ -73,7 +74,7 @@
          -- dump intermediate stages, print errors, if any
        ; let (nms,mcs,errs) = unzip3 $ trfstModStages trfcoreOut
        -- ; cpOutputCoreModules CPOutputCoreHow_Text (\n nm -> "-" ++ show optimScope ++ "-" ++ show n ++ "-" ++ nm) Cfg.suffixDotlessOutputTextualCore modNm [ (n,nm) | (n, Just nm) <- zip nms mcs ]
-       ; cpOutputSomeModules astHandler'_Core ASTFileContent_Text (\n nm -> "-" ++ show optimScope ++ "-" ++ show n ++ "-" ++ nm) Cfg.suffixDotlessOutputTextualCore modNm [ (n,nm) | (n, Just nm) <- zip nms mcs ]
+       ; cpOutputSomeModules (Just $ opts {ehcOptCoreOpts= CoreOpt_Readable : ehcOptCoreOpts opts}) astHandler'_Core ASTFileContent_Text (\n nm -> "-" ++ show optimScope ++ "-" ++ show n ++ "-" ++ nm) Cfg.suffixDotlessOutputTextualCore modNm [ (n,nm) | (n, Just nm) <- zip nms mcs ]
        ; cpSeq $ zipWith (\nm err -> cpSetLimitErrsWhen 5 ("Core errors: " ++ nm) err) nms errs
        }
 
diff --git a/src/UHC/Light/Compiler/EHC/CompilePhase/Translations.hs b/src/UHC/Light/Compiler/EHC/CompilePhase/Translations.hs
--- a/src/UHC/Light/Compiler/EHC/CompilePhase/Translations.hs
+++ b/src/UHC/Light/Compiler/EHC/CompilePhase/Translations.hs
@@ -8,11 +8,15 @@
 import qualified UHC.Util.FastSeq as Seq
 import UHC.Util.Lens
 import Control.Monad.State
+import UHC.Light.Compiler.EHC.CompilePhase.Output
+import UHC.Light.Compiler.EHC.ASTHandler.Instances
+import qualified UHC.Light.Compiler.Config as Cfg
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.CompileUnit
 import UHC.Light.Compiler.EHC.CompileRun
 import UHC.Light.Compiler.Base.Target
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import qualified UHC.Light.Compiler.HS.MainAG as HSSem
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
 import UHC.Light.Compiler.Core.Trf.ElimNonCodegenConstructs
@@ -31,7 +35,7 @@
 
 
 
-{-# LINE 99 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
+{-# LINE 115 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
 cpTranslateHs2EH :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpTranslateHs2EH modNm
   =  do  {  cr <- get
@@ -42,6 +46,8 @@
                  errs   = Seq.toList $ HSSem.errSq_Syn_AGItf hsSem
          ;  when (isJust mbHsSem)
                  (do { cpUpdCU modNm (ecuStoreEH eh)
+                     ; let trpp = HSSem.trpp_Syn_AGItf hsSem
+                     ; when (not $ trppIsEmpty trpp) $ trPPOnIO trpp
                      ; cpSetLimitErrsWhen 5 "Dependency/name analysis" errs
                      ; when (ehcOptEmitHS opts)
                             (liftIO $ putPPFPath (mkOutputFPath opts modNm fp "hs2") (HSSem.pp_Syn_AGItf hsSem) 1000)
@@ -50,26 +56,32 @@
                      })
          }
 
-{-# LINE 119 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
+{-# LINE 137 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
 cpTranslateEH2Output :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpTranslateEH2Output modNm
   =  do  {  cr <- get
+         -- ;  isTopMod <- bcall $ IsTopMod $ mkPrevFileSearchKeyWithName modNm
          ;  let  (ecu,crsi,opts,fp) = crBaseInfo modNm cr
                  mbEHSem= _ecuMbEHSem ecu
                  ehSem  = panicJust "cpTranslateEH2Output" mbEHSem
                  about  = "EH analyses: Type checking"
                  errs   = Seq.toList $ EHSem.allErrSq_Syn_AGItf ehSem
          ;  when (isJust mbEHSem)
-                 (do { cpSetLimitErrsWhen 5 about errs
+                 (do { let trpp = EHSem.trpp_Syn_AGItf ehSem
+                     ; when (not $ trppIsEmpty trpp) $ trPPOnIO trpp
                      ; when (ehcOptEmitEH opts)
                             (liftIO $ putPPFPath (mkOutputFPath opts modNm fp "eh2") (EHSem.pp_Syn_AGItf ehSem) 1000)
+                     ; when (EhOpt_Dump `elem` ehcOptEhOpts opts) $
+                            -- void $ cpOutputSomeModule (^. ecuEH) astHandler'_EH ASTFileContent_Text "" Cfg.suffixDotlessOutputTextualEh (ecuModNm ecu)
+                            liftIO $ putPPFPath (mkOutputFPath opts modNm fp Cfg.suffixDotlessOutputTextualEh) (EHSem.pp_Syn_AGItf ehSem) 1000
                      ; when (ehcOptShowEH opts)
                             (liftIO $ putWidthPPLn 120 (EHSem.pp_Syn_AGItf ehSem))
+                     ; cpSetLimitErrsWhen 5 about errs
                      }
                  )
          }
 
-{-# LINE 164 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
+{-# LINE 192 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
 cpTranslateEH2Core :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 cpTranslateEH2Core modNm
   =  do  {  cr <- get
diff --git a/src/UHC/Light/Compiler/EHC/CompileRun.hs b/src/UHC/Light/Compiler/EHC/CompileRun.hs
--- a/src/UHC/Light/Compiler/EHC/CompileRun.hs
+++ b/src/UHC/Light/Compiler/EHC/CompileRun.hs
@@ -1,49 +1,31 @@
 {-# LANGUAGE TemplateHaskell #-}
 
 module UHC.Light.Compiler.EHC.CompileRun
-( EHCompileRunStateInfo (..)
-, crsiOpts, crsiNextUID, crsiHereUID, crsiHSInh, crsiEHInh, crsiBState, crsiFileSuffMp
-, emptyEHCompileRunStateInfo
-, EHCCompileRunner
-, EHCompileRun, EHCompilePhaseT, EHCompilePhase
-, crBaseInfo, crMbBaseInfo, crBaseInfo'
+( module UHC.Light.Compiler.EHC.CompileRun.Base
 , cpUpdOpts
-, cpMsg, cpMsg'
-, cpStepUID, cpSetUID
-, cpSystem', cpSystem
-, cpSystemRaw
 , cpStopAt
-, crsiExpNmOffMpDbg, crsiExpNmOffMp
 , crPartitionMainAndImported
 , crModNeedsCompile
 , crSetAndCheckMain
-, EHCTime, EHCTimeDiff, getEHCTime, ehcTimeDiff, ehcTimeDiffFmt
-, EHCIOInfo (..), newEHCIOInfo
-, cpRegisterFilesToRm
-, cpRmFilesToRm
-, crPartitionIntoPkgAndOthers )
+, cpGetMetaInfo
+, newEHCIOInfo )
 where
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import System.IO
-import System.Exit
-import System.Environment
-import System.Process
 import Control.Monad.State hiding (get)
 import qualified Control.Monad.State as MS
-import Control.Monad.Error
-import Control.Exception as CE
 import UHC.Util.Lens
 import UHC.Light.Compiler.CodeGen.ValAccess as VA
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.FileSuffMp
 import UHC.Light.Compiler.EHC.CompileUnit
-import UHC.Light.Compiler.EHC.BuildFunction
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import qualified UHC.Light.Compiler.Core as Core
 import qualified UHC.Light.Compiler.CoreRun as CoreRun
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import qualified UHC.Light.Compiler.HS.MainAG as HSSem
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
+import qualified UHC.Light.Compiler.Config as Cfg
 import UHC.Light.Compiler.EHC.CompileGroup
 import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
 import UHC.Light.Compiler.Module.ImportExport
@@ -69,247 +51,20 @@
 
 
 
-{-# LINE 82 "src/ehc/EHC/CompileRun.chs" #-}
-type EHCTime = Integer
-type EHCTimeDiff = Integer
 
-getEHCTime :: IO EHCTime
-getEHCTime = getCPUTime
-
-ehcTimeDiff :: EHCTime -> EHCTime -> EHCTimeDiff
-ehcTimeDiff = (-)
-
-ehcTimeDiffFmt :: EHCTimeDiff -> String
-ehcTimeDiffFmt t
-  = fm 2 hrs ++ ":" ++ fm 2 mins ++ ":" ++ fm 2 secs ++ ":" ++ fm 6 (psecs `div` 1000000)
-  where (r0  , psecs) = t  `quotRem` 1000000000000
-        (r1  , secs ) = r0 `quotRem` 60
-        (r2  , mins ) = r1 `quotRem` 60
-        (days, hrs  ) = r2 `quotRem` 24
-        fm n x = strPadLeft '0' n (show x)
-
-{-# LINE 102 "src/ehc/EHC/CompileRun.chs" #-}
-data EHCIOInfo
-  = EHCIOInfo
-      { ehcioinfoStartTime			:: EHCTime
-      , ehcioinfoLastTime			:: EHCTime
-      }
-
+{-# LINE 88 "src/ehc/EHC/CompileRun.chs" #-}
 newEHCIOInfo :: IO (IORef EHCIOInfo)
 newEHCIOInfo
   = do t <- getEHCTime
        newIORef (EHCIOInfo t t)
 
 
-{-# LINE 136 "src/ehc/EHC/CompileRun.chs" #-}
-data EHCompileRunStateInfo
-  = EHCompileRunStateInfo
-      { _crsiOpts       :: !EHCOpts                             -- options
-      , _crsiNextUID    :: !UID                                 -- unique id, the next one
-      , _crsiHereUID    :: !UID                                 -- unique id, the current one
-      , _crsiHSInh      :: !HSSem.Inh_AGItf                     -- current inh attrs for HS sem
-      , _crsiEHInh      :: !EHSem.Inh_AGItf                     -- current inh attrs for EH sem
-      , _crsiFileSuffMp :: FileSuffMp							-- allowed suffixes
-      , crsiCoreInh     :: !Core2GrSem.Inh_CodeAGItf            -- current inh attrs for Core2Grin sem
-      , crsiCore2RunInh	:: !CoreRun.Nm2RefMp       				-- current inh attrs for Core2CoreRun sem
-      , crsiMbMainNm    :: !(Maybe HsName)                      -- name of main module, if any
-      , crsiHSModInh    :: !HSSemMod.Inh_AGItf                  -- current inh attrs for HS module analysis sem
-      , crsiModMp       :: !ModMp                               -- import/export info for modules
-      , crsiGrpMp       :: (Map.Map HsName EHCompileGroup)      -- not yet used, for mut rec modules
-      , crsiOptim       :: !Optim                               -- inter module optimisation info
-      , crsiModOffMp    :: !VA.HsName2FldMpMp              		-- mapping of all modules + exp entries to offsets in module + exp tables
-      , crsiEHCIOInfo	:: !(IORef EHCIOInfo)					-- unsafe info
-      , crsiFilesToRm   :: ![FPath]                             -- files to clean up (remove)
-      , _crsiBState		:: !BState								-- Build state for use of build functions
-      }
-
-{-# LINE 169 "src/ehc/EHC/CompileRun.chs" #-}
-mkLabel ''EHCompileRunStateInfo
-
-{-# LINE 173 "src/ehc/EHC/CompileRun.chs" #-}
-emptyEHCompileRunStateInfo :: EHCompileRunStateInfo
-emptyEHCompileRunStateInfo
-  = EHCompileRunStateInfo
-      { _crsiOpts       =   defaultEHCOpts
-      , _crsiNextUID    =   uidStart
-      , _crsiHereUID    =   uidStart
-      , _crsiHSInh      =   panic "emptyEHCompileRunStateInfo.crsiHSInh"
-      , _crsiEHInh      =   panic "emptyEHCompileRunStateInfo.crsiEHInh"
-      , _crsiFileSuffMp =	emptyFileSuffMp
-      , crsiCoreInh     =   panic "emptyEHCompileRunStateInfo.crsiCoreInh"
-      , crsiCore2RunInh	=   panic "emptyEHCompileRunStateInfo.crsiCoreRunInh"
-      , crsiMbMainNm    =   Nothing
-      , crsiHSModInh    =   panic "emptyEHCompileRunStateInfo.crsiHSModInh"
-      , crsiModMp       =   Map.empty
-      , crsiGrpMp       =   Map.empty
-      , crsiOptim       =   defaultOptim
-      , crsiModOffMp    =   Map.empty
-      , crsiEHCIOInfo   =   panic "emptyEHCompileRunStateInfo.crsiEHCIOInfo"
-      , crsiFilesToRm   =   []
-      , _crsiBState   	=   emptyBState
-      }
-
-{-# LINE 207 "src/ehc/EHC/CompileRun.chs" #-}
-crsiExpNmOffMpDbg :: String -> HsName -> EHCompileRunStateInfo -> VA.HsName2FldMp
-crsiExpNmOffMpDbg ctxt modNm crsi = mmiNmOffMp $ panicJust ("crsiExpNmOffMp." ++ ctxt ++ show ks ++ ": " ++ show modNm) $ Map.lookup modNm $ crsiModMp crsi
-  where ks = Map.keys $ crsiModMp crsi
-
-crsiExpNmOffMp :: HsName -> EHCompileRunStateInfo -> VA.HsName2FldMp
-crsiExpNmOffMp modNm crsi = mmiNmOffMp $ panicJust ("crsiExpNmOffMp: " ++ show modNm) $ Map.lookup modNm $ crsiModMp crsi
-
-{-# LINE 216 "src/ehc/EHC/CompileRun.chs" #-}
-instance Show EHCompileRunStateInfo where
-  show _ = "EHCompileRunStateInfo"
-
-instance PP EHCompileRunStateInfo where
-  pp i = "CRSI:" >#< ppModMp (crsiModMp i)
-
-{-# LINE 224 "src/ehc/EHC/CompileRun.chs" #-}
-instance CompileRunStateInfo EHCompileRunStateInfo HsName () where
-  crsiImportPosOfCUKey n i = ()
-
-{-# LINE 229 "src/ehc/EHC/CompileRun.chs" #-}
-class (MonadIO m, CompileRunner FileSuffInitState HsName () FileLoc EHCompileUnit EHCompileRunStateInfo Err (EHCompilePhaseAddonT m)) => EHCCompileRunner m where
-
-instance ( CompileRunStateInfo EHCompileRunStateInfo HsName ()
-         , CompileUnit EHCompileUnit HsName FileLoc FileSuffInitState
-         , CompileRunError Err ()
-         -- , MonadError (CompileRunState Err) m
-         -- , MonadState EHCompileRun (EHCompilePhaseAddonT m)
-         , MonadIO m -- (EHCompilePhaseAddonT m)
-         , Monad m
-         ) => CompileRunner FileSuffInitState HsName () FileLoc EHCompileUnit EHCompileRunStateInfo Err (EHCompilePhaseAddonT m)
-
-instance ( CompileRunStateInfo EHCompileRunStateInfo HsName ()
-         , CompileUnit EHCompileUnit HsName FileLoc FileSuffInitState
-         , CompileRunError Err ()
-         -- , MonadError (CompileRunState Err) m
-         -- , MonadState EHCompileRun (EHCompilePhaseAddonT m)
-         , MonadIO m -- (EHCompilePhaseAddonT m)
-         , Monad m
-         ) => EHCCompileRunner m
-
-{-# LINE 251 "src/ehc/EHC/CompileRun.chs" #-}
-type EHCompileRun           = CompileRun HsName EHCompileUnit EHCompileRunStateInfo Err
-type EHCompilePhaseAddonT m = StateT EHCompileRun m
-type EHCompilePhaseT      m = CompilePhaseT HsName EHCompileUnit EHCompileRunStateInfo Err (EHCompilePhaseAddonT m)
-type EHCompilePhase         = EHCompilePhaseT IO
-
-{-# LINE 263 "src/ehc/EHC/CompileRun.chs" #-}
-crBaseInfo' :: EHCompileRun -> (EHCompileRunStateInfo,EHCOpts)
-crBaseInfo' cr
-  = (crsi,opts)
-  where crsi   = _crStateInfo cr
-        opts   = crsi ^. crsiOpts
-
-crMbBaseInfo :: HsName -> EHCompileRun -> (Maybe EHCompileUnit, EHCompileRunStateInfo, EHCOpts, Maybe FPath)
-crMbBaseInfo modNm cr
-  = ( mbEcu ,crsi
-    -- if any per module opts are available, use those
-    , maybe opts id $ mbEcu >>= ecuMbOpts
-    , fmap ecuFilePath mbEcu
-    )
-  where mbEcu       = crMbCU modNm cr
-        (crsi,opts) = crBaseInfo' cr
-
-crBaseInfo :: HsName -> EHCompileRun -> (EHCompileUnit,EHCompileRunStateInfo,EHCOpts,FPath)
-crBaseInfo modNm cr
-  = ( maybe (panic "crBaseInfo.mbEcu") id mbEcu
-    , crsi
-    , opts
-    , maybe (panic "crBaseInfo.mbFp") id mbFp
-    )
-  where (mbEcu, crsi, opts, mbFp) = crMbBaseInfo modNm cr
-
-{-# LINE 298 "src/ehc/EHC/CompileRun.chs" #-}
-cpMemUsage :: EHCCompileRunner m => EHCompilePhaseT m ()
-cpMemUsage
-  = return ()
-
-{-# LINE 321 "src/ehc/EHC/CompileRun.chs" #-}
+{-# LINE 120 "src/ehc/EHC/CompileRun.chs" #-}
 cpUpdOpts :: EHCCompileRunner m => (EHCOpts -> EHCOpts) -> EHCompilePhaseT m ()
 cpUpdOpts upd
   = cpUpdSI $ crsiOpts ^$= upd -- (\crsi -> crsi {crsiOpts = upd $ crsiOpts crsi})
 
-{-# LINE 331 "src/ehc/EHC/CompileRun.chs" #-}
-cpRegisterFilesToRm :: EHCCompileRunner m => [FPath] -> EHCompilePhaseT m ()
-cpRegisterFilesToRm fpL
-  = cpUpdSI (\crsi -> crsi {crsiFilesToRm = fpL ++ crsiFilesToRm crsi})
-
-{-# LINE 337 "src/ehc/EHC/CompileRun.chs" #-}
-cpRmFilesToRm :: EHCCompileRunner m => EHCompilePhaseT m ()
-cpRmFilesToRm
-  = do { cr <- MS.get
-       ; let (crsi,opts) = crBaseInfo' cr
-             files = Set.toList $ Set.fromList $ map fpathToStr $ crsiFilesToRm crsi
-       ; liftIO $ mapM rm files
-       ; cpUpdSI (\crsi -> crsi {crsiFilesToRm = []})
-       }
-  where rm f = CE.catch (removeFile f)
-                        (\(e :: SomeException) -> hPutStrLn stderr (show f ++ ": " ++ show e))
-
-{-# LINE 354 "src/ehc/EHC/CompileRun.chs" #-}
-cpMsg :: EHCCompileRunner m => HsName -> Verbosity -> String -> EHCompilePhaseT m ()
-cpMsg modNm v m
-  = do { cr <- MS.get
-       ; let (_,_,_,mbFp) = crMbBaseInfo modNm cr
-       ; cpMsg' modNm v m Nothing (maybe emptyFPath id mbFp)
-       }
-
-cpMsg' :: EHCCompileRunner m => HsName -> Verbosity -> String -> Maybe String -> FPath -> EHCompilePhaseT m ()
-cpMsg' modNm v m mbInfo fp
-  = do { cr <- MS.get
-       ; let (mbEcu,crsi,opts,_) = crMbBaseInfo modNm cr
-       ; ehcioinfo <- liftIO $ readIORef (crsiEHCIOInfo crsi)
-       ; clockTime <- liftIO getEHCTime
-       ; let clockStartTimePrev = ehcioinfoStartTime ehcioinfo
-             clockTimePrev      = ehcioinfoLastTime ehcioinfo
-             clockStartTimeDiff = ehcTimeDiff clockTime clockStartTimePrev
-             clockTimeDiff      = ehcTimeDiff clockTime clockTimePrev
-       ; let
-             t				= if v >= VerboseALot then "<" ++ strBlankPad 35 (ehcTimeDiffFmt clockStartTimeDiff ++ "/" ++ ehcTimeDiffFmt clockTimeDiff) ++ ">" else ""
-             m'             = maybe "" (\ecu -> show (ecuSeqNr ecu) ++ t ++ " ") mbEcu ++ m
-       ; liftIO $ putCompileMsg v (ehcOptVerbosity opts) m' mbInfo modNm fp
-       ; clockTime <- liftIO getEHCTime
-       ; liftIO $ writeIORef (crsiEHCIOInfo crsi) (ehcioinfo {ehcioinfoLastTime = clockTime})
-       -- ; cpUpdSI (\crsi -> crsi { crsiTime = clockTime })
-       ; cpMemUsage
-       }
-
-{-# LINE 395 "src/ehc/EHC/CompileRun.chs" #-}
-cpStepUID :: EHCCompileRunner m => EHCompilePhaseT m ()
-cpStepUID
-  = cpUpdSI (\crsi -> let (n,h) = mkNewLevUID (crsi ^. crsiNextUID)
-                      in  crsiNextUID ^= n $ crsiHereUID ^= h $ crsi
-                          -- crsi {_crsiNextUID = n, _crsiHereUID = h}
-            )
-
-cpSetUID :: EHCCompileRunner m => UID -> EHCompilePhaseT m ()
-cpSetUID u
-  = cpUpdSI $ crsiNextUID ^= u -- (\crsi -> crsi {crsiNextUID = u})
-
-{-# LINE 412 "src/ehc/EHC/CompileRun.chs" #-}
-cpSystem' :: EHCCompileRunner m => Maybe FilePath -> (FilePath,[String]) -> EHCompilePhaseT m ()
-cpSystem' mbStdOut (cmd,args)
-  = do { exitCode <- liftIO $ system $ showShellCmd $ (cmd,args ++ (maybe [] (\o -> [">", o]) mbStdOut))
-       ; case exitCode of
-           ExitSuccess -> return ()
-           _           -> cpSetFail
-       }
-
-cpSystem :: EHCCompileRunner m => (FilePath,[String]) -> EHCompilePhaseT m ()
-cpSystem = cpSystem' Nothing
-
-{-# LINE 442 "src/ehc/EHC/CompileRun.chs" #-}
-cpSystemRaw :: EHCCompileRunner m => String -> [String] -> EHCompilePhaseT m ()
-cpSystemRaw cmd args
-  = do { exitCode <- liftIO $ rawSystem cmd args
-       ; case exitCode of
-           ExitSuccess -> return ()
-           _           -> cpSetErrs [rngLift emptyRange Err_PP $ pp $ show exitCode] -- cpSetFail
-       }
-
-{-# LINE 456 "src/ehc/EHC/CompileRun.chs" #-}
+{-# LINE 130 "src/ehc/EHC/CompileRun.chs" #-}
 cpStopAt :: EHCCompileRunner m => CompilePoint -> EHCompilePhaseT m ()
 cpStopAt atPhase
   = do { cr <- MS.get
@@ -318,8 +73,8 @@
                 cpSetStopAllSeq
        }
 
-{-# LINE 470 "src/ehc/EHC/CompileRun.chs" #-}
-crPartitionNewerOlderImports :: HsName -> EHCompileRun -> ([EHCompileUnit],[EHCompileUnit])
+{-# LINE 144 "src/ehc/EHC/CompileRun.chs" #-}
+crPartitionNewerOlderImports :: HsName -> EHCompileRun m -> ([EHCompileUnit],[EHCompileUnit])
 crPartitionNewerOlderImports modNm cr
   = partition isNewer $ map (flip crCU cr) $ ecuImpNmL ecu
   where ecu = crCU modNm cr
@@ -330,13 +85,13 @@
             where t' = panicJust "crPartitionNewerOlderImports2" $ _ecuMbHIInfoTime ecu'
                   mbt = _ecuMbHIInfoTime ecu'
 
-{-# LINE 487 "src/ehc/EHC/CompileRun.chs" #-}
+{-# LINE 161 "src/ehc/EHC/CompileRun.chs" #-}
 -- | Partition modules into main and non main (i.e. imported) module names
-crPartitionMainAndImported :: EHCompileRun -> [HsName] -> ([HsName], [HsName])
+crPartitionMainAndImported :: EHCompileRun m -> [HsName] -> ([HsName], [HsName])
 crPartitionMainAndImported cr modNmL = partition (\n -> ecuHasMain $ crCU n cr) modNmL
 
-{-# LINE 497 "src/ehc/EHC/CompileRun.chs" #-}
-crModNeedsCompile :: HsName -> EHCompileRun -> Bool
+{-# LINE 171 "src/ehc/EHC/CompileRun.chs" #-}
+crModNeedsCompile :: HsName -> EHCompileRun m -> Bool
 crModNeedsCompile modNm cr
   = ecuIsMainMod ecu -- ecuIsTopMod ecu
     || not (  ehcOptCheckRecompile opts
@@ -347,22 +102,7 @@
         (newer,_) = crPartitionNewerOlderImports modNm cr
         opts = _crStateInfo cr ^. crsiOpts
 
-{-# LINE 529 "src/ehc/EHC/CompileRun.chs" #-}
--- | split module names in those part of a package, and others
-crPartitionIntoPkgAndOthers :: EHCompileRun -> [HsName] -> ([PkgModulePartition],[HsName])
-crPartitionIntoPkgAndOthers cr modNmL
-  = ( [ (p,d,m)
-      | ((p,d),m) <- Map.toList $ Map.unionsWith (++) $ map Map.fromList ps
-      ]
-    , concat ms
-    )
-  where (ps,ms) = unzip $ map loc modNmL
-        loc m = case filelocKind $ ecuFileLocation ecu of
-                  FileLocKind_Dir	  -> ([           ], [m])
-                  FileLocKind_Pkg p d -> ([((p,d),[m])], [ ])
-              where (ecu,_,_,_) = crBaseInfo m cr
-
-{-# LINE 549 "src/ehc/EHC/CompileRun.chs" #-}
+{-# LINE 203 "src/ehc/EHC/CompileRun.chs" #-}
 crSetAndCheckMain :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
 crSetAndCheckMain modNm
   = do { cr <- MS.get
@@ -374,4 +114,51 @@
              | otherwise                -> return ()
                                            -- mkerr 0 []
        }
+
+{-# LINE 221 "src/ehc/EHC/CompileRun.chs" #-}
+-- | Extract various pieces of meta info (such as timestamps) of files needed further in the compilation process
+cpGetMetaInfo :: EHCCompileRunner m => [GetMeta] -> HsName -> EHCompilePhaseT m ()
+cpGetMetaInfo gm modNm
+  =  do  {  cr <- MS.get
+         ;  let (ecu,_,opts,fp) = crBaseInfo modNm cr
+         ;  when (GetMeta_Src `elem` gm) $
+                 tm opts ecu ecuStoreSrcTime        (ecuSrcFilePath ecu)
+                 -- void $ bcall $ ModfTimeOfFile (mkPrevFileSearchKeyWithName modNm) ASTType_HS (_ecuASTFileContent ecu, ASTFileUse_Src) ASTFileTiming_Current
+
+         ;  when (GetMeta_HI `elem` gm)
+                 (tm opts ecu ecuStoreHIInfoTime
+                                              (mkInOrOutputFPathFor (InputFrom_Loc $ ecuFileLocation ecu) opts modNm fp "hi")
+                 )
+         ;  when (GetMeta_Core `elem` gm) $
+                 tm opts ecu ecuStoreCoreTime      (fpathSetSuff Cfg.suffixDotlessBinaryCore fp)
+                 -- dfltPrev ASTType_Core modNm ecu
+         ;  when (GetMeta_CoreRun `elem` gm) $
+                 tm opts ecu ecuStoreCoreRunTime   (fpathSetSuff Cfg.suffixDotlessBinaryCoreRun fp)
+                 -- dfltPrev ASTType_CoreRun modNm ecu
+         ;  when (GetMeta_Dir `elem` gm) $
+                 wr opts ecu ecuStoreDirIsWritable fp
+                 -- void $ bcall $ DirOfModIsWriteable modNm
+         }
+  where -- dfltPrev astty modNm ecu = void $ bcall $ ModfTimeOfFile (mkPrevFileSearchKeyWithName modNm) astty (ASTFileContent_Binary, ASTFileUse_Cache) ASTFileTiming_Prev
+
+        tm :: EHCCompileRunner m => EHCOpts -> EHCompileUnit -> (ClockTime -> EHCompileUnit -> EHCompileUnit) -> FPath -> EHCompilePhaseT m ()
+        tm opts ecu store fp
+          = do { let n = fpathToStr fp
+               ; nExists <- liftIO $ doesFileExist n
+               ; when (ehcOptVerbosity opts >= VerboseDebug)
+                      (do { liftIO $ putStrLn ("meta info of: " ++ show (ecuModNm ecu) ++ ", file: " ++ n ++ ", exists: " ++ show nExists)
+                          })
+               ; when nExists
+                      (do { t <- liftIO $ fpathGetModificationTime fp
+                          ; when (ehcOptVerbosity opts >= VerboseDebug)
+                                 (do { liftIO $ putStrLn ("time stamp of: " ++ show (ecuModNm ecu) ++ ", time: " ++ show t)
+                                     })
+                          ; cpUpdCU modNm $ store t
+                          })
+               }
+        wr opts ecu store fp
+          = do { pm <- liftIO $ getPermissions (maybe "." id $ fpathMbDir fp)
+               -- ; liftIO $ putStrLn (fpathToStr fp ++ " writ " ++ show (writable pm))
+               ; cpUpdCU modNm $ store (writable pm)
+               }
 
diff --git a/src/UHC/Light/Compiler/EHC/CompileRun/Base.hs b/src/UHC/Light/Compiler/EHC/CompileRun/Base.hs
new file mode 100644
--- /dev/null
+++ b/src/UHC/Light/Compiler/EHC/CompileRun/Base.hs
@@ -0,0 +1,1197 @@
+{-# LANGUAGE GADTs, TemplateHaskell, KindSignatures #-}
+
+module UHC.Light.Compiler.EHC.CompileRun.Base
+( module UHC.Light.Compiler.CodeGen.CEnv
+, BuildGlobal (..)
+, BFun' (..)
+, BFun (..)
+, BFunCacheEntry (..)
+, BCache (..), emptyBCache
+, bcacheResolveModNm
+, BRef (..)
+, ASTResult (..)
+, mkASTResult'
+, mkASTResult
+, BState, emptyBState
+, EHCompileRunCoreRunStateInfo (..), emptyEHCompileRunCoreRunStateInfo
+, EHCompileRunStateInfo (..)
+, emptyEHCompileRunStateInfo
+, EHCCompileRunner
+, EHCompileRun, EHCompilePhaseT, EHCompilePhase
+, TmOfRes (..), emptyTmOfRes
+, bcacheCache, bcacheDpdRel, bcacheModNmForward
+, bstateCache, bstateCallStack
+, crcrsiReqdModules, crcrsiNm2RefMp
+, crsiOpts, crsiASTPipe, crsiNextUID, crsiHereUID, crsiHSInh, crsiEHInh, crsiBState, crsiFileSuffMp
+, crsiCEnv
+, crsiCoreRunState
+, astresAST, astresRef, astresPipe
+, tmofresChoice, tmofresIsOverr, tmofresHasMain
+, crBaseInfo, crMbBaseInfo, crBaseInfo'
+, cpStepUID, cpSetUID
+, cpTrPP, cpTr
+, cpMsg, cpMsg'
+, cpSystem', cpSystem
+, cpSystemRaw
+, bUpdAlreadyFlowIntoCRSIWith, bUpdAlreadyFlowIntoCRSI
+, bLookupECUInCR, bLookupECU', bLookupECU, bUpdECU
+, TmOfResMb, TmOfResM, updTmChoice, updTmChoiceM
+, TmOfDelayedRes (..), emptyTmOfDelayedRes
+, astresTimeStamp
+, tmofdresModNm, tmofdresHasMain, tmofdresImpMp
+, tmofresDelayed, tmofresTm
+, crsiExpNmOffMpDbg, crsiExpNmOffMp
+, EHCIOInfo (..)
+, EHCTime
+, EHCTimeDiff, getEHCTime, ehcTimeDiff, ehcTimeDiffFmt
+, cpRegisterFilesToRm
+, cpRmFilesToRm
+, crPartitionIntoPkgAndOthers )
+where
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import qualified Data.IntMap as IMap
+import Data.Maybe
+import Data.Typeable
+import GHC.Generics (Generic)
+import qualified UHC.Util.RelMap as Rel
+import UHC.Util.Hashable
+import Control.Exception as CE
+import UHC.Util.Lens
+import Data.Functor.Identity
+import UHC.Light.Compiler.EHC.Common
+import UHC.Light.Compiler.Base.Trace
+import UHC.Light.Compiler.EHC.FileSuffMp
+import UHC.Light.Compiler.Base.Optimize
+import Control.Monad.State hiding (get)
+import qualified Control.Monad.State as MS
+import Control.Applicative
+import UHC.Util.Error
+import Control.Monad.Fix
+import System.IO
+import System.Exit
+import System.Environment
+import System.Process
+import UHC.Light.Compiler.EHC.CompileUnit
+import qualified UHC.Light.Compiler.CoreRun as CoreRun
+import UHC.Light.Compiler.CodeGen.ValAccess as VA
+import UHC.Light.Compiler.CodeGen.CEnv
+import UHC.Light.Compiler.EHC.CompileGroup
+import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
+import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Util.Time
+import System.CPUTime
+import System.Locale
+import Data.IORef
+import System.IO.Unsafe
+import System.Directory
+import UHC.Util.FPath
+import UHC.Util.Time
+import System.CPUTime
+import System.Locale
+import Data.IORef
+import System.IO.Unsafe
+import UHC.Light.Compiler.Base.PackageDatabase
+import qualified UHC.Light.Compiler.Base.Pragma as Pragma
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 101 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Global parameterisation for build calls
+data BuildGlobal =
+  BuildGlobal
+    { _bglobPipe		:: ASTPipe		-- ^ the global pipe for the current compilation, required when recursing into imported modules
+    }
+  deriving (Eq, Ord, Typeable, Generic)
+
+instance Hashable BuildGlobal
+
+instance Show BuildGlobal where
+  show (BuildGlobal p) = "Glob(" ++ show p ++ ")"
+
+instance PP BuildGlobal where
+  pp (BuildGlobal p) = "Glob" >#< p
+
+
+{-# LINE 123 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Representation of build functions (embedded comment screws up haddock, hence see source code directly).
+-- Regretfully deriving Generic (and thus Hashable) does not work for GADTs, so must be done manually, below.
+-- Ord cannot be derived either.
+-- First order type, no fields with recursive type are allowed to allow for more easily implementable comparison etc.
+data BFun' m res where
+  --- | Obtain global state
+  CRSI
+    :: BFun' m (EHCompileRunStateInfo m)
+
+  --- | Obtain global state specific for compile order
+  CRSIWithCompileOrderPl
+    :: !BuildGlobal
+    -> ![[HsName]]				--- ^ compile order
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m (EHCompileRunStateInfo m)
+
+  --- | Obtain global state specific for imports
+  CRSIWithImpsPl
+    :: !BuildGlobal
+    -> !PrevFileSearchKey
+    -> !(Set.Set HsName)				--- ^ imports
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m (EHCompileRunStateInfo m)
+
+{-
+  --- | Obtain global state specific for a module, which depends on the (imported) module names
+  CRSIOfName
+    :: !PrevFileSearchKey				--- ^ module name etc
+    -> !ASTType							--- ^ content type
+    -> BFun' m EHCompileRunStateInfo
+-}
+
+  CRSIOfNameP
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name etc
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m (EHCompileRunStateInfo m)
+
+  CRSIOfNamePl
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name etc
+    -> !ASTBuildPlan					--- ^ pipeline leading to content
+    -> BFun' m (EHCompileRunStateInfo m)
+
+  --- | Obtain FPath and module name of a file name
+  FPathSearchForFile
+    :: !String				--- ^ suffix, if absent in name
+    -> !FilePath			--- ^ file name
+    -> BFun' m (HsName, FPath)
+
+  --- | Obtain FPath of module taking into account ast type, overriding, suffix etc
+  FPathForAST
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTType							--- ^ content type
+    -> !ASTSuffixKey					--- ^ suffix and content variation
+    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
+    -> BFun' m (FPath, ASTFileSuffOverride, EHCompileUnit)
+
+  --- | Extract imported modules from a module
+  ImportsOfNamePl
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name etc
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m (HsName, Set.Set HsName)
+
+  --- | Extract recursively all import relationships starting with imports
+  ImportsRecursiveWithImpsP
+    :: !BuildGlobal
+    -> !(Maybe PrevSearchInfo)
+    -> !(Set.Set HsName)				--- ^ imports
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Map.Map HsName (Set.Set HsName)		-- recursive result
+         )
+
+  --- | Extract recursively all import relationships starting with module
+  ImportsRecursiveOfNameP
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name etc
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m
+         ( HsName								-- the actual module name
+         , Set.Set HsName						-- imports
+         , Map.Map HsName (Set.Set HsName)		-- recursive result
+         )
+
+  --- | Extract compileunit from a module, as is, no checks on consistency
+  EcuOf
+    :: !HsName				--- ^ module name
+    -> BFun' m EHCompileUnit
+
+{-
+  --- | Extract compileunit from a module, including file path etc walking, suffix detection
+  EcuOfName
+    :: !HsName				--- ^ module name
+    -> BFun' m EHCompileUnit
+-}
+
+  EcuOfPrevNameAndPath
+    :: !PrevFileSearchKey			--- ^ module name and possibly known path
+    -> BFun' m EHCompileUnit
+
+{-
+  EcuOfNameAndPath
+    :: !FileSearchKey				--- ^ module name and possibly known path
+    -> BFun' m EHCompileUnit
+-}
+
+  --- | Extract global options, possibly overridden for a module
+  EHCOptsOf
+    :: !PrevFileSearchKey				--- ^ module name
+    -> BFun' m EHCOpts
+
+  --- | Actual module name, as it occurs in module itself
+  ActualModNm
+    :: !PrevFileSearchKey				--- ^ module name
+    -> BFun' m HsName
+
+  --- | The build plan for a pipe
+  BuildPlanPMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m (Maybe ASTBuildPlan)
+
+  --- | The build plan choice for a pipe
+  ASTBuildPlanChoicePMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m (Maybe (TmOfRes m))
+
+  ASTRefFromFileEither
+    :: Typeable ast
+    => !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !Bool							--- ^ errors are returned instead of reported directly
+    -> !(AlwaysEq ASTFileTimeHandleHow)	--- ^ how to deal with timestamp
+    -> !ASTType							--- ^ content type
+    -> !ASTSuffixKey					--- ^ suffix and content variation
+    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
+    -> BFun' m (Either (String,[Err]) (BRef m ast))
+
+{-
+  ASTRefFromFileMb
+    :: Typeable ast
+    => !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !(AlwaysEq ASTFileTimeHandleHow)	--- ^ how to deal with timestamp
+    -> !ASTType							--- ^ content type
+    -> !ASTSuffixKey					--- ^ suffix and content variation
+    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
+    -> BFun' m (Maybe (BRef m ast))
+-}
+
+  --- | Get a particular AST from file for a module
+  ASTFromFile
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !(AlwaysEq ASTFileTimeHandleHow)	--- ^ how to deal with timestamp
+    -> !ASTType							--- ^ content type
+    -> !ASTSuffixKey					--- ^ suffix and content variation
+    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
+    -> BFun' m res
+
+  --- | Get a particular AST for a module
+  ASTP
+    :: !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m res
+
+  ASTPMb
+    :: Typeable ast
+    => !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m (Maybe (ASTResult m ast))
+
+  ASTPlMb
+    :: Typeable ast
+    => !BuildGlobal
+    -> !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTBuildPlan					--- ^ build plan leading to content
+    -> BFun' m (Maybe (ASTResult m ast))
+
+  --- | Get the modification ClockTime of a file for a module
+  ModfTimeOfFile
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTType							--- ^ content type
+    -> !ASTSuffixKey					--- ^ suffix and content variation
+    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
+    -> BFun' m
+         (Maybe
+           ( ClockTime
+           , FPath
+         ) )
+
+  --- | Valid AST from file?
+  ASTFileIsValid
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTType							--- ^ content type
+    -> !ASTSuffixKey					--- ^ suffix and content variation
+    -> !ASTFileTiming					--- ^ timing (i.e. previous or current)
+    -> BFun' m Bool
+
+  --- | Compare timestamps, if possible, yield True if first is new than second
+  ASTFileIsNewerThan
+    :: !(PrevFileSearchKey				--- ^ 1st module name and possibly known path
+        ,ASTType						--- ^ 1st content type
+        ,ASTSuffixKey					--- ^ 1st suffix and content variation
+        ,ASTFileTiming 					--- ^ 1st timing (i.e. previous or current)
+        )
+    -> !(PrevFileSearchKey				--- ^ 2nd module name and possibly known path
+        ,ASTType						--- ^ 2nd content type
+        ,ASTSuffixKey					--- ^ 2nd suffix and content variation
+        ,ASTFileTiming 					--- ^ 2nd timing (i.e. previous or current)
+        )
+    -> BFun' m (Maybe Bool)
+
+  --- | Get writeability of the dir a module resides in
+  DirOfModIsWriteable
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> BFun' m Bool
+
+  --- | Can compile a src module
+  CanCompile
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> BFun' m Bool
+
+{-
+  --- | Src module needs (re)compilation
+  NeedsCompile
+    :: !HsName							--- ^ module name and possibly known path
+    -> BFun' m Bool
+-}
+
+  --- | Module is top module, i.e. specified at commandline with possibly different name than module name in file
+  IsTopMod
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> BFun' m Bool
+
+  --- | Module has a 'main'
+  HasMain
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m Bool
+
+  --- | The result of folding over a module for import/module analysis
+  FoldHsMod
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !(Maybe [PkgModulePartition])	--- ^ optionally do CPP with module partitioning into pkgs
+    -> BFun' m
+         ( AST_HS_Sem_Mod				-- all semantics
+         , Bool							-- has main?
+         , Set.Set Pragma.Pragma		-- pragmas
+         , Maybe EHCOpts				-- possibly adapted options
+         )
+
+{-
+  --- | The actual module name and imported modules, abstracted over the AST type
+  ModnameAndImports
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTType							--- ^ ast type
+    -> BFun' m
+         ( HsName						-- module name
+         , Set.Set HsName				-- imported module names
+         , Maybe PrevSearchInfo			-- search info for modules to be imported from this one
+         , Bool							-- has main
+         )
+
+  --- | The actual module name and imported modules, abstracted over the AST type
+  ModnameAndImportsP
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m
+         ( HsName						-- module name
+         , Set.Set HsName				-- imported module names
+         , Maybe PrevSearchInfo			-- search info for modules to be imported from this one
+         , Bool							-- has main
+         )
+-}
+
+  --- | The actual module name and imported modules, abstracted over the AST type
+  ModnameAndImportsPlMb
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTBuildPlan					--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( HsName						-- module name
+           , Set.Set HsName				-- imported module names
+           , Maybe PrevSearchInfo			-- search info for modules to be imported from this one
+           , Bool							-- has main
+         ) )
+
+{-
+  --- | The actual module name and imported modules, abstracted over the AST type
+  ModnameAndImportsPlMb
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( HsName						-- module name
+           , Set.Set HsName				-- imported module names
+           , Maybe PrevSearchInfo			-- search info for modules to be imported from this one
+         ) )
+-}
+
+  --- | See 'ModnameAndImports', for HS
+  HsModnameAndImports
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> BFun' m
+         ( HsName						-- module name
+         , Set.Set HsName				-- imported module names
+         , Maybe PrevSearchInfo			-- search info for modules to be imported from this one
+         , Bool							-- is main module?
+         )
+
+  --- | HIInfo
+  FoldHIInfo
+    :: !PrevFileSearchKey				--- ^ module name and possibly known path
+    -> BFun' m
+         ( AST_HI						-- all semantics
+         , Set.Set HsName				-- declared imported module names
+         , Set.Set HsName				-- used imported module names
+         , Bool							-- is main module?
+         )
+
+  --- | Imported names info for codegen
+  ImportNameInfo
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> OptimizationScope				--- ^ scope for which this holds
+    -> BFun' m [HsName]
+
+  --- | Import/Export info for module codegen
+  ImportExportImpl
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> OptimizationScope
+    -> BFun' m ModuleImportExportImpl
+
+  --- | HS semantics
+  FoldHsPMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_HS_Sem_Check				-- all semantics
+           -- , Set.Set HsName				-- declared imported module names
+           , Bool							-- is main module?
+         ) )
+
+  --- | HS semantics
+  FoldHsPlMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_HS_Sem_Check				-- all semantics
+           -- , Set.Set HsName				-- declared imported module names
+           , Bool							-- is main module?
+         ) )
+
+  --- | EH semantics
+  FoldEHPMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTPipe							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_EH_Sem_Check				-- all semantics
+         ) )
+
+  --- | EH semantics
+  FoldEHPlMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_EH_Sem_Check				-- all semantics
+         ) )
+
+  --- | Core as src semantics
+  FoldCoreModPlMb
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_Core_Sem_Check			-- all semantics
+           , HsName								-- real mod name
+           , Set.Set HsName						-- declared imported module names
+           , Mod									-- module import/export etc info
+           , Bool									-- is main module?
+           , Maybe PrevSearchInfo
+         ) )
+
+
+
+  --- | Core -> CoreRun semantics
+  FoldCore2CoreRunPlMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTBuildPlan						--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_Core_Sem_ToCoreRun				-- all semantics
+         ) )
+
+  --- | CoreRun as src semantics
+  FoldCoreRunModPlMb
+    :: !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_CoreRun_Sem_Mod				-- all semantics
+           , HsName								-- real mod name
+           , Set.Set HsName						-- declared imported module names
+           , Mod									-- module import/export etc info
+           , Bool									-- is main module?
+           , Maybe PrevSearchInfo
+         ) )
+
+  --- | CoreRun as src semantics
+  FoldCoreRunCheckPlMb
+    :: !BuildGlobal
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> !ASTBuildPlan							--- ^ pipeline leading to content
+    -> BFun' m
+         ( Maybe
+           ( AST_CoreRun_Sem_Check				-- all semantics
+           , AST_CoreRun				-- updated CoreRun
+         ) )
+
+  --- | Get the FPath of the possibly with CPP preprocessed file
+  FPathPreprocessedWithCPP
+    :: [PkgModulePartition]				--- ^ partitioning of modules into packages
+    -> !PrevFileSearchKey							--- ^ module name and possibly known path
+    -> BFun' m FPath
+
+  --- | Exposed packages
+  ExposedPackages
+    :: BFun' m [PkgModulePartition]
+
+-- | Comparison which ignores GADT type info
+bfunCompare :: BFun' m res1 -> BFun' m res2 -> Ordering
+bfunCompare f1 f2 = case (f1,f2) of
+    (CRSI				 							, CRSI 											) -> EQ
+    (CRSIWithCompileOrderPl		a1 b1 c1 	 		, CRSIWithCompileOrderPl	a2 b2 c2 	 		) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (CRSIWithImpsPl			    a1 b1 c1 d1 		, CRSIWithImpsPl		   	a2 b2 c2 d2 		) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
+    (CRSIOfNameP			    a1 b1 c1  			, CRSIOfNameP		    	a2 b2 c2  			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (CRSIOfNamePl			    a1 b1 c1  			, CRSIOfNamePl		    	a2 b2 c2  			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FPathSearchForFile 		a1 b1				, FPathSearchForFile 		a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (FPathForAST           		a1 b1 c1 d1	 		, FPathForAST				a2 b2 c2 d2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
+    (ImportsOfNamePl          	a1 b1 c1 			, ImportsOfNamePl          	a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (ImportsRecursiveWithImpsP	a1 b1 c1 d1 		, ImportsRecursiveWithImpsP	a2 b2 c2 d2 		) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
+    (ImportsRecursiveOfNameP	a1 b1 c1  			, ImportsRecursiveOfNameP	a2 b2 c2  			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (ActualModNm		        a1   				, ActualModNm	    		a2   				) ->         a1 `compare` a2
+    (BuildPlanPMb            	a1 b1 c1		 	, BuildPlanPMb				a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (ASTBuildPlanChoicePMb		a1 b1 c1		 	, ASTBuildPlanChoicePMb		a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (EcuOf		              	a1   				, EcuOf	    				a2   				) ->         a1 `compare` a2
+    (EcuOfPrevNameAndPath		a1 					, EcuOfPrevNameAndPath		a2 					) ->         a1 `compare` a2
+    (EHCOptsOf             		a1   				, EHCOptsOf					a2   				) ->         a1 `compare` a2
+    (ASTRefFromFileEither      	a1 b1 c1 d1	e1 f1	, ASTRefFromFileEither		a2 b2 c2 d2	e2 f2	) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2, e1 `compare` e2, f1 `compare` f2]
+    (ASTFromFile            	a1 b1 c1 d1	e1 		, ASTFromFile				a2 b2 c2 d2	e2		) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2, e1 `compare` e2]
+    (ASTP            			a1 b1 c1		 	, ASTP						a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (ASTPMb            			a1 b1 c1		 	, ASTPMb					a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (ASTPlMb            		a1 b1 c1		 	, ASTPlMb					a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (ModfTimeOfFile         	a1 b1 c1 d1			, ModfTimeOfFile			a2 b2 c2 d2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
+    (ASTFileIsValid         	a1 b1 c1 d1			, ASTFileIsValid			a2 b2 c2 d2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2, d1 `compare` d2]
+    (ASTFileIsNewerThan        	a1 b1   			, ASTFileIsNewerThan		a2 b2 	 			) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (DirOfModIsWriteable		a1   				, DirOfModIsWriteable		a2   				) ->         a1 `compare` a2
+    (CanCompile					a1 					, CanCompile				a2 					) ->         a1 `compare` a2
+    (IsTopMod					a1 					, IsTopMod					a2 					) ->         a1 `compare` a2
+    (HasMain					a1 b1 c1			, HasMain					a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FoldHsMod					a1 b1				, FoldHsMod					a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (ModnameAndImportsPlMb		a1 b1				, ModnameAndImportsPlMb		a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (HsModnameAndImports		a1 					, HsModnameAndImports		a2 					) ->         a1 `compare` a2
+    (FoldHIInfo					a1 					, FoldHIInfo				a2 					) ->         a1 `compare` a2
+    (ImportExportImpl			a1 b1				, ImportExportImpl			a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (ImportNameInfo				a1 b1				, ImportNameInfo			a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (FoldHsPMb					a1 b1 c1			, FoldHsPMb					a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FoldHsPlMb					a1 b1 c1			, FoldHsPlMb				a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FoldEHPMb					a1 b1 c1			, FoldEHPMb					a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FoldEHPlMb					a1 b1 c1			, FoldEHPlMb				a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FoldCoreModPlMb			a1 b1				, FoldCoreModPlMb			a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (FoldCore2CoreRunPlMb		a1 b1 c1			, FoldCore2CoreRunPlMb		a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FoldCoreRunModPlMb			a1 b1 				, FoldCoreRunModPlMb		a2 b2				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (FoldCoreRunCheckPlMb		a1 b1 c1 			, FoldCoreRunCheckPlMb		a2 b2 c2			) -> lexico [a1 `compare` a2, b1 `compare` b2, c1 `compare` c2]
+    (FPathPreprocessedWithCPP	a1 b1 				, FPathPreprocessedWithCPP	a2 b2 				) -> lexico [a1 `compare` a2, b1 `compare` b2]
+    (ExposedPackages								, ExposedPackages								) -> EQ
+  where lexico = orderingLexic
+
+instance Ord (BFun' m res) where
+  compare = bfunCompare
+
+deriving instance Eq (BFun' m res)
+deriving instance Show (BFun' m res)
+deriving instance Typeable BFun'
+
+instance Hashable (BFun' m res) where
+  hashWithSalt salt x = case x of
+	CRSI 									-> salt `hashWithSalt` (maxBound-1::Int)
+	CRSIWithCompileOrderPl		a b	c		-> salt `hashWithSalt` (0::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	CRSIWithImpsPl			   	a b	c d		-> salt `hashWithSalt` (1::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
+	CRSIOfNameP			   		a b c		-> salt `hashWithSalt` (3::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	CRSIOfNamePl			   	a b c		-> salt `hashWithSalt` (4::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FPathSearchForFile 			a b			-> salt `hashWithSalt` (5::Int) `hashWithSalt` a `hashWithSalt` b
+	FPathForAST					a b	c d	 	-> salt `hashWithSalt` (6::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
+	ImportsOfNamePl		   		a b	c		-> salt `hashWithSalt` (7::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	ImportsRecursiveWithImpsP	a b c d		-> salt `hashWithSalt` (8::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
+	ImportsRecursiveOfNameP		a b	c		-> salt `hashWithSalt` (9::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	ActualModNm					a			-> salt `hashWithSalt` (10::Int) `hashWithSalt` a
+	BuildPlanPMb 				a b c		-> salt `hashWithSalt` (11::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	ASTBuildPlanChoicePMb		a b c		-> salt `hashWithSalt` (11::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	EcuOf			   			a			-> salt `hashWithSalt` (12::Int) `hashWithSalt` a
+	EHCOptsOf		   			a			-> salt `hashWithSalt` (14::Int) `hashWithSalt` a
+	EcuOfPrevNameAndPath		a 			-> salt `hashWithSalt` (15::Int) `hashWithSalt` a
+	ASTRefFromFileEither		a b	c d	e f	-> salt `hashWithSalt` (18::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d `hashWithSalt` e `hashWithSalt` f
+	ASTFromFile					a b	c d	e 	-> salt `hashWithSalt` (19::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d `hashWithSalt` e
+	ASTP 						a b c		-> salt `hashWithSalt` (20::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	ASTPMb 						a b c		-> salt `hashWithSalt` (21::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	ASTPlMb 					a b c		-> salt `hashWithSalt` (22::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	ModfTimeOfFile				a b	c d		-> salt `hashWithSalt` (23::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
+	ASTFileIsValid				a b	c d		-> salt `hashWithSalt` (24::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c `hashWithSalt` d
+	ASTFileIsNewerThan			a b			-> salt `hashWithSalt` (25::Int) `hashWithSalt` a `hashWithSalt` b
+	DirOfModIsWriteable 		a 			-> salt `hashWithSalt` (26::Int) `hashWithSalt` a
+	CanCompile		 			a 			-> salt `hashWithSalt` (27::Int) `hashWithSalt` a
+	IsTopMod			 		a 			-> salt `hashWithSalt` (29::Int) `hashWithSalt` a
+	HasMain			 			a b c		-> salt `hashWithSalt` (29::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FoldHsMod			 		a b			-> salt `hashWithSalt` (30::Int) `hashWithSalt` a `hashWithSalt` b
+	ModnameAndImportsPlMb		a b			-> salt `hashWithSalt` (33::Int) `hashWithSalt` a `hashWithSalt` b
+	HsModnameAndImports			a 			-> salt `hashWithSalt` (34::Int) `hashWithSalt` a
+	FoldHIInfo					a 			-> salt `hashWithSalt` (35::Int) `hashWithSalt` a
+	ImportExportImpl			a b			-> salt `hashWithSalt` (36::Int) `hashWithSalt` a `hashWithSalt` b
+	ImportNameInfo				a b			-> salt `hashWithSalt` (37::Int) `hashWithSalt` a `hashWithSalt` b
+	FoldHsPMb					a b c		-> salt `hashWithSalt` (38::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FoldHsPlMb					a b c		-> salt `hashWithSalt` (39::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FoldEHPMb					a b c		-> salt `hashWithSalt` (40::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FoldEHPlMb					a b c		-> salt `hashWithSalt` (41::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FoldCoreModPlMb				a b			-> salt `hashWithSalt` (42::Int) `hashWithSalt` a `hashWithSalt` b
+	FoldCore2CoreRunPlMb		a b c		-> salt `hashWithSalt` (44::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FoldCoreRunModPlMb			a b 		-> salt `hashWithSalt` (45::Int) `hashWithSalt` a `hashWithSalt` b
+	FoldCoreRunCheckPlMb		a b c 		-> salt `hashWithSalt` (46::Int) `hashWithSalt` a `hashWithSalt` b `hashWithSalt` c
+	FPathPreprocessedWithCPP	a b			-> salt `hashWithSalt` (47::Int) `hashWithSalt` a `hashWithSalt` b
+	ExposedPackages							-> salt `hashWithSalt` (maxBound-2::Int)
+
+
+{-# LINE 747 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | BFun' used as a dependency of another BFun', for now same as a Dynamic
+data BFun m
+  = forall res
+    . ({- Typeable (BFun' res), -} Typeable res)
+      => BFun
+           { bfcdFun 		:: !(BFun' m res)
+           }
+
+instance Eq (BFun m) where
+  (BFun {bfcdFun=f1}) == (BFun {bfcdFun=f2}) = bfunCompare f1 f2 == EQ
+
+instance Ord (BFun m) where
+  (BFun {bfcdFun=f1}) `compare` (BFun {bfcdFun=f2}) = bfunCompare f1 f2
+
+instance Hashable (BFun m) where
+  hashWithSalt salt (BFun {bfcdFun=x}) = hashWithSalt salt x
+
+instance Show (BFun m) where
+  show (BFun {bfcdFun=x}) = show x
+
+{-# LINE 769 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | BFun' + BCachedVal' packaged with required class instances, similar to a Dynamic
+data BFunCacheEntry m
+  = forall f res
+    . (Typeable f, Typeable res)
+      => BFunCacheEntry
+           { bfceFun 		:: !(BFun' m res)
+           , bfceVal		:: !(f res)
+           }
+
+{-# LINE 780 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Cache for function calls, first indexed on hash
+data BCache m
+  = BCache
+      { _bcacheCache			:: IMap.IntMap [BFunCacheEntry m]
+      , _bcacheModNmForward		:: Map.Map HsName HsName
+      , _bcacheDpdRel			:: Rel.Rel (BFun m) (BFun m)
+      }
+
+emptyBCache :: BCache m
+emptyBCache = BCache IMap.empty Map.empty Rel.empty
+
+{-# LINE 793 "src/ehc/EHC/CompileRun/Base.chs" #-}
+bcacheResolveModNm :: BCache m -> HsName -> HsName
+bcacheResolveModNm c n = maybe n (bcacheResolveModNm c) $ Map.lookup n (_bcacheModNmForward c)
+
+{-# LINE 802 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | GADT for references to global state, interpreted inside the compiler driver monad, the type of the GADT telling what the type of the value should be.
+data BRef (m :: * -> *) val where
+  --- | Global state
+  BRef_CRSI
+    :: BRef m (EHCompileRunStateInfo m)
+
+  --- | Global info: exposed packages
+  BRef_ExposedPackages
+    :: BRef m [PkgModulePartition]
+
+  --- | Compile unit
+  BRef_ECU
+    :: !HsName					--- ^ module name
+    -> BRef m EHCompileUnit
+
+  --- | An AST embedded in a compile unit directly taken from a file
+  BRef_ASTFile
+    :: !PrevFileSearchKey		--- ^ module name
+    -> ASTType					--- ^ content type
+    -> ASTSuffixKey				--- ^ suffix and content variation
+    -> ASTFileTiming			--- ^ timing (i.e. previous or current)
+    -> BRef m val
+
+  --- | An AST embedded in a compile unit either directly taken from a file or derived by other means
+  BRef_AST
+    :: !PrevFileSearchKey		--- ^ module name
+    -> ASTType					--- ^ content type
+    -> BRef m val
+
+  --- | Global options
+  BRef_EHCOpts
+    :: !HsName					--- ^ module name
+    -> BRef m EHCOpts
+
+deriving instance Typeable BRef
+deriving instance Show (BRef m val)
+
+{-# LINE 864 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Result coming out of a build call for constructing/loading an AST
+data ASTResult m ast =
+  ASTResult
+    { _astresAST		:: ast
+    , _astresRef		:: BRef m ast
+    , _astresPipe		:: ASTPipe
+    , _astresTimeStamp	:: ClockTime
+    }
+  deriving (Typeable, Show)
+
+{-# LINE 878 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkASTResult'
+  :: EHCCompileRunner m
+  => ast
+  -> BRef m ast
+  -> ASTPipe
+  -> Maybe ClockTime
+  -> EHCompilePhaseT m (ASTResult m ast)
+mkASTResult' ast ref astpipe mbTm
+    = do
+    tm <- maybe (liftIO getClockTime) return mbTm
+    return $
+      ASTResult ast ref astpipe
+        tm
+
+{-# LINE 902 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkASTResult :: EHCCompileRunner m => ast -> BRef m ast -> ASTPipe -> EHCompilePhaseT m (ASTResult m ast)
+mkASTResult ast ref astpipe = mkASTResult' ast ref astpipe Nothing
+
+{-# LINE 911 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Cache for function calls, first indexed on hash
+data BState m
+  = BState
+      { _bstateCache		:: !(BCache m)
+      , _bstateCallStack	:: ![BFun m]
+      }
+
+emptyBState :: BState m
+emptyBState = BState emptyBCache []
+
+{-# LINE 927 "src/ehc/EHC/CompileRun/Base.chs" #-}
+data EHCIOInfo
+  = EHCIOInfo
+      { ehcioinfoStartTime			:: EHCTime
+      , ehcioinfoLastTime			:: EHCTime
+      }
+
+{-# LINE 939 "src/ehc/EHC/CompileRun/Base.chs" #-}
+type EHCTime = Integer
+
+{-# LINE 947 "src/ehc/EHC/CompileRun/Base.chs" #-}
+data EHCompileRunCoreRunStateInfo
+  = EHCompileRunCoreRunStateInfo
+      { _crcrsiReqdModules  	:: [HsName]                             -- ^ (current) required/to-be-loaded modules, the length is used to assign module nr identifications
+      , _crcrsiNm2RefMp			:: !CoreRun.Nm2RefMp       				-- ^ current inh attrs for CoreRun semantics
+      }
+
+emptyEHCompileRunCoreRunStateInfo :: EHCompileRunCoreRunStateInfo
+emptyEHCompileRunCoreRunStateInfo
+  = EHCompileRunCoreRunStateInfo
+      { _crcrsiReqdModules    	=   []
+      , _crcrsiNm2RefMp			=	CoreRun.emptyNm2RefMp
+      }
+
+{-# LINE 966 "src/ehc/EHC/CompileRun/Base.chs" #-}
+data EHCompileRunStateInfo (m :: * -> *)
+  = EHCompileRunStateInfo
+      { _crsiOpts       :: !EHCOpts                             -- options
+      , _crsiASTPipe    :: !ASTPipe                             -- the compiler pipeline (based on options)
+      , _crsiNextUID    :: !UID                                 -- unique id, the next one
+      , _crsiHereUID    :: !UID                                 -- unique id, the current one
+      , _crsiHSInh      :: !AST_HS_Inh_Check                    -- current inh attrs for HS sem
+      , _crsiEHInh      :: !AST_EH_Inh_Check                    -- current inh attrs for EH sem
+      , _crsiFileSuffMp :: FileSuffMp							-- allowed suffixes
+      , _crsiCEnv		::  CEnv								-- globally required codegen info
+      															-- 20151009 AD: TBD, for now non strict field
+      , _crsiCoreRunState	:: !EHCompileRunCoreRunStateInfo	-- corerun compilation specific state
+      -- , _crsiCore2RunInh:: !CoreRun.Nm2RefMp       				-- current inh attrs for Core2CoreRun sem
+      , crsiMbMainNm    :: !(Maybe HsName)                      -- name of main module, if any
+      , crsiHSModInh    :: !HSSemMod.Inh_AGItf                  -- current inh attrs for HS module analysis sem
+      , crsiModMp       :: !ModMp                               -- import/export info for modules
+      , crsiGrpMp       :: (Map.Map HsName EHCompileGroup)      -- not yet used, for mut rec modules
+      , crsiOptim       :: !Optim                               -- inter module optimisation info
+      , crsiModOffMp    :: !VA.HsName2FldMpMp              		-- mapping of all modules + exp entries to offsets in module + exp tables
+      , crsiEHCIOInfo	:: !(IORef EHCIOInfo)					-- unsafe info
+      , crsiFilesToRm   :: ![FPath]                             -- files to clean up (remove)
+      , _crsiBState		:: !(BState m)								-- Build state for use of build functions
+      }
+  deriving (Typeable)
+
+{-# LINE 1001 "src/ehc/EHC/CompileRun/Base.chs" #-}
+emptyEHCompileRunStateInfo :: EHCompileRunStateInfo m
+emptyEHCompileRunStateInfo
+  = EHCompileRunStateInfo
+      { _crsiOpts       =   defaultEHCOpts
+      , _crsiASTPipe    =   emptyASTPipe
+      , _crsiNextUID    =   uidStart
+      , _crsiHereUID    =   uidStart
+      , _crsiHSInh      =   panic "emptyEHCompileRunStateInfo.crsiHSInh"
+      , _crsiEHInh      =   panic "emptyEHCompileRunStateInfo.crsiEHInh"
+      , _crsiFileSuffMp =	emptyFileSuffMp
+      , _crsiCEnv		=   emptyCEnv
+      , _crsiCoreRunState	=   emptyEHCompileRunCoreRunStateInfo
+      -- , _crsiCore2RunInh=   panic "emptyEHCompileRunStateInfo.crsiCoreRunInh"
+      , crsiMbMainNm    =   Nothing
+      , crsiHSModInh    =   panic "emptyEHCompileRunStateInfo.crsiHSModInh"
+      , crsiModMp       =   Map.empty
+      , crsiGrpMp       =   Map.empty
+      , crsiOptim       =   defaultOptim
+      , crsiModOffMp    =   Map.empty
+      , crsiEHCIOInfo   =   panic "emptyEHCompileRunStateInfo.crsiEHCIOInfo"
+      , crsiFilesToRm   =   []
+      , _crsiBState   	=   emptyBState
+      }
+
+{-# LINE 1039 "src/ehc/EHC/CompileRun/Base.chs" #-}
+instance Show (EHCompileRunStateInfo m) where
+  show _ = "EHCompileRunStateInfo"
+
+instance PP (EHCompileRunStateInfo m) where
+  pp i = "CRSI:" >#< ppModMp (crsiModMp i)
+
+{-# LINE 1047 "src/ehc/EHC/CompileRun/Base.chs" #-}
+instance CompileRunStateInfo (EHCompileRunStateInfo m) HsName () where
+  crsiImportPosOfCUKey n i = ()
+
+{-# LINE 1052 "src/ehc/EHC/CompileRun/Base.chs" #-}
+class ( MonadIO m
+      , MonadFix m
+      , Typeable m
+      -- , MonadIO (EHCompilePhaseAddonT m)
+      , CompileRunner FileSuffInitState HsName () FileLoc EHCompileUnit (EHCompileRunStateInfo m) Err (EHCompilePhaseAddonT m)
+      )
+  => EHCCompileRunner m where
+
+instance ( CompileRunStateInfo (EHCompileRunStateInfo m) HsName ()
+         , CompileUnit EHCompileUnit HsName FileLoc FileSuffInitState
+         , CompileRunError Err ()
+         -- , MonadError (CompileRunState Err) m
+         -- , MonadState EHCompileRun (EHCompilePhaseAddonT m)
+         , MonadIO m
+         , MonadFix m
+         , Typeable m
+         -- , MonadIO (EHCompilePhaseAddonT m)
+         , Monad m
+         ) => CompileRunner FileSuffInitState HsName () FileLoc EHCompileUnit (EHCompileRunStateInfo m) Err (EHCompilePhaseAddonT m)
+
+instance ( CompileRunStateInfo (EHCompileRunStateInfo m) HsName ()
+         , CompileUnit EHCompileUnit HsName FileLoc FileSuffInitState
+         , CompileRunError Err ()
+         -- , MonadError (CompileRunState Err) m
+         -- , MonadState EHCompileRun (EHCompilePhaseAddonT m)
+         , MonadIO m
+         , MonadFix m
+         , Typeable m
+         -- , MonadIO (EHCompilePhaseAddonT m)
+         , Monad m
+         ) => EHCCompileRunner m
+
+{-
+instance (MonadState s m) => MonadState s (EHCompilePhaseAddonT m) where
+  get = lift MS.get
+  put = lift . MS.put
+
+instance (MonadIO m) => MonadIO (EHCompilePhaseAddonT m) where
+  liftIO = lift . liftIO
+-}
+
+{-# LINE 1095 "src/ehc/EHC/CompileRun/Base.chs" #-}
+type EHCompileRun m         = CompileRun HsName EHCompileUnit (EHCompileRunStateInfo m) Err
+type EHCompilePhaseAddonT m = StateT (EHCompileRun m) m
+type EHCompilePhaseT      m = CompilePhaseT HsName EHCompileUnit (EHCompileRunStateInfo m) Err (EHCompilePhaseAddonT m)
+type EHCompilePhase         = EHCompilePhaseT IO
+
+{-# LINE 1108 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Delayed results (too avoid too much file content inspection)
+data TmOfDelayedRes =
+  TmOfDelayedRes
+    { _tmofdresModNm		:: HsName						-- ^ actual module name as it appears in file
+    , _tmofdresHasMain		:: Bool							-- ^ has a main
+    , _tmofdresImpMp		:: Map.Map HsName ClockTime		-- ^ imports and their timestamp
+    }
+  deriving (Typeable)
+
+emptyTmOfDelayedRes :: TmOfDelayedRes
+emptyTmOfDelayedRes = TmOfDelayedRes hsnUnknown False Map.empty
+
+{-# LINE 1122 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Results coming along with 'bMkASTPMbChoice' determining which choice in the build pipe to take
+data TmOfRes (m :: * -> *) =
+  TmOfRes
+    { _tmofresChoice		:: TmChoice			-- ^ the choice
+    , _tmofresIsOverr		:: Bool				-- ^ is this a commandline override choice
+    , _tmofresDelayed		:: EHCompilePhaseT m (Maybe TmOfDelayedRes)
+    											-- ^ subcomponent & computationally delayed info
+    , _tmofresTm			:: ClockTime		-- ^ actual timestamp
+    , _tmofresHasMain		:: Bool				-- ^ has main in body (not required for choice)
+    }
+  deriving (Typeable)
+
+emptyTmOfRes :: TmOfRes m
+emptyTmOfRes = TmOfRes Choice_End False
+                       (panic "emptyTmOfRes.tmofresDelayed") (panic "emptyTmOfRes.tmofresTm")
+                       False
+
+{-# LINE 1149 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''BCache
+
+{-# LINE 1153 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''BState
+
+{-# LINE 1157 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''EHCompileRunCoreRunStateInfo
+
+{-# LINE 1161 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''EHCompileRunStateInfo
+
+
+
+{-# LINE 1174 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''ASTResult
+
+{-# LINE 1181 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''TmOfDelayedRes
+
+{-# LINE 1185 "src/ehc/EHC/CompileRun/Base.chs" #-}
+mkLabel ''TmOfRes
+
+
+{-# LINE 1196 "src/ehc/EHC/CompileRun/Base.chs" #-}
+crBaseInfo' :: EHCompileRun m -> (EHCompileRunStateInfo m,EHCOpts)
+crBaseInfo' cr
+  = (crsi,opts)
+  where crsi   = _crStateInfo cr
+        opts   = crsi ^. crsiOpts
+
+crMbBaseInfo :: HsName -> EHCompileRun m -> (Maybe EHCompileUnit, EHCompileRunStateInfo m, EHCOpts, Maybe FPath)
+crMbBaseInfo modNm cr
+  = ( mbEcu ,crsi
+    -- if any per module opts are available, use those
+    , maybe opts id $ mbEcu >>= ecuMbOpts
+    , fmap ecuFilePath mbEcu
+    )
+  where mbEcu       = crMbCU modNm cr
+        (crsi,opts) = crBaseInfo' cr
+
+crBaseInfo :: HsName -> EHCompileRun m -> (EHCompileUnit,EHCompileRunStateInfo m,EHCOpts,FPath)
+crBaseInfo modNm cr
+  = ( maybe (panic $ "crBaseInfo.mbEcu " ++ show modNm) id mbEcu
+    , crsi
+    , opts
+    , maybe (panic $ "crBaseInfo.mbFp " ++ show modNm) id mbFp
+    )
+  where (mbEcu, crsi, opts, mbFp) = crMbBaseInfo modNm cr
+
+{-# LINE 1231 "src/ehc/EHC/CompileRun/Base.chs" #-}
+cpStepUID :: EHCCompileRunner m => EHCompilePhaseT m ()
+cpStepUID
+  = cpUpdSI (\crsi -> let (n,h) = mkNewLevUID (crsi ^. crsiNextUID)
+                      in  crsiNextUID ^= n $ crsiHereUID ^= h $ crsi
+                          -- crsi {_crsiNextUID = n, _crsiHereUID = h}
+            )
+
+cpSetUID :: EHCCompileRunner m => UID -> EHCompilePhaseT m ()
+cpSetUID u
+  = cpUpdSI $ crsiNextUID ^= u -- (\crsi -> crsi {crsiNextUID = u})
+
+{-# LINE 1248 "src/ehc/EHC/CompileRun/Base.chs" #-}
+type EHCTimeDiff = Integer
+
+getEHCTime :: IO EHCTime
+getEHCTime = getCPUTime
+
+ehcTimeDiff :: EHCTime -> EHCTime -> EHCTimeDiff
+ehcTimeDiff = (-)
+
+ehcTimeDiffFmt :: EHCTimeDiff -> String
+ehcTimeDiffFmt t
+  = fm 2 hrs ++ ":" ++ fm 2 mins ++ ":" ++ fm 2 secs ++ ":" ++ fm 6 (psecs `div` 1000000)
+  where (r0  , psecs) = t  `quotRem` 1000000000000
+        (r1  , secs ) = r0 `quotRem` 60
+        (r2  , mins ) = r1 `quotRem` 60
+        (days, hrs  ) = r2 `quotRem` 24
+        fm n x = strPadLeft '0' n (show x)
+
+{-# LINE 1271 "src/ehc/EHC/CompileRun/Base.chs" #-}
+cpRegisterFilesToRm :: EHCCompileRunner m => [FPath] -> EHCompilePhaseT m ()
+cpRegisterFilesToRm fpL
+  = cpUpdSI (\crsi -> crsi {crsiFilesToRm = fpL ++ crsiFilesToRm crsi})
+
+{-# LINE 1277 "src/ehc/EHC/CompileRun/Base.chs" #-}
+cpRmFilesToRm :: EHCCompileRunner m => EHCompilePhaseT m ()
+cpRmFilesToRm
+  = do { cr <- MS.get
+       ; let (crsi,opts) = crBaseInfo' cr
+             files = Set.toList $ Set.fromList $ map fpathToStr $ crsiFilesToRm crsi
+       ; liftIO $ mapM rm files
+       ; cpUpdSI (\crsi -> crsi {crsiFilesToRm = []})
+       }
+  where rm f = CE.catch (removeFile f)
+                        (\(e :: SomeException) -> hPutStrLn stderr (show f ++ ": " ++ show e))
+
+{-# LINE 1294 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Tracing
+cpTrPP :: EHCCompileRunner m => TraceOn -> [PP_Doc] -> EHCompilePhaseT m ()
+cpTrPP ton ms = do
+    cr <- MS.get
+    let (_,opts) = crBaseInfo' cr
+    trOnPP (`Set.member` ehcOptTraceOn opts) ton ms
+{-
+    when (ton `elem` ehcOptTraceOn opts) $ liftIO $ pr ms
+  where pr []      = return ()
+        pr [m]     = putPPLn $ show ton >|< ":" >#< m
+        pr (m:ms)  = do pr [m]
+                        forM_ ms $ \m -> putPPLn $ indent 2 m
+-}
+
+-- | Tracing
+cpTr :: EHCCompileRunner m => TraceOn -> [String] -> EHCompilePhaseT m ()
+cpTr ton ms = cpTrPP ton $ map pp ms
+
+{-# LINE 1318 "src/ehc/EHC/CompileRun/Base.chs" #-}
+cpMemUsage :: EHCCompileRunner m => EHCompilePhaseT m ()
+cpMemUsage
+  = return ()
+
+{-# LINE 1337 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Message
+cpMsg :: EHCCompileRunner m => HsName -> Verbosity -> String -> EHCompilePhaseT m ()
+cpMsg modNm v m
+  = do { cr <- MS.get
+       ; let (_,_,_,mbFp) = crMbBaseInfo modNm cr
+       ; cpMsg' modNm v m Nothing (maybe emptyFPath id mbFp)
+       }
+
+cpMsg' :: EHCCompileRunner m => HsName -> Verbosity -> String -> Maybe String -> FPath -> EHCompilePhaseT m ()
+cpMsg' modNm v m mbInfo fp
+  = do { cr <- MS.get
+       ; let (mbEcu,crsi,opts,_) = crMbBaseInfo modNm cr
+       ; ehcioinfo <- liftIO $ readIORef (crsiEHCIOInfo crsi)
+       ; clockTime <- liftIO getEHCTime
+       ; let clockStartTimePrev = ehcioinfoStartTime ehcioinfo
+             clockTimePrev      = ehcioinfoLastTime ehcioinfo
+             clockStartTimeDiff = ehcTimeDiff clockTime clockStartTimePrev
+             clockTimeDiff      = ehcTimeDiff clockTime clockTimePrev
+       ; let
+             t				= if v >= VerboseALot then "<" ++ strBlankPad 35 (ehcTimeDiffFmt clockStartTimeDiff ++ "/" ++ ehcTimeDiffFmt clockTimeDiff) ++ ">" else ""
+             m'             = maybe "" (\ecu -> show (ecuSeqNr ecu) ++ t ++ " ") mbEcu ++ m
+       ; liftIO $ putCompileMsg v (ehcOptVerbosity opts) m' mbInfo modNm fp
+       ; clockTime <- liftIO getEHCTime
+       ; liftIO $ writeIORef (crsiEHCIOInfo crsi) (ehcioinfo {ehcioinfoLastTime = clockTime})
+       -- ; cpUpdSI (\crsi -> crsi { crsiTime = clockTime })
+       ; cpMemUsage
+       }
+
+{-# LINE 1379 "src/ehc/EHC/CompileRun/Base.chs" #-}
+cpSystem' :: EHCCompileRunner m => Maybe FilePath -> (FilePath,[String]) -> EHCompilePhaseT m ()
+cpSystem' mbStdOut (cmd,args)
+  = do { exitCode <- liftIO $ system $ showShellCmd $ (cmd,args ++ (maybe [] (\o -> [">", o]) mbStdOut))
+       ; case exitCode of
+           ExitSuccess -> return ()
+           _           -> cpSetFail
+       }
+
+cpSystem :: EHCCompileRunner m => (FilePath,[String]) -> EHCompilePhaseT m ()
+cpSystem = cpSystem' Nothing
+
+{-# LINE 1409 "src/ehc/EHC/CompileRun/Base.chs" #-}
+cpSystemRaw :: EHCCompileRunner m => String -> [String] -> EHCompilePhaseT m ()
+cpSystemRaw cmd args
+  = do { exitCode <- liftIO $ rawSystem cmd args
+       ; case exitCode of
+           ExitSuccess -> return ()
+           _           -> cpSetErrs [rngLift emptyRange Err_PP $ pp $ show exitCode] -- cpSetFail
+       }
+
+{-# LINE 1423 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | split module names in those part of a package, and others
+crPartitionIntoPkgAndOthers :: EHCompileRun m -> [HsName] -> ([PkgModulePartition],[HsName])
+crPartitionIntoPkgAndOthers cr modNmL
+  = ( [ (p,d,m)
+      | ((p,d),m) <- Map.toList $ Map.unionsWith (++) $ map Map.fromList ps
+      ]
+    , concat ms
+    )
+  where (ps,ms) = unzip $ map loc modNmL
+        loc m = case filelocKind $ ecuFileLocation ecu of
+                  FileLocKind_Dir	  -> ([           ], [m])
+                  FileLocKind_Pkg p d -> ([((p,d),[m])], [ ])
+              where (ecu,_,_,_) = crBaseInfo m cr
+
+{-# LINE 1443 "src/ehc/EHC/CompileRun/Base.chs" #-}
+crsiExpNmOffMpDbg :: String -> HsName -> EHCompileRunStateInfo m -> VA.HsName2FldMp
+crsiExpNmOffMpDbg ctxt modNm crsi = mmiNmOffMp $ panicJust ("crsiExpNmOffMp." ++ ctxt ++ show ks ++ ": " ++ show modNm) $ Map.lookup modNm $ crsiModMp crsi
+  where ks = Map.keys $ crsiModMp crsi
+
+crsiExpNmOffMp :: HsName -> EHCompileRunStateInfo m -> VA.HsName2FldMp
+crsiExpNmOffMp modNm crsi = mmiNmOffMp $ panicJust ("crsiExpNmOffMp: " ++ show modNm) $ Map.lookup modNm $ crsiModMp crsi
+
+{-# LINE 1456 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Add ast types for which the semantics have been flowed into global state, with additional from/to info
+bUpdAlreadyFlowIntoCRSIWith :: EHCCompileRunner m => HsName -> ASTType -> ASTAlreadyFlowIntoCRSIInfo -> EHCompilePhaseT m ()
+bUpdAlreadyFlowIntoCRSIWith modNm asttype flowstage =
+  bUpdECU modNm $  ecuAlreadyFlowIntoCRSI
+               ^$= Map.insertWith Set.union asttype (Set.singleton flowstage)
+
+-- | Add ast types for which the semantics have been flowed into global state
+bUpdAlreadyFlowIntoCRSI :: EHCCompileRunner m => HsName -> ASTType -> ASTSemFlowStage -> EHCompilePhaseT m ()
+bUpdAlreadyFlowIntoCRSI modNm asttype flowstage = bUpdAlreadyFlowIntoCRSIWith modNm asttype (flowstage,Nothing)
+
+{-# LINE 1472 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- | Lookup compile unit, also giving the actual module name forwarded to
+bLookupECUInCR :: HsName -> EHCompileRun m -> Maybe (HsName, EHCompileUnit)
+bLookupECUInCR n cr = lkn n <|> lkn (bcacheResolveModNm (cr ^. crStateInfo ^. crsiBState ^. bstateCache) n)
+  where lkn n = fmap ((,) n) $ crMbCU n cr
+
+-- | Lookup compile unit, also giving the actual module name forwarded to
+bLookupECU' :: EHCCompileRunner m => HsName -> EHCompilePhaseT m (Maybe (HsName, EHCompileUnit))
+bLookupECU' n = MS.gets (bLookupECUInCR n)
+
+-- | Lookup compile unit
+bLookupECU :: EHCCompileRunner m => HsName -> EHCompilePhaseT m (Maybe EHCompileUnit)
+bLookupECU n = fmap (fmap snd) $ bLookupECU' n
+
+-- | Update compile unit
+bUpdECU :: EHCCompileRunner m => HsName -> (EHCompileUnit -> EHCompileUnit) -> EHCompilePhaseT m ()
+bUpdECU n f = do
+    cr <- MS.get
+    cpUpdCU (maybe n fst $ bLookupECUInCR n cr) f
+
+{-# LINE 1497 "src/ehc/EHC/CompileRun/Base.chs" #-}
+-- type TmOfRes   m = TmRes m -- (EHCompilePhaseT m (Maybe (Map.Map HsName ClockTime)), TmChoice, ClockTime)
+type TmOfResMb m = Maybe (TmOfRes m)
+type TmOfResM  m = EHCompilePhaseT m (TmOfResMb m)
+
+-- updTmChoice upd = \(imps,ch,tm) -> (imps,upd ch,tm)
+updTmChoice upd = tmofresChoice ^$= upd
+updTmChoiceM upd = fmap (fmap (updTmChoice upd))
+
diff --git a/src/UHC/Light/Compiler/EHC/CompileUnit.hs b/src/UHC/Light/Compiler/EHC/CompileUnit.hs
--- a/src/UHC/Light/Compiler/EHC/CompileUnit.hs
+++ b/src/UHC/Light/Compiler/EHC/CompileUnit.hs
@@ -2,33 +2,37 @@
 
 module UHC.Light.Compiler.EHC.CompileUnit
 ( EHCompileUnit (..)
-, ecuASTType, ecuASTFileContent, ecuASTFileUse
-, ecuMbCore, ecuCore, ecuMbCoreSem, ecuCoreSem
+, ecuASTAvailFiles, ecuASTType, ecuASTFileContent, ecuASTFileUse
+, ecuMbCore, ecuCore
 , ecuMbCore2CoreRunSem, ecuMbCoreRun, ecuCoreRun
 , ecuMbCoreSemMod, ecuCoreSemMod
-, ecuMbCoreRunSemMod, ecuCoreRunSemMod
+, ecuMbCoreRunSemMod, ecuCoreRunSemMod, ecuMbCoreRunSemChk, ecuCoreRunSemChk
 , ecuMbHS, ecuHS, ecuMbHSSem, ecuHSSem, ecuMbEH, ecuEH, ecuMbEHSem, ecuEHSem
+, ecuAlreadyFlowIntoCRSI
 , ecuFilePath
 , emptyECU
+, ecuHasAlreadyFlowedWith, ecuHasAlreadyFlowed
+, ecuLookupAvailASTFile
 , ecuFinalDestinationState
 , EcuUpdater, ecuStoreSrcFilePath, ecuStoreState, ecuStoreHS, ecuStoreEH, ecuStoreHSSem, ecuStoreEHSem
 , ecuStoreCoreSemMod
-, ecuStoreCoreSem
 , ecuStoreCore
 , ecuStoreCoreRun
 , ecuStoreCoreRunSemMod
 , ecuStoreCore2CoreRunSem
 , ecuSrcHasSuffix
 , Optim (..), defaultOptim
+, ecuIsTopMod
+, ecuMbHIInfo, ecuHIInfo, ecuMbPrevHIInfo, ecuPrevHIInfo, ecuMbHSSemMod, ecuHSSemMod, ecuMbSrcTime, ecuSrcTime, ecuMbHIInfoTime, ecuHIInfoTime
+, ecuDirIsWritable, ecuMbPrevSearchInfo, ecuPrevSearchInfo
 , ecuMbCoreTime, ecuCoreTime
 , ecuMbCoreRunTime, ecuCoreRunTime
-, ecuMbHIInfo, ecuHIInfo, ecuMbPrevHIInfo, ecuPrevHIInfo, ecuMbHSSemMod, ecuHSSemMod, ecuMbSrcTime, ecuSrcTime, ecuMbHIInfoTime, ecuHIInfoTime
-, ecuHSDeclImpNmS, ecuHIDeclImpNmS, ecuHIUsedImpNmS
+, ecuSrcDeclImpNmS, ecuHIDeclImpNmS, ecuHIUsedImpNmS
 , ecuIsMainMod
 , ecuImpNmS, ecuImpNmL
 , ecuTransClosedUsedModMp, ecuTransClosedOrphanModS
 , ecuIsOrphan
-, ecuStoreHSDeclImpS, ecuSetNeedsCompile, ecuStoreHIUsedImpS, ecuStoreHIInfoTime, ecuStoreSrcTime, ecuStoreHSSemMod, ecuStoreIntrodModS, ecuStoreHIDeclImpS, ecuStoreMod, ecuSetIsTopMod, ecuSetHasMain, ecuStoreOptim, ecuStoreHIInfo, ecuStorePrevHIInfo
+, ecuStoreSrcDeclImpS, ecuSetNeedsCompile, ecuStoreHIUsedImpS, ecuStoreHIInfoTime, ecuStoreSrcTime, ecuStoreHSSemMod, ecuStoreIntrodModS, ecuStoreHIDeclImpS, ecuStoreMod, ecuSetIsTopMod, ecuSetHasMain, ecuStoreOptim, ecuStoreHIInfo, ecuStorePrevHIInfo
 , ecuStoreCoreTime
 , ecuStoreCoreRunTime
 , ecuStoreDirIsWritable
@@ -37,7 +41,6 @@
 , ecuCanUseHIInsteadOfHS
 , ecuCanCompile
 , EHCCompileSeqNr (..)
-, ecuMbPrevSearchInfo, ecuPrevSearchInfo
 , ecuAnHIInfo
 , ecuStoreOpts, ecuStorePragmas, ecuStoreUsedNames, ecuSetTarget
 , ecuStoreGenCodeFiles
@@ -48,18 +51,8 @@
 import UHC.Light.Compiler.EHC.Common
 import UHC.Util.Lens
 import Data.Typeable
-import qualified UHC.Light.Compiler.HS as HS
-import qualified UHC.Light.Compiler.EH as EH
-import qualified UHC.Light.Compiler.Core as Core
-import qualified UHC.Light.Compiler.CoreRun as CoreRun
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
-import qualified UHC.Light.Compiler.HS.MainAG as HSSem
-import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
-import qualified UHC.Light.Compiler.Core.ToCoreRun as Core2CoreRunSem
-import qualified UHC.Light.Compiler.Core.Check as Core2ChkSem
-import qualified UHC.Light.Compiler.CoreRun.Check as CoreRun2ChkSem
+import UHC.Light.Compiler.EHC.ASTTypes
 import qualified UHC.Light.Compiler.HI as HI
-import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
 import UHC.Light.Compiler.Module.ImportExport
 import UHC.Light.Compiler.CodeGen.ImportUsedModules
 import UHC.Util.Time
@@ -71,14 +64,7 @@
 
 
 
-
-
-
-
-
-
-
-{-# LINE 88 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 59 "src/ehc/EHC/CompileUnit.chs" #-}
 data Optim
   = Optim
 
@@ -86,7 +72,7 @@
 defaultOptim
   = Optim
 
-{-# LINE 111 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 82 "src/ehc/EHC/CompileUnit.chs" #-}
 data EHCCompileSeqNr
   = EHCCompileSeqNr
       { ecseqnrThis     :: !Int
@@ -103,44 +89,48 @@
     where tot = show total
           ths = show this
 
-{-# LINE 133 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 104 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | Single compilation unit info, fields prefixed with _ have Lens access
 data EHCompileUnit
   = EHCompileUnit
       { ecuSrcFilePath       :: !FPath
       , ecuMbCppFilePath     :: !(Maybe FPath)
-      , _ecuMbPrevSearchInfo :: !(Maybe PrevSearchInfo)
       , ecuFileLocation      :: !FileLoc
       , ecuGrpNm             :: !HsName
       , ecuModNm             :: !HsName
-      , _ecuMbHS             :: !(Maybe HS.AGItf)
-      , _ecuMbHSSem          :: !(Maybe HSSem.Syn_AGItf)
-      , _ecuMbEH             :: !(Maybe EH.AGItf)
-      , _ecuMbEHSem          :: !(Maybe EHSem.Syn_AGItf)
-      , _ecuMbCore           :: !(Maybe Core.CModule)
-      , _ecuMbCoreSem        :: !(Maybe Core2GrSem.Syn_CodeAGItf)
-      , _ecuMbCore2CoreRunSem:: !(Maybe Core2CoreRunSem.Syn_CodeAGItf)
-      , _ecuMbCoreSemMod     :: !(Maybe Core2ChkSem.Syn_CodeAGItf)
-      , _ecuMbCoreRun        :: !(Maybe CoreRun.Mod)
-      , _ecuMbCoreRunSemMod  :: !(Maybe CoreRun2ChkSem.Syn_AGItf)
+      , _ecuMbHS             :: !(Maybe AST_HS)
+      , _ecuMbHSSem          :: !(Maybe AST_HS_Sem_Check)
+      , _ecuMbEH             :: !(Maybe AST_EH)
+      , _ecuMbEHSem          :: !(Maybe AST_EH_Sem_Check)
+      , _ecuASTAvailFiles    :: [ASTAvailableFile]
+      , _ecuMbCore           :: !(Maybe AST_Core)
+      , _ecuMbCore2CoreRunSem:: !(Maybe AST_Core_Sem_ToCoreRun)
+      , _ecuMbCoreSemMod     :: !(Maybe AST_Core_Sem_Check)
+      , _ecuMbCoreRun        :: !(Maybe AST_CoreRun)
+      , _ecuMbCoreRunSemMod  :: !(Maybe AST_CoreRun_Sem_Mod)
+      , _ecuMbCoreRunSemChk  :: !(Maybe AST_CoreRun_Sem_Check)
       , ecuState             :: !EHCompileUnitState
       , _ecuASTType          :: !ASTType
       , _ecuASTFileContent   :: !ASTFileContent
       , _ecuASTFileUse       :: !ASTFileUse
+      , _ecuAlreadyFlowIntoCRSI
+      						 :: !(Map.Map ASTType (Set.Set ASTAlreadyFlowIntoCRSIInfo))
+      						 										-- the semantics already flown into global state
       , ecuImportUsedModules :: !ImportUsedModules                  -- imported modules info
-      , ecuIsTopMod          :: !Bool                               -- module has been specified for compilation on commandline
+      , _ecuIsTopMod         :: !Bool                               -- module has been specified for compilation on commandline
       , ecuHasMain           :: !Bool                               -- has a def for 'main'?
       , ecuNeedsCompile      :: !Bool                               -- (re)compilation from .hs needed?
       , _ecuMbSrcTime        :: !(Maybe ClockTime)                  -- timestamp of possibly absent source (hs, or other type) file
       , _ecuMbHIInfoTime     :: !(Maybe ClockTime)                  -- timestamp of possibly previously generated hi file
       , _ecuMbCoreTime       :: !(Maybe ClockTime)                  -- timestamp of possibly previously generated core file
       , _ecuMbCoreRunTime    :: !(Maybe ClockTime)                  -- timestamp of possibly previously generated corerun file
-      , _ecuMbHSSemMod       :: !(Maybe HSSemMod.Syn_AGItf)
+      , _ecuMbHSSemMod       :: !(Maybe AST_HS_Sem_Mod)
       , ecuMod               :: !Mod                                -- import/export info of module
-      , _ecuMbPrevHIInfo     :: !(Maybe HI.HIInfo)                  -- possible HI info of previous run
+      , _ecuMbPrevHIInfo     :: !(Maybe AST_HI)                  -- possible HI info of previous run
       , ecuMbOptim           :: !(Maybe Optim)
-      , _ecuMbHIInfo         :: !(Maybe HI.HIInfo)                  -- HI info of module
-      , ecuDirIsWritable     :: !Bool                               -- can be written in dir of module?
+      , _ecuMbHIInfo         :: !(Maybe AST_HI)                  -- HI info of module
+      , _ecuDirIsWritable    :: !Bool                               -- can be written in dir of module?
+      , _ecuMbPrevSearchInfo :: !(Maybe PrevSearchInfo)             -- file search info required for imported module search
       , ecuMbOpts            :: (Maybe EHCOpts)                     -- possibly per module adaption of options (caused by pragmas)
       , ecuTarget            :: Target                              -- target for which we compile
       , ecuPragmas           :: !(Set.Set Pragma.Pragma)            -- pragmas of module
@@ -150,57 +140,61 @@
       }
       deriving Typeable
 
-{-# LINE 225 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 203 "src/ehc/EHC/CompileUnit.chs" #-}
 mkLabel ''EHCompileUnit
 
 
-{-# LINE 232 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 214 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuCore = isoMb "ecuMbCore" ecuMbCore
-ecuCoreSem = isoMb "ecuMbCoreSem" ecuMbCoreSem
-{-# LINE 236 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuCoreTime = isoMb "ecuMbCoreTime" ecuMbCoreTime
-{-# LINE 248 "src/ehc/EHC/CompileUnit.chs" #-}
+
+{-# LINE 224 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuCoreRun = isoMb "ecuMbCoreRun" ecuMbCoreRun
-{-# LINE 251 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuCoreRunTime = isoMb "ecuMbCoreRunTime" ecuMbCoreRunTime
-{-# LINE 254 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 227 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuCoreSemMod = isoMb "ecuMbCoreSemMod" ecuMbCoreSemMod
-{-# LINE 257 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 230 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuCoreRunSemMod = isoMb "ecuMbCoreRunSemMod" ecuMbCoreRunSemMod
+ecuCoreRunSemChk = isoMb "ecuMbCoreRunSemChk" ecuMbCoreRunSemChk
 
-{-# LINE 261 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 235 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuEH = isoMb "ecuMbEH" ecuMbEH
 ecuEHSem = isoMb "ecuMbEHSem" ecuMbEHSem
 ecuHS = isoMb "ecuMbHS" ecuMbHS
 ecuHSSem = isoMb "ecuMbHSSem" ecuMbHSSem
 
-{-# LINE 268 "src/ehc/EHC/CompileUnit.chs" #-}
+
+{-# LINE 248 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuHIInfo = isoMbWithDefault HI.emptyHIInfo ecuMbHIInfo
 ecuPrevHIInfo = isoMb "ecuMbPrevHIInfo" ecuMbPrevHIInfo
 ecuHSSemMod = isoMb "ecuMbHSSemMod" ecuMbHSSemMod
 ecuSrcTime = isoMb "ecuMbSrcTime" ecuMbSrcTime
 ecuHIInfoTime = isoMb "ecuMbHIInfoTime" ecuMbHIInfoTime
 
-{-# LINE 276 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 256 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuPrevSearchInfo = isoMb "ecuMbPrevSearchInfo" ecuMbPrevSearchInfo
 
-{-# LINE 280 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuHSDeclImpNmS = iumHSDeclModules . ecuImportUsedModules
+{-# LINE 260 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuCoreTime = isoMb "ecuMbCoreTime" ecuMbCoreTime
+
+{-# LINE 268 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuCoreRunTime = isoMb "ecuMbCoreRunTime" ecuMbCoreRunTime
+
+{-# LINE 272 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuSrcDeclImpNmS = iumSrcDeclModules . ecuImportUsedModules
 ecuHIDeclImpNmS = iumHIDeclModules . ecuImportUsedModules
 ecuHIUsedImpNmS = iumHIUsedModules . ecuImportUsedModules
 
-{-# LINE 286 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 278 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuFilePath :: EHCompileUnit -> FPath
 ecuFilePath ecu
   = maybe (ecuSrcFilePath ecu) id (ecuMbCppFilePath ecu)
 
-{-# LINE 296 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 288 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuIsMainMod :: EHCompileUnit -> Bool
-ecuIsMainMod e = ecuIsTopMod e && ecuHasMain e
+ecuIsMainMod e = _ecuIsTopMod e && ecuHasMain e
 
-{-# LINE 301 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 293 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | give the current value HIInfo, or the previous one
-ecuAnHIInfo :: EHCompileUnit -> HI.HIInfo
+ecuAnHIInfo :: EHCompileUnit -> AST_HI
 ecuAnHIInfo e
   = case _ecuMbPrevHIInfo e of
       Just pi | HI.hiiIsEmpty hii
@@ -208,13 +202,12 @@
       _ -> hii
   where hii = e ^. ecuHIInfo
 
-{-# LINE 312 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 304 "src/ehc/EHC/CompileUnit.chs" #-}
 emptyECU :: EHCompileUnit
 emptyECU
   = EHCompileUnit
       { ecuSrcFilePath       = emptyFPath
       , ecuMbCppFilePath     = Nothing
-      , _ecuMbPrevSearchInfo = Nothing
       , ecuFileLocation      = emptyFileLoc
       , ecuGrpNm             = hsnUnknown
       , ecuModNm             = hsnUnknown
@@ -222,18 +215,21 @@
       , _ecuMbHSSem          = Nothing
       , _ecuMbEH             = Nothing
       , _ecuMbEHSem          = Nothing
+      , _ecuASTAvailFiles    = []
       , _ecuMbCore           = Nothing
-      , _ecuMbCoreSem        = Nothing
       , _ecuMbCore2CoreRunSem= Nothing
       , _ecuMbCoreSemMod     = Nothing
       , _ecuMbCoreRun		 = Nothing
       , _ecuMbCoreRunSemMod  = Nothing
+      , _ecuMbCoreRunSemChk  = Nothing
       , ecuState             = ECUS_Unknown
       , _ecuASTType          = ASTType_Unknown
       , _ecuASTFileContent   = ASTFileContent_Unknown
       , _ecuASTFileUse       = ASTFileUse_Unknown
+      , _ecuAlreadyFlowIntoCRSI
+      						 = Map.empty
       , ecuImportUsedModules = emptyImportUsedModules
-      , ecuIsTopMod          = False
+      , _ecuIsTopMod         = False
       , ecuHasMain           = False
       , ecuNeedsCompile      = True
       , _ecuMbSrcTime        = Nothing
@@ -245,7 +241,8 @@
       , _ecuMbPrevHIInfo     = Nothing
       , ecuMbOptim           = Nothing
       , _ecuMbHIInfo         = Nothing
-      , ecuDirIsWritable     = False
+      , _ecuDirIsWritable    = False
+      , _ecuMbPrevSearchInfo = Nothing
       , ecuMbOpts            = Nothing
       , ecuTarget            = defaultTarget
       , ecuPragmas           = Set.empty
@@ -254,15 +251,15 @@
       , ecuGenCodeFiles      = []
       }
 
-{-# LINE 405 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 407 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuImpNmS :: EHCompileUnit -> Set.Set HsName
 ecuImpNmS ecu = -- (\v -> tr "XX" (pp $ Set.toList v) v) $
-  Set.delete (ecuModNm ecu) $ Set.unions [ ecuHSDeclImpNmS ecu, ecuHIDeclImpNmS ecu, ecuHIUsedImpNmS ecu ]
+  Set.delete (ecuModNm ecu) $ Set.unions [ ecuSrcDeclImpNmS ecu, ecuHIDeclImpNmS ecu, ecuHIUsedImpNmS ecu ]
 
 ecuImpNmL :: EHCompileUnit -> [HsName]
 ecuImpNmL = Set.toList . ecuImpNmS -- ecu = (nub $ ecuHSDeclImpNmL ecu ++ ecuHIDeclImpNmL ecu ++ ecuHIUsedImpNmL ecu) \\ [ecuModNm ecu]
 
-{-# LINE 414 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 416 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | The used modules, for linking, according to .hi info
 ecuTransClosedUsedModMp :: EHCompileUnit -> HI.HIInfoUsedModMp
 ecuTransClosedUsedModMp = HI.hiiTransClosedUsedModMp . ecuAnHIInfo
@@ -271,18 +268,35 @@
 ecuTransClosedOrphanModS :: EHCompileUnit -> Set.Set HsName
 ecuTransClosedOrphanModS = HI.hiiTransClosedOrphanModS . ecuAnHIInfo
 
-{-# LINE 424 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 426 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | Is orphan, according to .hi info
 ecuIsOrphan :: EHCompileUnit -> Bool
 ecuIsOrphan = isJust . HI.hiiMbOrphan . ecuAnHIInfo
 
-{-# LINE 444 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 436 "src/ehc/EHC/CompileUnit.chs" #-}
+-- | Semantics for an AST already has flowed into global state
+ecuHasAlreadyFlowedWith :: ASTType -> ASTAlreadyFlowIntoCRSIInfo -> EHCompileUnit -> Bool
+ecuHasAlreadyFlowedWith asttype flowstage ecu
+  = case Map.lookup asttype (ecu ^. ecuAlreadyFlowIntoCRSI) of
+      Just s -> Set.member flowstage s
+      _      -> False
+
+-- | Semantics for an AST already has flowed into global state
+ecuHasAlreadyFlowed :: ASTType -> ASTSemFlowStage -> EHCompileUnit -> Bool
+ecuHasAlreadyFlowed asttype flowstage ecu = ecuHasAlreadyFlowedWith asttype (flowstage,Nothing) ecu
+
+{-# LINE 455 "src/ehc/EHC/CompileUnit.chs" #-}
+-- | Lookup available AST file, left biased (according to fileSuffMpHs (in the end))
+ecuLookupAvailASTFile :: ASTType -> ASTFileUse -> (ASTSuffixKey -> Bool) -> EHCompileUnit -> Maybe ASTAvailableFile
+ecuLookupAvailASTFile t u isOkCont ecu = find (\a -> _astavailfType a == t && _astavailfUse a == u && isOkCont (_astavailfContent a, u)) (_ecuASTAvailFiles ecu)
+
+{-# LINE 465 "src/ehc/EHC/CompileUnit.chs" #-}
 instance CompileUnitState FileSuffInitState where
   cusDefault      = (ECUS_Eh EHStart, ASTType_EH, ASTFileContent_Text, ASTFileUse_Src)
   cusUnk          = (ECUS_Unknown, ASTType_Unknown, ASTFileContent_Unknown, ASTFileUse_Unknown)
   cusIsUnk (ECUS_Unknown,_,_,_) = True
   cusIsUnk _                    = False
-{-# LINE 454 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 475 "src/ehc/EHC/CompileUnit.chs" #-}
   cusIsImpKnown (s,_,_,_) = case s of
                       ECUS_Haskell HSOnlyImports  -> True
                       ECUS_Haskell HIOnlyImports  -> True
@@ -294,26 +308,26 @@
                       ECUS_CoreRun CRROnlyImports -> True
                       _                           -> False
 
-{-# LINE 473 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 494 "src/ehc/EHC/CompileUnit.chs" #-}
 instance FileLocatable EHCompileUnit FileLoc where
   fileLocation   = ecuFileLocation
   noFileLocation = emptyFileLoc
 
-{-# LINE 479 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 500 "src/ehc/EHC/CompileUnit.chs" #-}
 instance CompileUnit EHCompileUnit HsName FileLoc FileSuffInitState where
-  cuDefault         = emptyECU
-  cuFPath           = ecuFilePath
-  cuLocation        = fileLocation
-  cuKey             = ecuModNm
-  cuState u         = (ecuState u, _ecuASTType u, _ecuASTFileContent u, _ecuASTFileUse u)
-  cuUpdFPath        = ecuStoreSrcFilePath
-  cuUpdLocation     = ecuStoreFileLocation
-  cuUpdState (s,t,c,u) = ecuStoreState s . (ecuASTType ^= t) . (ecuASTFileContent ^= c) . (ecuASTFileUse ^= u)
-  cuUpdKey   nm u   = u {ecuModNm = nm}
-  cuImports         = ecuImpNmL
-  cuParticipation u = if not (Set.null $ Set.filter (Pragma.pragmaIsExcludeTarget $ ecuTarget u) $ ecuPragmas u)
-                      then [CompileParticipation_NoImport]
-                      else []
+  cuDefault             = emptyECU
+  cuFPath               = ecuFilePath
+  cuLocation            = fileLocation
+  cuKey                 = ecuModNm
+  cuState u             = (ecuState u, _ecuASTType u, _ecuASTFileContent u, _ecuASTFileUse u)
+  cuUpdFPath            = ecuStoreSrcFilePath
+  cuUpdLocation         = ecuStoreFileLocation
+  cuUpdState (s,t,c,u)  = ecuStoreState s . (ecuASTType ^= t) . (ecuASTFileContent ^= c) . (ecuASTFileUse ^= u)
+  cuUpdKey   nm u       = u {ecuModNm = nm}
+  cuImports             = ecuImpNmL
+  cuParticipation u     = if not (Set.null $ Set.filter (Pragma.pragmaIsExcludeTarget $ ecuTarget u) $ ecuPragmas u)
+                          then [CompileParticipation_NoImport]
+                          else []
 
 -- instance FPathError Err
 
@@ -334,7 +348,7 @@
       ":" >#< ppBracketsCommas (ecuImpNmL ecu) >|<
       "," >#< show (ecuState ecu)
 
-{-# LINE 525 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 546 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | The final state to be reached
 ecuFinalDestinationState :: EHCompileUnit -> EHCompileUnitState
 ecuFinalDestinationState ecu = ecuStateFinalDestination upd $ ecuState ecu
@@ -344,7 +358,7 @@
           | otherwise           = ECUS_Haskell HIAllSem
         upd s                   = s
 
-{-# LINE 542 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 563 "src/ehc/EHC/CompileUnit.chs" #-}
 type EcuUpdater a = a -> EHCompileUnit -> EHCompileUnit
 
 ecuStoreSrcFilePath :: EcuUpdater FPath
@@ -356,43 +370,39 @@
 ecuStoreState :: EcuUpdater EHCompileUnitState
 ecuStoreState x ecu = ecu { ecuState = x }
 
-ecuStoreHS :: EcuUpdater HS.AGItf
+ecuStoreHS :: EcuUpdater AST_HS
 ecuStoreHS x ecu = ecu { _ecuMbHS = Just x }
 
-ecuStoreEH :: EcuUpdater EH.AGItf
+ecuStoreEH :: EcuUpdater AST_EH
 ecuStoreEH x ecu = ecu { _ecuMbEH = Just x }
 
-ecuStoreHSSem :: EcuUpdater HSSem.Syn_AGItf
+ecuStoreHSSem :: EcuUpdater AST_HS_Sem_Check
 ecuStoreHSSem x ecu = ecu { _ecuMbHSSem = Just x }
 
-ecuStoreEHSem :: EcuUpdater EHSem.Syn_AGItf
+ecuStoreEHSem :: EcuUpdater AST_EH_Sem_Check
 ecuStoreEHSem x ecu = ecu { _ecuMbEHSem = Just x }
 
-{-# LINE 567 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuStoreCoreSemMod :: EcuUpdater Core2ChkSem.Syn_CodeAGItf
+{-# LINE 588 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuStoreCoreSemMod :: EcuUpdater AST_Core_Sem_Check
 ecuStoreCoreSemMod x ecu = ecu { _ecuMbCoreSemMod = Just x }
 
-{-# LINE 572 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuStoreCoreSem :: EcuUpdater Core2GrSem.Syn_CodeAGItf
-ecuStoreCoreSem x ecu = ecu { _ecuMbCoreSem = Just x }
-
-{-# LINE 577 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuStoreCore :: EcuUpdater Core.CModule
+{-# LINE 598 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuStoreCore :: EcuUpdater AST_Core
 ecuStoreCore x ecu | x `seq` True = ecu { _ecuMbCore = Just x }
 
-{-# LINE 588 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuStoreCoreRun :: EcuUpdater CoreRun.Mod
+{-# LINE 609 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuStoreCoreRun :: EcuUpdater AST_CoreRun
 ecuStoreCoreRun x ecu | x `seq` True = ecu { _ecuMbCoreRun = Just x }
 
-{-# LINE 593 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuStoreCoreRunSemMod :: EcuUpdater CoreRun2ChkSem.Syn_AGItf
+{-# LINE 614 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuStoreCoreRunSemMod :: EcuUpdater AST_CoreRun_Sem_Mod
 ecuStoreCoreRunSemMod x ecu = ecu { _ecuMbCoreRunSemMod = Just x }
 
-{-# LINE 598 "src/ehc/EHC/CompileUnit.chs" #-}
-ecuStoreCore2CoreRunSem :: EcuUpdater Core2CoreRunSem.Syn_CodeAGItf
+{-# LINE 619 "src/ehc/EHC/CompileUnit.chs" #-}
+ecuStoreCore2CoreRunSem :: EcuUpdater AST_Core_Sem_ToCoreRun
 ecuStoreCore2CoreRunSem x ecu = ecu { _ecuMbCore2CoreRunSem = Just x }
 
-{-# LINE 649 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 670 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreSrcTime :: EcuUpdater ClockTime
 ecuStoreSrcTime x ecu = ecu { _ecuMbSrcTime = Just x }
 
@@ -402,11 +412,11 @@
 ecuStoreHIInfoTime :: EcuUpdater ClockTime
 ecuStoreHIInfoTime x ecu = ecu { _ecuMbHIInfoTime = Just x }
 
-ecuStoreHSSemMod :: EcuUpdater HSSemMod.Syn_AGItf
+ecuStoreHSSemMod :: EcuUpdater AST_HS_Sem_Mod
 ecuStoreHSSemMod x ecu = ecu { _ecuMbHSSemMod = Just x }
 
-ecuStoreHSDeclImpS :: EcuUpdater (Set.Set HsName)
-ecuStoreHSDeclImpS x ecu = ecu { ecuImportUsedModules = ium {iumHSDeclModules = x} }
+ecuStoreSrcDeclImpS :: EcuUpdater (Set.Set HsName)
+ecuStoreSrcDeclImpS x ecu = ecu { ecuImportUsedModules = ium {iumSrcDeclModules = x} }
   where ium = ecuImportUsedModules ecu
 
 ecuStoreHIDeclImpS :: EcuUpdater (Set.Set HsName)
@@ -425,7 +435,7 @@
 ecuStoreMod x ecu = ecu { ecuMod = x }
 
 ecuSetIsTopMod :: EcuUpdater Bool
-ecuSetIsTopMod x ecu = ecu { ecuIsTopMod = x }
+ecuSetIsTopMod x ecu = ecu { _ecuIsTopMod = x }
 
 ecuSetHasMain :: EcuUpdater Bool
 ecuSetHasMain x ecu = ecu { ecuHasMain = x }
@@ -439,28 +449,28 @@
 -- ecuStorePrevHISem :: EcuUpdater HISem.Syn_AGItf
 -- ecuStorePrevHISem x ecu = ecu { ecuMbPrevHISem = Just x }
 
-ecuStorePrevHIInfo :: EcuUpdater HI.HIInfo
+ecuStorePrevHIInfo :: EcuUpdater AST_HI
 ecuStorePrevHIInfo x ecu = ecu { _ecuMbPrevHIInfo = Just x }
 
 ecuStoreOptim :: EcuUpdater Optim
 ecuStoreOptim x ecu = ecu { ecuMbOptim = Just x }
 
-ecuStoreHIInfo :: EcuUpdater HI.HIInfo
+ecuStoreHIInfo :: EcuUpdater AST_HI
 ecuStoreHIInfo x ecu | x `seq` True = ecu { _ecuMbHIInfo = Just x }
 
-{-# LINE 710 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 731 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreCoreTime :: EcuUpdater ClockTime
 ecuStoreCoreTime x ecu = ecu { _ecuMbCoreTime = Just x }
 
-{-# LINE 715 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 736 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreCoreRunTime :: EcuUpdater ClockTime
 ecuStoreCoreRunTime x ecu = ecu { _ecuMbCoreRunTime = Just x }
 
-{-# LINE 725 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 746 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreDirIsWritable :: EcuUpdater Bool
-ecuStoreDirIsWritable x ecu = ecu { ecuDirIsWritable = x }
+ecuStoreDirIsWritable x ecu = ecu { _ecuDirIsWritable = x }
 
-{-# LINE 730 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 751 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreOpts :: EcuUpdater EHCOpts
 ecuStoreOpts x ecu = ecu { ecuMbOpts = Just x }
 
@@ -473,25 +483,25 @@
 ecuStoreUsedNames :: EcuUpdater ModEntRelFilterMp
 ecuStoreUsedNames x ecu = ecu { ecuUsedNames = x }
 
-{-# LINE 744 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 765 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreGenCodeFiles :: EcuUpdater [FPath]
 ecuStoreGenCodeFiles x ecu = ecu { ecuGenCodeFiles = x }
 
-{-# LINE 749 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 770 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuStoreSeqNr :: EcuUpdater EHCCompileSeqNr
 ecuStoreSeqNr x ecu = ecu { ecuSeqNr = x }
 
 ecuStoreCppFilePath :: EcuUpdater FPath
 ecuStoreCppFilePath x ecu = ecu { ecuMbCppFilePath = Just x }
 
-{-# LINE 761 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 782 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | Has the source file the given extension? Given suffix is stripped from possible prefixed '.'.
 ecuSrcHasSuffix :: String -> EHCompileUnit -> Bool
 ecuSrcHasSuffix suff ecu
   = maybe False (==suff') $ fpathMbSuff $ ecuSrcFilePath ecu
   where suff' = case suff of {('.':s) -> s; _ -> suff}
 
-{-# LINE 769 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 790 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | Is HS newer?
 --   If no HS exists False is returned.
 ecuIsHSNewerThanHI :: EHCompileUnit -> Bool
@@ -501,14 +511,14 @@
       (Nothing ,Just thi) -> False
       _                   -> True
 
-{-# LINE 788 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 801 "src/ehc/EHC/CompileUnit.chs" #-}
 ecuIsValidHIInfo :: EHCompileUnit -> Bool
 ecuIsValidHIInfo ecu
   = case _ecuMbPrevHIInfo ecu of
       Just i -> HI.hiiValidity i == HI.HIValidity_Ok
       _      -> False
 
-{-# LINE 796 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 809 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | Can HI be used instead of HS?
 --   This is purely based on HI being of the right version and HS not newer.
 --   The need for recompilation considers dependencies on imports as well.
@@ -516,7 +526,7 @@
 ecuCanUseHIInsteadOfHS ecu
   = ecuIsValidHIInfo ecu && not (ecuIsHSNewerThanHI ecu)
 
-{-# LINE 805 "src/ehc/EHC/CompileUnit.chs" #-}
+{-# LINE 818 "src/ehc/EHC/CompileUnit.chs" #-}
 -- | Compilation can actually be done?
 ecuCanCompile :: EHCompileUnit -> Bool
-ecuCanCompile ecu = isJust (_ecuMbSrcTime ecu) && ecuDirIsWritable ecu
+ecuCanCompile ecu = isJust (_ecuMbSrcTime ecu) && _ecuDirIsWritable ecu
diff --git a/src/UHC/Light/Compiler/EHC/FileSuffMp.hs b/src/UHC/Light/Compiler/EHC/FileSuffMp.hs
--- a/src/UHC/Light/Compiler/EHC/FileSuffMp.hs
+++ b/src/UHC/Light/Compiler/EHC/FileSuffMp.hs
@@ -23,10 +23,12 @@
     , ( Just "lhs" , (ECUS_Haskell LHSStart, ASTType_HS, ASTFileContent_LitText, ASTFileUse_Src), True )
     , ( Just "eh"  , (ECUS_Eh EHStart, ASTType_EH, ASTFileContent_Text, ASTFileUse_Src), True )
     , ( Just "hi"  , (ECUS_Haskell HIStart, ASTType_HI, ASTFileContent_Binary, ASTFileUse_Cache), False )
-    , ( Just Cfg.suffixDotlessBinaryCoreRun , (ECUS_CoreRun CRRStartBinary, ASTType_CoreRun, ASTFileContent_Binary, ASTFileUse_Src), True )
+    , ( Just Cfg.suffixDotlessInputOutputBinaryCoreRun , (ECUS_CoreRun CRRStartBinary, ASTType_CoreRun, ASTFileContent_Binary, ASTFileUse_Src), True )
+    , ( Just Cfg.suffixDotlessOutputTextualCoreRun, (ECUS_CoreRun CRRStartText, ASTType_CoreRun, ASTFileContent_Text, ASTFileUse_Src), True )
     , ( Just Cfg.suffixDotlessInputOutputTextualCore, (ECUS_Core CRStartText, ASTType_Core, ASTFileContent_Text, ASTFileUse_Src), True   )
     , ( Just Cfg.suffixDotlessInputOutputBinaryCore , (ECUS_Core CRStartBinary, ASTType_Core, ASTFileContent_Binary, ASTFileUse_Src), True )
-    , ( Just Cfg.suffixDotlessBinaryCore , (ECUS_Core CRStartBinary, ASTType_Core, ASTFileContent_Binary, ASTFileUse_Src), False )
+    , ( Just Cfg.suffixDotlessBinaryCore , (ECUS_Core CRStartBinary, ASTType_Core, ASTFileContent_Binary, ASTFileUse_Cache), False )
+    , ( Just Cfg.suffixDotlessBinaryCoreRun , (ECUS_CoreRun CRRStartBinary, ASTType_CoreRun, ASTFileContent_Binary, ASTFileUse_Cache), False )
     ]
     ++ (if targetIsOnUnixAndOrC (ehcOptTarget opts)
         then [ ( Just "c"   , (ECUS_C CStart, ASTType_C, ASTFileContent_Text, ASTFileUse_Src), True )
@@ -35,7 +37,7 @@
         else []
        )
 
-{-# LINE 72 "src/ehc/EHC/FileSuffMp.chs" #-}
+{-# LINE 76 "src/ehc/EHC/FileSuffMp.chs" #-}
 -- Suffix map for empty suffix, defaults to .hs
 fileSuffMpHsNoSuff :: FileSuffMp
 fileSuffMpHsNoSuff
diff --git a/src/UHC/Light/Compiler/EHC/InitialSetup.hs b/src/UHC/Light/Compiler/EHC/InitialSetup.hs
--- a/src/UHC/Light/Compiler/EHC/InitialSetup.hs
+++ b/src/UHC/Light/Compiler/EHC/InitialSetup.hs
@@ -1,17 +1,19 @@
 module UHC.Light.Compiler.EHC.InitialSetup
 ( initialHSSem
 , initialEHSem
-, initialCore2GrSem
-, initialCore2CoreRunSem
+, initialCEnv
+, initialCoreRunState
 , initialHSSemMod )
 where
 import qualified Data.Map as Map
 import UHC.Light.Compiler.EHC.Common
+import UHC.Light.Compiler.EHC.CompileRun.Base
 import qualified UHC.Light.Compiler.HS.MainAG as HSSem
-import qualified UHC.Light.Compiler.EH.MainAG as EHSem
+import qualified UHC.Light.Compiler.EH.Main as EHSem
 import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
 import qualified UHC.Light.Compiler.CoreRun as CoreRun
 import UHC.Light.Compiler.LamInfo
+import UHC.Light.Compiler.CodeGen.CEnv
 import qualified UHC.Light.Compiler.Gam.ClGam as Pr (initClGam)
 import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
 import UHC.Light.Compiler.CodeGen.ImportUsedModules
@@ -26,7 +28,8 @@
 
 
 
-{-# LINE 53 "src/ehc/EHC/InitialSetup.chs" #-}
+
+{-# LINE 59 "src/ehc/EHC/InitialSetup.chs" #-}
 initialHSSem :: EHCOpts -> HSSem.Inh_AGItf
 initialHSSem opts
   = HSSem.Inh_AGItf
@@ -43,7 +46,7 @@
       , HSSem.topInstanceNmL_Inh_AGItf  = []
       }
 
-{-# LINE 75 "src/ehc/EHC/InitialSetup.chs" #-}
+{-# LINE 81 "src/ehc/EHC/InitialSetup.chs" #-}
 initialEHSem :: EHCOpts -> FPath -> EHSem.Inh_AGItf
 initialEHSem opts fp
   = EHSem.Inh_AGItf
@@ -65,22 +68,18 @@
       , EHSem.moduleImportExportImpl_Inh_AGItf	= emptyModuleImportExportImpl
       }
 
-{-# LINE 104 "src/ehc/EHC/InitialSetup.chs" #-}
-initialCore2GrSem :: EHCOpts -> Core2GrSem.Inh_CodeAGItf
-initialCore2GrSem opts
-  = Core2GrSem.Inh_CodeAGItf
-      { Core2GrSem.gUniq_Inh_CodeAGItf           	= uidStart
-      , Core2GrSem.dataGam_Inh_CodeAGItf         	= emptyGam
-      , Core2GrSem.opts_Inh_CodeAGItf            	= opts
-      , Core2GrSem.lamMp_Inh_CodeAGItf           	= initLamMp
-      , Core2GrSem.importUsedModules_Inh_CodeAGItf	= emptyImportUsedModules
+{-# LINE 124 "src/ehc/EHC/InitialSetup.chs" #-}
+initialCEnv :: CEnv
+initialCEnv
+  = emptyCEnv
+      { _cenvLamMp           		= initLamMp
       }
 
-{-# LINE 118 "src/ehc/EHC/InitialSetup.chs" #-}
-initialCore2CoreRunSem :: CoreRun.Nm2RefMp
-initialCore2CoreRunSem = CoreRun.emptyNm2RefMp
+{-# LINE 139 "src/ehc/EHC/InitialSetup.chs" #-}
+initialCoreRunState :: EHCompileRunCoreRunStateInfo
+initialCoreRunState = emptyEHCompileRunCoreRunStateInfo
 
-{-# LINE 123 "src/ehc/EHC/InitialSetup.chs" #-}
+{-# LINE 144 "src/ehc/EHC/InitialSetup.chs" #-}
 initialHSSemMod :: EHCOpts -> HSSemMod.Inh_AGItf
 initialHSSemMod opts
   = HSSemMod.Inh_AGItf
diff --git a/src/UHC/Light/Compiler/EHC/Main.hs b/src/UHC/Light/Compiler/EHC/Main.hs
--- a/src/UHC/Light/Compiler/EHC/Main.hs
+++ b/src/UHC/Light/Compiler/EHC/Main.hs
@@ -19,7 +19,7 @@
 import qualified Data.Map as Map
 import qualified Data.Set as Set
 import Control.Monad.State
-import Control.Monad.Error
+import UHC.Util.Error
 import UHC.Util.Lens
 import UHC.Light.Compiler.EHC.BuildFunction
 import UHC.Light.Compiler.Base.Target
@@ -29,6 +29,7 @@
 import UHC.Light.Compiler.EHC.CompilePhase.Module
 import UHC.Light.Compiler.Module.ImportExport (modBuiltin)
 import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Base.UnderDev
 import System.Directory
 import UHC.Light.Compiler.Base.PackageDatabase
 import UHC.Light.Compiler.Base.Parser2
@@ -48,7 +49,9 @@
 
 
 
-{-# LINE 104 "src/ehc/EHC/Main.chs" #-}
+
+
+{-# LINE 106 "src/ehc/EHC/Main.chs" #-}
 mainEHC :: EHCOpts -> IO ()
 mainEHC opts0
   =  do  {  args      <- getArgs
@@ -62,7 +65,12 @@
                                     , ehcCurDir             = curDir
                                     }
                                 where p = mkFPath "uhcl"     -- hardbaked name
-                 oo@(o,n,errs)  = ehcCmdLineOptsApply (maybe [] (\d -> [\o -> o {ehcOptCfgInstallRoot = Just d}]) mbDataDir) args opts1
+                 oo@(o,n,errs)  = ehcCmdLineOptsApply
+                                    ([]
+                                    ++ [\o -> if ehcOptIsUnderDev UnderDev_NameAnalysis o then o {ehcOptGenGenerics=False} else o]
+                                    ++ (maybe [] (\d -> [\o -> o {ehcOptCfgInstallRoot = Just d}]) mbDataDir)
+                                    )
+                                    args opts1
                  opts2          = maybe opts1 id o
          ;  case opts2 of
               o | isNotOk (ehcOptMbTarget       o) -> err $ "non existent target `"        ++ fromNotOk (ehcOptMbTarget       o) ++ "'"
@@ -98,13 +106,13 @@
          }
   where envkey opts = mkEhcenvKey (Cfg.verFull Cfg.version) (fpathToStr $ ehcProgName opts) Cfg.ehcDefaultVariant
 
-{-# LINE 199 "src/ehc/EHC/Main.chs" #-}
+{-# LINE 206 "src/ehc/EHC/Main.chs" #-}
 defaultEHCEnvironment :: EHCEnvironment
 defaultEHCEnvironment
   = EHCEnvironment Cfg.ehcDefaultVariant Cfg.ehcDefaultInplaceInstallDir
 
-{-# LINE 277 "src/ehc/EHC/Main.chs" #-}
-doCompilePrepare :: [String] -> EHCOpts -> IO (Maybe (EHCOpts,[FPath],[HsName],EHCompileRun))
+{-# LINE 284 "src/ehc/EHC/Main.chs" #-}
+doCompilePrepare :: [String] -> EHCOpts -> IO (Maybe (EHCOpts,[FPath],[HsName],EHCompileRun m))
 doCompilePrepare fnL@(fn:_) opts
   = do { let fpL@(fp:_)             = map (mkTopLevelFPath "hs") fnL
              topModNmL@(topModNm:_) = map (mkHNm . fpathBase) fpL
@@ -161,18 +169,19 @@
                                 { _crsiOpts       =   opts3
                                 , _crsiHSInh      =   initialHSSem opts3
                                 , _crsiEHInh      =   initialEHSem opts3 fp
-                                , crsiCoreInh    =   initialCore2GrSem opts3
                                 -- , crsiHIInh      =   initialHISem opts3
                                 , crsiHSModInh   =   initialHSSemMod opts3
                                 }
 -}
              crsi           =   (EHCompileRunStateInfo opts3
+                                                       (astpipeForEHCOpts opts3)
                                                        uidStart uidStart
                                                        (initialHSSem opts3)
                                                        (initialEHSem opts3 fp)
                                                        (mkFileSuffMpHs opts3)
-                                                       (initialCore2GrSem opts3)
-                                                       initialCore2CoreRunSem
+                                                       (initialCEnv)
+                                                       initialCoreRunState
+                                                       -- initialCore2CoreRunSem
                                                        Nothing
                                                        -- (initialHISem opts3)
                                                        (initialHSSemMod opts3)
diff --git a/src/UHC/Light/Compiler/EHC/Main/Compile.hs b/src/UHC/Light/Compiler/EHC/Main/Compile.hs
--- a/src/UHC/Light/Compiler/EHC/Main/Compile.hs
+++ b/src/UHC/Light/Compiler/EHC/Main/Compile.hs
@@ -9,9 +9,9 @@
 import System.Process
 import System.Environment
 import qualified Control.Exception as CE
-import qualified UHC.Light.Compiler.Config as Cfg
 import UHC.Light.Compiler.EHC.Common
 import UHC.Light.Compiler.EHC.Environment
+import UHC.Util.Lens
 import UHC.Light.Compiler.EHC.CompileUnit
 import UHC.Light.Compiler.EHC.CompileRun
 import UHC.Light.Compiler.EHC.InitialSetup
@@ -21,18 +21,18 @@
 import qualified Data.Map as Map
 import qualified Data.Set as Set
 import Control.Monad.State
-import Control.Monad.Error
+import UHC.Util.Error
+import UHC.Light.Compiler.EHC.CompilePhase.Run
 import UHC.Light.Compiler.Base.Target
 import UHC.Light.Compiler.Base.Optimize (allOptimizeMp)
 import UHC.Light.Compiler.EHC.Main.Utils
-import qualified UHC.Light.Compiler.SourceCodeSig as Sig
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.EHC.CompilePhase.Module
 import UHC.Light.Compiler.Module.ImportExport (modBuiltin)
 import UHC.Light.Compiler.Module.ImportExport
 import System.Directory
 import UHC.Light.Compiler.Base.PackageDatabase
 import UHC.Light.Compiler.Base.Parser2
-import qualified UHC.Light.Compiler.ConfigCabal as Cfg (getDataDir)
 
 
 
@@ -41,17 +41,33 @@
 
 
 
-
-
-
-{-# LINE 86 "src/ehc/EHC/Main/Compile.chs" #-}
+{-# LINE 96 "src/ehc/EHC/Main/Compile.chs" #-}
+-- | Alternate compiler driver using (20150806 under construction) new build system
 compileN_Alternate :: EHCCompileRunner m => [FPath] -> [HsName] -> EHCompilePhaseT m ()
 compileN_Alternate fpL topModNmL@(modNm:_) = do
     cpMsg modNm VerboseDebug $ "compileN_Alternate topModNmL: " ++ show topModNmL
-    zipWithM (\fp topModNm -> bcall $ EcuOfNameAndPath Nothing (topModNm, Just fp)) fpL topModNmL
-    return ()
+    crsi <- bcall $ CRSI
+    let opts    = crsi ^. crsiOpts
+        astpipe = astpipeForEHCOpts opts
+        bglob   = BuildGlobal astpipe
+    case (ehcOptTarget opts, fpL, topModNmL) of
+{-
+      (Target_None_Core_AsIs, (fp:_), (modNm:_)) | CoreOpt_Run `elem` ehcOptCoreOpts opts -> do
+          (_ :: AST_Core) <- bcall $ ASTP ((modNm, ASTFileNameOverride_FPathAsTop fp), Nothing) astpipe
+          -- cr <- get
+          -- cpTr TraceOn_BldResult ["compileN_Alternate", show $ Map.keys $ cr ^. crCUCache, show $ cr ^. crNmForward]
+          (bcall $ ActualModNm modNm) >>= cpRunCoreRun
+-}
+      (Target_None_Core_AsIs, (fp:_), (modNm:_)) | CoreOpt_Run `elem` ehcOptCoreOpts opts -> do
+          let modSearchKey = PrevFileSearchKey (FileSearchKey modNm $ ASTFileNameOverride_FPathAsTop fp) Nothing
+          maybeM (bcall $ BuildPlanPMb bglob modSearchKey astpipe) (return ()) $ \astplan -> do
+            -- cpRunCoreRun4 bglob modSearchKey astplan
+            cpRunCoreRun5 bglob modSearchKey astplan
+      (_, fpL, topModNmL) -> do
+          zipWithM (\fp topModNm -> bcall $ EcuOfPrevNameAndPath (PrevFileSearchKey (FileSearchKey topModNm $ ASTFileNameOverride_FPathAsTop fp) Nothing)) fpL topModNmL
+          return ()
 
-{-# LINE 95 "src/ehc/EHC/Main/Compile.chs" #-}
+{-# LINE 125 "src/ehc/EHC/Main/Compile.chs" #-}
 compileN :: EHCCompileRunner m => EHCOpts -> FileSuffMp -> FileLocPath -> [FPath] -> [HsName] -> EHCompilePhaseT m ()
 compileN opts fileSuffMpHs searchPath fpL topModNmL@(modNm:_)
   = do { cpMsg modNm VerboseDebug $ "compileN topModNmL: " ++ show topModNmL
@@ -64,16 +80,18 @@
 
        -- follow the import relation to chase modules which have to be analysed
        ; cpImportGatherFromModsWithImp
-           (if ehcOptPriv opts
+           ({- if ehcOptPriv opts
             then \ecu -> case ecuState ecu of
                            -- ECUS_Haskell HIStart -> Set.toList $ ecuTransClosedOrphanModS ecu
                            ECUS_Haskell HIOnlyImports -> [] -- Set.toList $ ecuTransClosedOrphanModS ecu
                            _ -> ecuImpNmL ecu
-            else ecuImpNmL
+            else -} ecuImpNmL
            )
-           (imp (ECUS_Haskell HSOnlyImports) Nothing) (map fst topModNmL')
+           (imp (ECUS_Haskell HSOnlyImports) Nothing)
+           (map fst topModNmL')
 
        -- import orphans
+       {-
        ; when (ehcOptPriv opts)
               (do {
                   -- import orphans
@@ -82,6 +100,7 @@
                   -- import used remaining modules, but just minimally
                   ; importAlso (ECUS_Haskell HMOnlyMinimal) (Set.unions . Map.elems . ecuTransClosedUsedModMp)
                   })
+       -}
 
        -- inhibit mutual recursiveness
        ; cpEhcCheckAbsenceOfMutRecModules
@@ -95,6 +114,7 @@
         imp = import1 opts fileSuffMpHs searchPath
 
         -- import others, but then in a (slightly) different way
+        {-
         importAlso how getNms
           = do { cr <- get
                ; let allAnalysedModS = Map.keysSet $ _crCUCache cr
@@ -103,8 +123,9 @@
                    (const [])
                    (imp how Nothing) (Set.toList allNewS)
                }
+        -}
 
-{-# LINE 152 "src/ehc/EHC/Main/Compile.chs" #-}
+{-# LINE 187 "src/ehc/EHC/Main/Compile.chs" #-}
 import1
   :: EHCCompileRunner m
   => EHCOpts
@@ -119,7 +140,7 @@
   = do { let isTopModule = isJust mbFp
              fileSuffMpHs' = map tup123to12 $ (if isTopModule then fileSuffMpHsNoSuff else []) ++ fileSuffMpHs
        ; let searchPath' = prevSearchInfoAdaptedSearchPath mbPrev searchPath
-       ; fpsFound <- cpFindFilesForFPathInLocations (fileLocSearch opts) (\(x,_,_) -> x) False fileSuffMpHs' searchPath' (Just nm) mbFp
+       ; fpsFound <- cpFindFilesForFPathInLocations (fileLocSearch opts) tup1234to1 False fileSuffMpHs' searchPath' (Just nm) mbFp
        ; when (ehcOptVerbosity opts >= VerboseDebug)
               (do { liftIO $ putStrLn $ show nm ++ ": " ++ show (fmap fpathToStr mbFp) ++ ": " ++ show (map fpathToStr fpsFound)
                   ; liftIO $ putStrLn $ "searchPath: " ++ show searchPath'
@@ -132,7 +153,9 @@
              -> do { nm' <- cpEhcModuleCompile1 (Just desiredState) nm
                    ; cr <- get
                    ; let (ecu,_,_,_) = crBaseInfo nm' cr
-                   ; return (nm',Just (nm',(fp, ecuFileLocation ecu)))
+                         newPrev = Just (nm',(fp, ecuFileLocation ecu))
+                   ; cpUpdCU nm' $ ecuMbPrevSearchInfo ^= newPrev
+                   ; return (nm', newPrev)
                    }
            _ -> return (nm,Nothing)
        }
diff --git a/src/UHC/Light/Compiler/Error.hs b/src/UHC/Light/Compiler/Error.hs
--- a/src/UHC/Light/Compiler/Error.hs
+++ b/src/UHC/Light/Compiler/Error.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Error.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Error.ag)
 module UHC.Light.Compiler.Error(Err (..), ErrL
 , ThingAndRange
 , ErrSq
@@ -15,7 +15,7 @@
 import UHC.Light.Compiler.Ty
 import UHC.Util.Pretty
 import qualified UHC.Util.FastSeq as Seq
-import Control.Monad.Error.Class
+import UHC.Util.Error
 import UHC.Light.Compiler.Base.Target (FFIWay)
 import UHC.Util.FPath
 
@@ -127,6 +127,7 @@
          | Err_FusionBuildInverse {range_Err_FusionBuildInverse :: !(Range),ty1_Err_FusionBuildInverse :: !(Ty),ty2_Err_FusionBuildInverse :: !(Ty)}
          | Err_InconsistentHI {range_Err_InconsistentHI :: !(Range),modNm_Err_InconsistentHI :: !(String),file_Err_InconsistentHI :: !(String),expected_Err_InconsistentHI :: !(([String])),inHI_Err_InconsistentHI :: !(([String]))}
          | Err_WrongMagic {range_Err_WrongMagic :: !(Range),modNm_Err_WrongMagic :: !(String),file_Err_WrongMagic :: !(String)}
-         deriving ( Show)
+         | Err_CannotCreateFile {range_Err_CannotCreateFile :: !(Range),modNm_Err_CannotCreateFile :: !(String),file_Err_CannotCreateFile :: !(String)}
+         deriving ( Show,Typeable)
 -- ErrL --------------------------------------------------------
 type ErrL = [Err]
diff --git a/src/UHC/Light/Compiler/Error/Pretty.hs b/src/UHC/Light/Compiler/Error/Pretty.hs
--- a/src/UHC/Light/Compiler/Error/Pretty.hs
+++ b/src/UHC/Light/Compiler/Error/Pretty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Error/Pretty.a)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Error/Pretty.a)
 module UHC.Light.Compiler.Error.Pretty(ppErr, ppErrs, ppErrL
 , mkPPErr) where
 
@@ -317,6 +317,10 @@
          child range          : {Range}
          child modNm          : {String}
          child file           : {String}
+      alternative CannotCreateFile:
+         child range          : {Range}
+         child modNm          : {String}
+         child file           : {String}
 -}
 -- cata
 sem_Err :: Err ->
@@ -417,6 +421,8 @@
     (sem_Err_InconsistentHI _range _modNm _file _expected _inHI)
 sem_Err (Err_WrongMagic _range _modNm _file) =
     (sem_Err_WrongMagic _range _modNm _file)
+sem_Err (Err_CannotCreateFile _range _modNm _file) =
+    (sem_Err_CannotCreateFile _range _modNm _file)
 -- semantic domain
 type T_Err = Int ->
              ( Bool,PP_Doc)
@@ -701,6 +707,7 @@
           (case (ppMsgErr    "File not found"
                              (    "file name         :" >#< fileName_
                               >-< "searched locations:" >#< vlist (map (text.show) locations_)
+                              >-< "attempted suffixes:" >#< ppCommas' (map pp $ catMaybes suffixes_)
                              )
                              range_) of
            { _lhsOpp ->
@@ -1117,6 +1124,21 @@
          (case (False) of
           { _lhsOisNestPP ->
           (case (ppMsgErr    (".hi file has wrong magic number")
+                             (    "module              :" >#< modNm_
+                              >-< "file                :" >#< file_
+                             )
+                             range_) of
+           { _lhsOpp ->
+           ( _lhsOisNestPP,_lhsOpp) }) }))
+sem_Err_CannotCreateFile :: Range ->
+                            String ->
+                            String ->
+                            T_Err
+sem_Err_CannotCreateFile range_ modNm_ file_ =
+    (\ _lhsInestDepth ->
+         (case (False) of
+          { _lhsOisNestPP ->
+          (case (ppMsgErr    ("cannot create file")
                              (    "module              :" >#< modNm_
                               >-< "file                :" >#< file_
                              )
diff --git a/src/UHC/Light/Compiler/Foreign.hs b/src/UHC/Light/Compiler/Foreign.hs
--- a/src/UHC/Light/Compiler/Foreign.hs
+++ b/src/UHC/Light/Compiler/Foreign.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Foreign.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Foreign.ag)
 module UHC.Light.Compiler.Foreign(ForeignEnt (..), CCall (..), PlainCall (..), PrimCall (..), JavaScriptCall (..)
 , ForeignExpr (..), ForeignExprs
 , ForeignExprAGItf (..), ForeignAGItf (..)
diff --git a/src/UHC/Light/Compiler/Foreign/Extract.hs b/src/UHC/Light/Compiler/Foreign/Extract.hs
--- a/src/UHC/Light/Compiler/Foreign/Extract.hs
+++ b/src/UHC/Light/Compiler/Foreign/Extract.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Foreign/Extrac)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Foreign/Extrac)
 module UHC.Light.Compiler.Foreign.Extract(ForeignExtraction (..), forextractMbEnt
 , foreignEntExtract) where
 
diff --git a/src/UHC/Light/Compiler/Foreign/Pretty.hs b/src/UHC/Light/Compiler/Foreign/Pretty.hs
--- a/src/UHC/Light/Compiler/Foreign/Pretty.hs
+++ b/src/UHC/Light/Compiler/Foreign/Pretty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Foreign/Pretty)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Foreign/Pretty)
 module UHC.Light.Compiler.Foreign.Pretty(ppForeignEnt
 , ppForeignExpr) where
 
diff --git a/src/UHC/Light/Compiler/Gam.hs b/src/UHC/Light/Compiler/Gam.hs
--- a/src/UHC/Light/Compiler/Gam.hs
+++ b/src/UHC/Light/Compiler/Gam.hs
@@ -31,10 +31,8 @@
 import qualified Data.Map as Map
 import UHC.Light.Compiler.Core
 import UHC.Util.ScopeMapGam
-import UHC.Light.Compiler.Base.Debug
 import UHC.Light.Compiler.Core.Subst
 import UHC.Light.Compiler.VarLookup
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Gam/Base.hs b/src/UHC/Light/Compiler/Gam/Base.hs
--- a/src/UHC/Light/Compiler/Gam/Base.hs
+++ b/src/UHC/Light/Compiler/Gam/Base.hs
@@ -11,6 +11,7 @@
 , gamNoDups
 , Gam
 , gamLookupMetaLev
+, gamTopUpdate
 , gamMetaLevSingleton
 , gamUnionWith )
 where
@@ -89,64 +90,70 @@
 {-# INLINE gamTop #-}
 
 {-# LINE 128 "src/ehc/Gam/Base.chs" #-}
+-- | Update top entries, all duplicates
+gamTopUpdate :: Ord k => (v -> v) -> k -> Gam k v -> Gam k v
+gamTopUpdate upd = sgamAlterDupOnTop $ maybe Nothing (Just . upd)
+{-# INLINE gamTopUpdate #-}
+
+{-# LINE 135 "src/ehc/Gam/Base.chs" #-}
 gamMetaLevSingleton                        = sgamMetaLevSingleton
 {-# INLINE gamMetaLevSingleton #-}
 
-{-# LINE 138 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 145 "src/ehc/Gam/Base.chs" #-}
 assocDupLToGam :: Ord k => AssocL k [v] -> Gam k v
 assocDupLToGam = sgamFromAssocDupL
 {-# INLINE assocDupLToGam #-}
 
-{-# LINE 144 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 151 "src/ehc/Gam/Base.chs" #-}
 assocLToGamWithDups :: Ord k => AssocL k v -> Gam k v
 assocLToGamWithDups = assocDupLToGam . assocLGroupSort
 {-# INLINE assocLToGamWithDups #-}
 
-{-# LINE 156 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 163 "src/ehc/Gam/Base.chs" #-}
 gamToAssocDupL :: Ord k => Gam k v -> AssocL k [v]
 gamToAssocDupL = sgamToAssocDupL
 {-# INLINE gamToAssocDupL #-}
 
-{-# LINE 162 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 169 "src/ehc/Gam/Base.chs" #-}
 gamToOnlyDups :: Ord k => Gam k v -> AssocL k [v]
 gamToOnlyDups g = [ x | x@(n,(_:_:_)) <- gamToAssocDupL g ]
 
-{-# LINE 172 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 179 "src/ehc/Gam/Base.chs" #-}
 gamNoDups :: Ord k => Gam k v -> Gam k v
 gamNoDups = sgamNoDups
 {-# INLINE gamNoDups #-}
 
-{-# LINE 183 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 190 "src/ehc/Gam/Base.chs" #-}
 gamMap :: (Ord k,Ord k') => ((k,v) -> (k',v')) -> Gam k v -> Gam k' v'
 gamMap = sgamMap
 {-# INLINE gamMap #-}
 
-{-# LINE 189 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 196 "src/ehc/Gam/Base.chs" #-}
 gamMapElts :: Ord k => (v -> v') -> Gam k v -> Gam k v'
 gamMapElts f = gamMap (\(n,v) -> (n,f v))
 {-# INLINE gamMapElts #-}
 
-{-# LINE 203 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 210 "src/ehc/Gam/Base.chs" #-}
 gamPartition :: Ord k => (k -> v -> Bool) -> Gam k v -> (Gam k v,Gam k v)
 gamPartition = sgamPartitionWithKey
 {-# INLINE gamPartition #-}
 
-{-# LINE 224 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 231 "src/ehc/Gam/Base.chs" #-}
 gamMapThr :: (Ord k,Ord k') => ((k,v) -> t -> ((k',v'),t)) -> t -> Gam k v -> (Gam k' v',t)
 gamMapThr = sgamMapThr
 {-# INLINE gamMapThr #-}
 
-{-# LINE 230 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 237 "src/ehc/Gam/Base.chs" #-}
 gamKeys :: Ord k => Gam k v -> [k]
 gamKeys = assocLKeys . gamToAssocL
 {-# INLINE gamKeys #-}
 
-{-# LINE 236 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 243 "src/ehc/Gam/Base.chs" #-}
 gamElts :: Ord k => Gam k v -> [v]
 gamElts = assocLElts . gamToAssocL
 {-# INLINE gamElts #-}
 
-{-# LINE 247 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 254 "src/ehc/Gam/Base.chs" #-}
 gamLookupMetaLevDup :: Ord k => MetaLev -> k -> Gam k v -> Maybe [v]
 gamLookupMetaLevDup = sgamLookupMetaLevDup
 {-# INLINE gamLookupMetaLevDup #-}
@@ -155,12 +162,12 @@
 gamLookupDup = gamLookupMetaLevDup metaLevVal
 {-# INLINE gamLookupDup #-}
 
-{-# LINE 264 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 271 "src/ehc/Gam/Base.chs" #-}
 gamUnzip :: Ord k => Gam k (v1,v2) -> (Gam k v1,Gam k v2)
 gamUnzip g = sgamUnzip g
 {-# INLINE gamUnzip #-}
 
-{-# LINE 274 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 281 "src/ehc/Gam/Base.chs" #-}
 gamInsert :: Ord k => k -> v -> Gam k v -> Gam k v
 gamInsert = gamAdd
 {-# INLINE gamInsert #-}
@@ -173,12 +180,12 @@
 gamFromAssocL = assocLToGam
 {-# INLINE gamFromAssocL #-}
 
-{-# LINE 288 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 295 "src/ehc/Gam/Base.chs" #-}
 gamUnionWith :: Ord k => (v -> [v] -> [v]) -> Gam k v -> Gam k v -> Gam k v
 gamUnionWith cmb = sgamUnionWith (Just cmb)
 {-# INLINE gamUnionWith #-}
 
-{-# LINE 294 "src/ehc/Gam/Base.chs" #-}
+{-# LINE 301 "src/ehc/Gam/Base.chs" #-}
 gamUnions :: Ord k => [Gam k v] -> Gam k v
 gamUnions [] = emptyGam
 gamUnions gs = foldr1 gamUnion gs
diff --git a/src/UHC/Light/Compiler/Gam/ClGam.hs b/src/UHC/Light/Compiler/Gam/ClGam.hs
--- a/src/UHC/Light/Compiler/Gam/ClGam.hs
+++ b/src/UHC/Light/Compiler/Gam/ClGam.hs
@@ -22,8 +22,9 @@
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data ClGamInfo
   =  ClGamInfo
-       { clgiPrToEvidTy         :: !Ty                  -- mapping from predicate type -> dictionary structure record, encoded as function
-       , clgiRuleTy             :: !Ty
+       { clgiPrToEvidRecTy      :: !Ty                  -- mapping from predicate type -> dictionary structure record, encoded as function
+       , clgiPrToEvidDataTy     :: !Ty              	-- mapping from predicate type -> datatype, encoded as function
+       , clgiRuleTy             :: !Ty              	-- predicate context + class head as function type
        , clgiDfltDictNm         :: !HsName              -- dictionary name of default instance fields constructing function
        , clgiDictTag            :: !CTag                -- tag of dictionary
        , clgiGenerDerivableL    :: [(HsName,HsName)]    -- list of fields with default value which can be derived using generic deriving
@@ -34,25 +35,30 @@
 
 emptyCLGI
   = ClGamInfo
-      Ty_Any Ty_Any hsnUnknown CTagRec
+      Ty_Any Ty_Any Ty_Any hsnUnknown CTagRec
       []
 
-{-# LINE 69 "src/ehc/Gam/ClGam.chs" #-}
+{-# LINE 70 "src/ehc/Gam/ClGam.chs" #-}
 deriving instance Typeable ClGamInfo
 deriving instance Data ClGamInfo
 
-{-# LINE 74 "src/ehc/Gam/ClGam.chs" #-}
+{-# LINE 75 "src/ehc/Gam/ClGam.chs" #-}
 instance PP ClGamInfo where
-  pp clgi = pp (clgiDfltDictNm clgi) >#< "::" >#< ppTy (clgiRuleTy clgi) >#< "::" >#< ppTy (clgiPrToEvidTy clgi)
+  pp clgi = "dictnm=" >#< pp (clgiDfltDictNm clgi) >-< indent 2 (
+        "rule=" >#< ppTy (clgiRuleTy clgi)
+    >-< "eviddataty=" >#< ppTy (clgiPrToEvidDataTy clgi)
+    >-< "evidrecty=" >#< ppTy (clgiPrToEvidRecTy clgi)
+    >-< "clgiGenerDerivableL=" >#< ppAssocL (clgiGenerDerivableL clgi)
+    )
 
-{-# LINE 79 "src/ehc/Gam/ClGam.chs" #-}
+{-# LINE 87 "src/ehc/Gam/ClGam.chs" #-}
 initClGam
   = assocLToGam
       [ (hsnPrArrow,    emptyCLGI)
       ]
 
-{-# LINE 94 "src/ehc/Gam/ClGam.chs" #-}
+{-# LINE 102 "src/ehc/Gam/ClGam.chs" #-}
 instance Serialize ClGamInfo where
-  sput (ClGamInfo a b c d e) = sput a >> sput b >> sput c >> sput d >> sput e
-  sget = liftM5 ClGamInfo sget sget sget sget sget
+  sput (ClGamInfo a b c d e f) = sput a >> sput b >> sput c >> sput d >> sput e >> sput f
+  sget = liftM6 ClGamInfo sget sget sget sget sget sget
 
diff --git a/src/UHC/Light/Compiler/Gam/DataGam.hs b/src/UHC/Light/Compiler/Gam/DataGam.hs
--- a/src/UHC/Light/Compiler/Gam/DataGam.hs
+++ b/src/UHC/Light/Compiler/Gam/DataGam.hs
@@ -2,6 +2,7 @@
 ( DataFldMp, DataFldInfo (..), emptyDataFldInfo
 , DataConFldAnnInfo (..), emptyDataConFldAnnInfo
 , DataTagInfo (..), emptyDataTagInfo, DataConstrTagMp
+, fldTyLEnsureLabels, mkFldRefAndMp
 , DataGamInfo (..)
 , DataGam
 , mkDGI
@@ -32,39 +33,43 @@
 import UHC.Light.Compiler.Ty.Pretty
 import UHC.Light.Compiler.Gam
 import UHC.Light.Compiler.Error
+import Control.Applicative ((<|>))
 import qualified Data.Map as Map
 import qualified Data.Set as Set
+import Data.Maybe
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import UHC.Light.Compiler.Ty.Trf.Quantify
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
+import UHC.Light.Compiler.CodeGen.RefGenerator
 import Control.Monad
 import UHC.Util.Binary
 import UHC.Util.Serialize
-import Data.Maybe
 
 
 
 
 
-
-{-# LINE 48 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 52 "src/ehc/Gam/DataGam.chs" #-}
 -- | per named field info
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data DataFldInfo
   = DataFldInfo
       { dfiOffset 	:: !Fld
       }
-      deriving Show
 
+instance Show DataFldInfo where
+  show i = show (dfiOffset i)
+
+instance PP DataFldInfo where
+  pp = pp . show
+
 type DataFldMp = Map.Map HsName DataFldInfo
 
 emptyDataFldInfo
   = DataFldInfo
       noFld
 
-{-# LINE 68 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 81 "src/ehc/Gam/DataGam.chs" #-}
 -- | per positional constructor field annotation like info
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data DataConFldAnnInfo
@@ -78,7 +83,7 @@
   = DataConFldAnnInfo
       Strictness_NonStrict
 
-{-# LINE 87 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 100 "src/ehc/Gam/DataGam.chs" #-}
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data DataTagInfo
   = DataTagInfo
@@ -90,8 +95,19 @@
       , dtiCTag 			:: !CTag					-- tag of constructor
       , dtiFldRefL			:: ![Fld]					-- list of offset/references positionally consistent with (e.g.) dtiFldTyL
       , dtiMbFixityPrio 	:: !(Maybe (Int,Fixity))	-- if defined as infix, with priority
-      } deriving Show
+      }
 
+instance Show DataTagInfo where
+  show _ = "DataTagInfo"
+
+instance PP DataTagInfo where
+  pp i = dtiConNm i >-< indent 2 (
+  		    "flds=" >#< ppCommas [n >#< ppTy t | (n,t) <- dtiFldTyL i]
+  		>-< "fldmp=" >#< ppCommas [n >#< t | (n,t) <- Map.toList $ dtiFldMp i]
+  		>-< "fldrefs=" >#< ppCommas (dtiFldRefL i)
+  		>-< "conty=" >#< ppTy (dtiConTy i)
+  		)
+
 type DataConstrTagMp = Map.Map HsName DataTagInfo
 
 emptyDataTagInfo
@@ -100,11 +116,23 @@
       emptyCTag []
       Nothing
 
-{-# LINE 118 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 144 "src/ehc/Gam/DataGam.chs" #-}
+-- | Ensure presence of field labels
+fldTyLEnsureLabels :: FldTyL -> FldTyL
+fldTyLEnsureLabels = zipWith (\pn (ml,t) -> (ml <|> Just pn, t)) positionalFldNames
+
+-- | Construct fld info from FldTyL
+mkFldRefAndMp :: FldTyL -> (DataFldMp, FldTyL, AssocL HsName Fld)
+mkFldRefAndMp fldTyL = (fldMp, fldTyL', fldRefL)
+  where fldTyL' = fldTyLEnsureLabels fldTyL
+        fldRefL = refGen 0 1 [ n | (Just n, _) <- fldTyL' ]
+        fldMp   = Map.fromList $ catMaybes $ zipWith (\(_,r) (ml,_) -> fmap (\l -> (l,emptyDataFldInfo {dfiOffset = r})) ml) fldRefL fldTyL
+
+{-# LINE 164 "src/ehc/Gam/DataGam.chs" #-}
 dtiOffsetOfFld :: HsName -> DataTagInfo -> Fld
 dtiOffsetOfFld fldNm dti = dfiOffset $ panicJust "dtiOffsetOfFld" $ Map.lookup fldNm $ dtiFldMp dti
 
-{-# LINE 123 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 169 "src/ehc/Gam/DataGam.chs" #-}
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data DataFldInConstr
   = DataFldInConstr
@@ -113,7 +141,7 @@
 
 type DataFldInConstrMp = Map.Map HsName DataFldInConstr
 
-{-# LINE 133 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 179 "src/ehc/Gam/DataGam.chs" #-}
 -- | specific info about what a DataGamInfo encodes
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data DataGamInfoVariant
@@ -123,13 +151,13 @@
   | DataGamInfoVariant_Rec			-- tuple, record
   deriving Eq
 
-{-# LINE 146 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 192 "src/ehc/Gam/DataGam.chs" #-}
 
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data DataGamInfo
   = DataGamInfo
       { dgiTyNm      		:: !HsName				-- type name (duplicate of key of gamma leading to this info)
-      , dgiDataTy 			:: !Ty					-- the type sum of product
+      , dgiDataTy 			:: !Ty					-- the type dataty -> sum of product
       , dgiDataKi 			:: !Ty					-- the kind
       , dgiConstrNmL 		:: ![HsName]			-- all constructor names
       , dgiConstrTagMp 		:: !DataConstrTagMp		-- per constructor info
@@ -142,7 +170,15 @@
 instance Show DataGamInfo where
   show _ = "DataGamInfo"
 
-{-# LINE 176 "src/ehc/Gam/DataGam.chs" #-}
+instance PP DataGamInfo where
+  pp i@(DataGamInfo {dgiTyNm=nm, dgiDataTy=sumprod, dgiDataKi=ki}) = nm >-< indent 2 (
+		    "sumprod=" >#< ppTy sumprod
+		>-< "ki=" >#< ppTy ki
+		>-< "constrnms=" >#< ppCommas (dgiConstrNmL i)
+		>-< "constrmp=" >#< vlist (Map.toList $ dgiConstrTagMp i)
+		)
+
+{-# LINE 234 "src/ehc/Gam/DataGam.chs" #-}
 dgiMbNewtype :: DataGamInfo -> Maybe Ty
 dgiMbNewtype (DataGamInfo {dgiVariant = DataGamInfoVariant_Newtype t}) = Just t
 dgiMbNewtype _                                                         = Nothing
@@ -150,14 +186,14 @@
 dgiIsNewtype :: DataGamInfo -> Bool
 dgiIsNewtype = isJust . dgiMbNewtype
 
-{-# LINE 185 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 243 "src/ehc/Gam/DataGam.chs" #-}
 dgiIsRec :: DataGamInfo -> Bool
 dgiIsRec dgi = dgiVariant dgi == DataGamInfoVariant_Rec
 
-{-# LINE 190 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 248 "src/ehc/Gam/DataGam.chs" #-}
 type DataGam = Gam HsName DataGamInfo
 
-{-# LINE 194 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 252 "src/ehc/Gam/DataGam.chs" #-}
 mkDGI
   :: HsName
      -> Ty -> Ty -> [HsName] -> DataConstrTagMp -> DataGamInfoVariant
@@ -181,7 +217,7 @@
                )
         m' = Map.map (\dti -> dti {dtiCTag = patchTyInfoCTag tyNm mx $ dtiCTag dti}) m
 
-{-# LINE 235 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 293 "src/ehc/Gam/DataGam.chs" #-}
 mkDGIPlain :: HsName -> Ty -> Ty -> [HsName] -> DataConstrTagMp -> DataGamInfo
 mkDGIPlain tyNm dty dki cNmL m
   = mkDGI tyNm dty dki cNmL m
@@ -189,26 +225,26 @@
           Nothing
 
 
-{-# LINE 250 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 308 "src/ehc/Gam/DataGam.chs" #-}
 -- | Construct a datatype info as extracted from (e.g.) Core intended only for codegen (i.e. no type system stuff).
 mkDGIForCodegenOnly :: HsName -> DataConstrTagMp -> DataGamInfo
 mkDGIForCodegenOnly tyNm m
   = mkDGIPlain tyNm Ty_Any Ty_Any (Map.keys m) m
 
-{-# LINE 257 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 315 "src/ehc/Gam/DataGam.chs" #-}
 emptyDataGamInfo, emptyDGI :: DataGamInfo
 emptyDataGamInfo = mkDGIPlain hsnUnknown (appDbg "emptyDataGamInfo") (appDbg "mkDGIPlain")  [] Map.empty
 emptyDGI = emptyDataGamInfo
 
-{-# LINE 263 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 321 "src/ehc/Gam/DataGam.chs" #-}
 dgiConstrTagAssocL :: DataGamInfo -> AssocL HsName DataTagInfo
 dgiConstrTagAssocL dgi = [ (cn,panicJust "dgiConstrTagAssocL" $ Map.lookup cn $ dgiConstrTagMp dgi) | cn <- dgiConstrNmL dgi ]
 
-{-# LINE 268 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 326 "src/ehc/Gam/DataGam.chs" #-}
 dgiDtiOfCon :: HsName -> DataGamInfo -> DataTagInfo
 dgiDtiOfCon conNm dgi = panicJust "dgiDtiOfCon" $ Map.lookup conNm $ dgiConstrTagMp dgi
 
-{-# LINE 273 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 331 "src/ehc/Gam/DataGam.chs" #-}
 dataGamLookup :: HsName -> DataGam -> Maybe DataGamInfo
 dataGamLookup nm g
   =  case gamLookup nm g of
@@ -224,11 +260,11 @@
       Nothing  -> (emptyDGI,[rngLift emptyRange mkErr_NamesNotIntrod "data" [n]])
       Just tgi -> (tgi,[])
 
-{-# LINE 290 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 348 "src/ehc/Gam/DataGam.chs" #-}
 dataGamDgiOfTy :: Ty -> DataGam -> Maybe DataGamInfo
 dataGamDgiOfTy conTy dg = dataGamLookup (tyAppFunConNm conTy) dg
 
-{-# LINE 295 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 353 "src/ehc/Gam/DataGam.chs" #-}
 dataGamDTIsOfTyNm :: HsName -> DataGam -> Maybe [DataTagInfo]
 dataGamDTIsOfTyNm tn g
   = fmap
@@ -240,7 +276,7 @@
 dataGamDTIsOfTy = dataGamDTIsOfTyNm . tyDataTyNm
 {-# INLINE dataGamDTIsOfTy #-}
 
-{-# LINE 312 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 370 "src/ehc/Gam/DataGam.chs" #-}
 dataGamTagsOf :: (t -> DataGam -> Maybe [DataTagInfo]) -> t -> DataGam -> Maybe [CTag]
 dataGamTagsOf lkup t g = fmap (map dtiCTag) (lkup t g)
 {-# INLINE dataGamTagsOf #-}
@@ -251,14 +287,14 @@
 dataGamTagsOfTyNm :: HsName -> DataGam -> Maybe [CTag]
 dataGamTagsOfTyNm = dataGamTagsOf dataGamDTIsOfTyNm
 
-{-# LINE 324 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 382 "src/ehc/Gam/DataGam.chs" #-}
 dataGamLookupTag :: HsName -> HsName -> DataGam -> Maybe CTag
 dataGamLookupTag t c g
   = do dgi <- dataGamLookup t g
        dti <- Map.lookup c $ dgiConstrTagMp dgi
        return $ dtiCTag dti
 
-{-# LINE 332 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 390 "src/ehc/Gam/DataGam.chs" #-}
 dataGamTagLookup :: TagLike t => t -> DataGam -> Maybe (DataGamInfo,DataTagInfo)
 dataGamTagLookup tag g
   | tagIsData tag
@@ -268,11 +304,11 @@
   | otherwise
       = Nothing
 
-{-# LINE 345 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 403 "src/ehc/Gam/DataGam.chs" #-}
 dgiIsEnumable :: DataGamInfo -> Bool
 dgiIsEnumable dgi = dgiMaxConstrArity dgi == 0
 
-{-# LINE 354 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 412 "src/ehc/Gam/DataGam.chs" #-}
 deriving instance Typeable DataFldInfo
 deriving instance Data DataFldInfo
 
@@ -288,11 +324,11 @@
 deriving instance Typeable DataGamInfo
 deriving instance Data DataGamInfo
 
-{-# LINE 371 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 429 "src/ehc/Gam/DataGam.chs" #-}
 deriving instance Typeable DataGamInfoVariant
 deriving instance Data DataGamInfoVariant
 
-{-# LINE 376 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 434 "src/ehc/Gam/DataGam.chs" #-}
 instance Serialize DataGamInfoVariant where
   sput (DataGamInfoVariant_Plain    ) = sputWord8 0
   sput (DataGamInfoVariant_Newtype a) = sputWord8 1 >> sput a
@@ -304,7 +340,7 @@
       1 -> liftM  DataGamInfoVariant_Newtype sget
       2 -> return DataGamInfoVariant_Rec
 
-{-# LINE 393 "src/ehc/Gam/DataGam.chs" #-}
+{-# LINE 451 "src/ehc/Gam/DataGam.chs" #-}
 instance Serialize DataFldInfo where
   sput (DataFldInfo a) = sput a
   sget = liftM DataFldInfo sget
diff --git a/src/UHC/Light/Compiler/Gam/Quantify.hs b/src/UHC/Light/Compiler/Gam/Quantify.hs
--- a/src/UHC/Light/Compiler/Gam/Quantify.hs
+++ b/src/UHC/Light/Compiler/Gam/Quantify.hs
@@ -43,7 +43,7 @@
               , gamAdd nm (tmpo {tmpoTy = ty}) tmpoGam
             ) )
           where tmpo           = tyMergePreds prL t
-                ty | doQuant   = valTyQuantify (tvarKi tyKiGam tvKiVarMp gamVarMp) (`Set.member` globTvS) (tmpoTy tmpo)
+                ty | doQuant   = valTyQuantify (tvarKi tyKiGam emptyGam tvKiVarMp gamVarMp) (`Set.member` globTvS) (tmpoTy tmpo)
                    | otherwise = tmpoTy tmpo
 
 {-# LINE 95 "src/ehc/Gam/Quantify.chs" #-}
diff --git a/src/UHC/Light/Compiler/Gam/TyKiGam.hs b/src/UHC/Light/Compiler/Gam/TyKiGam.hs
--- a/src/UHC/Light/Compiler/Gam/TyKiGam.hs
+++ b/src/UHC/Light/Compiler/Gam/TyKiGam.hs
@@ -22,6 +22,7 @@
 import UHC.Light.Compiler.Gam
 import UHC.Light.Compiler.Error
 import qualified Data.Set as Set
+import Control.Applicative ((<|>))
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
 import Control.Monad
@@ -33,7 +34,7 @@
 
 
 
-{-# LINE 39 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 41 "src/ehc/Gam/TyKiGam.chs" #-}
 -- If this changes, also change {%{EH}ConfigInternalVersions}
 data TyKiGamInfo
   = TyKiGamInfo
@@ -47,18 +48,18 @@
 
 type TyKiGam = Gam TyKiKey TyKiGamInfo
 
-{-# LINE 58 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 60 "src/ehc/Gam/TyKiGam.chs" #-}
 deriving instance Typeable TyKiGamInfo
 deriving instance Data TyKiGamInfo
 
-{-# LINE 63 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 65 "src/ehc/Gam/TyKiGam.chs" #-}
 tkgiGetSet = (tkgiKi,(\x i -> i {tkgiKi = x}))
 
-{-# LINE 67 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 69 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamLookupByTyVar :: TyVarId -> TyKiGam -> Maybe TyKiGamInfo
 tyKiGamLookupByTyVar v g = gamLookup (TyKiKey_TyVar v) g
 
-{-# LINE 72 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 74 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamLookupByName :: HsName -> TyKiGam -> Maybe TyKiGamInfo
 tyKiGamLookupByName n g
   = case gamLookup (TyKiKey_Name n) g of
@@ -67,7 +68,7 @@
             -> Just (TyKiGamInfo (replicate (hsnProdArity n) kiStar `appArr` kiStar))
       x     -> x
 
-{-# LINE 86 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 88 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamLookup :: Ty -> TyKiGam -> Maybe TyKiGamInfo
 tyKiGamLookup t g
   = case tyMbVar t of
@@ -77,7 +78,7 @@
                    Just n -> tyKiGamLookupByName n g
                    _      -> Nothing
 
-{-# LINE 97 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 99 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamLookupErr :: Ty -> TyKiGam -> (TyKiGamInfo,ErrL)
 tyKiGamLookupErr t g
   = case tyKiGamLookup t g of
@@ -87,19 +88,19 @@
 tyKiGamLookupKi :: TyKiGam -> Ty -> Ty
 tyKiGamLookupKi g t = tkgiKi $ fst $ tyKiGamLookupErr t g
 
-{-# LINE 108 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 110 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamLookupByNameErr :: HsName -> TyKiGam -> (TyKiGamInfo,ErrL)
 tyKiGamLookupByNameErr n g = tyKiGamLookupErr (appCon n) g
 
-{-# LINE 113 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 115 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamVarSingleton :: TyVarId -> TyKiGamInfo -> TyKiGam
 tyKiGamVarSingleton v k = gamSingleton (TyKiKey_TyVar v) k
 
-{-# LINE 118 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 120 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamNameSingleton :: HsName -> TyKiGamInfo -> TyKiGam
 tyKiGamNameSingleton n k = gamSingleton (TyKiKey_Name n) k
 
-{-# LINE 123 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 125 "src/ehc/Gam/TyKiGam.chs" #-}
 tyKiGamSingleton :: Ty -> TyKiGamInfo -> TyKiGam
 tyKiGamSingleton t k
   = case tyMbVar t of
@@ -108,20 +109,20 @@
                    Just n -> tyKiGamNameSingleton n k
                    _      -> panic "Gam.tyKiGamSingleton"
 
-{-# LINE 133 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 135 "src/ehc/Gam/TyKiGam.chs" #-}
 -- Do something with each kind in a TyKiGam.
 tyKiGamDoWithVarMp :: (TyKiKey -> (Ty,VarMp) -> VarMp -> thr -> (Ty,VarMp,thr)) -> VarMp -> thr -> TyKiGam -> (TyKiGam,VarMp,thr)
 tyKiGamDoWithVarMp = gamDoTyWithVarMp tkgiGetSet
 
-{-# LINE 149 "src/ehc/Gam/TyKiGam.chs" #-}
-tvarKi :: TyKiGam -> VarMp -> VarMp -> TyVarId -> Ty
-tvarKi tyKiGam tvKiVarMp _ tv
-  = case tyKiGamLookup tv' tyKiGam of
+{-# LINE 151 "src/ehc/Gam/TyKiGam.chs" #-}
+tvarKi :: TyKiGam -> TyKiGam -> VarMp -> VarMp -> TyVarId -> Ty
+tvarKi tyKiGam1 tyKiGam2 tvKiVarMp _ tv
+  = case tyKiGamLookup tv' tyKiGam1 <|> tyKiGamLookup tv' tyKiGam2 of
       Just tkgi -> tvKiVarMp `varUpd` tkgiKi tkgi
       _         -> tvKiVarMp `varUpd` tv'
   where tv' = {- tyVarMp `varUpd` -} mkTyVar tv
 
-{-# LINE 162 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 164 "src/ehc/Gam/TyKiGam.chs" #-}
 initTyKiGam :: TyKiGam
 initTyKiGam
   = gamUnions
@@ -141,7 +142,7 @@
       ]
   where star = TyKiGamInfo kiStar
 
-{-# LINE 221 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 223 "src/ehc/Gam/TyKiGam.chs" #-}
 instance VarUpdatable TyKiGamInfo VarMp where
   s `varUpd`  tkgi         =   tkgi { tkgiKi = s `varUpd` tkgiKi tkgi }
   s `varUpdCyc` tkgi         =   substLift tkgiKi (\i x -> i {tkgiKi = x}) varUpdCyc s tkgi
@@ -149,11 +150,11 @@
 instance VarExtractable TyKiGamInfo TyVarId where
   varFreeSet tkgi         =   varFreeSet (tkgiKi tkgi)
 
-{-# LINE 230 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 232 "src/ehc/Gam/TyKiGam.chs" #-}
 instance PP TyKiGamInfo where
   pp i = ppTy (tkgiKi i)
 
-{-# LINE 243 "src/ehc/Gam/TyKiGam.chs" #-}
+{-# LINE 245 "src/ehc/Gam/TyKiGam.chs" #-}
 instance Serialize TyKiGamInfo where
   sput (TyKiGamInfo a) = sput a
   sget = liftM TyKiGamInfo sget
diff --git a/src/UHC/Light/Compiler/HI.hs b/src/UHC/Light/Compiler/HI.hs
--- a/src/UHC/Light/Compiler/HI.hs
+++ b/src/UHC/Light/Compiler/HI.hs
@@ -35,12 +35,11 @@
 import UHC.Util.Utils
 import Control.Monad
 import UHC.Util.Binary
+import UHC.Util.Pretty
 import UHC.Util.Serialize
 import qualified UHC.Light.Compiler.Config as Cfg
 import qualified UHC.Light.Compiler.ConfigInternalVersions as Cfg
 import qualified UHC.Light.Compiler.SourceCodeSig as Sig
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 
 
 
diff --git a/src/UHC/Light/Compiler/HS.hs b/src/UHC/Light/Compiler/HS.hs
--- a/src/UHC/Light/Compiler/HS.hs
+++ b/src/UHC/Light/Compiler/HS.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/HS.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/HS.ag)
 module UHC.Light.Compiler.HS(module UU.Scanner.Position
 , AGItf (..), Module (..), Body (..), Declaration (..), Declarations, MaybeDeclarations, Type (..), Types, MaybeType, Expression (..), Expressions, MaybeExpression, FunctionBinding (..), FunctionBindings, LeftHandSide (..), RightHandSide (..), Pattern (..), Patterns, Literal (..), Name, Names, MaybeName, MaybeNames, Strings, Range (..), Fixity (..)
 , TypeAnnotation (..), ExpressionAnnotation (..), PatternAnnotation (..)
@@ -174,7 +174,7 @@
                  | Declaration_ForeignExport {range_Declaration_ForeignExport :: !(Range),callconvention_Declaration_ForeignExport :: !(FFIWay),exportname_Declaration_ForeignExport :: !((Maybe String)),name_Declaration_ForeignExport :: !(Name),type_Declaration_ForeignExport :: !(Type)}
                  | Declaration_Class {range_Declaration_Class :: !(Range),context_Declaration_Class :: !(ContextItems),typelefthandside_Declaration_Class :: !(TypeLeftHandSide),dependencies_Declaration_Class :: !(FunctionalDependencies),where_Declaration_Class :: !(MaybeDeclarations)}
                  | Declaration_Instance {range_Declaration_Instance :: !(Range),instVariant_Declaration_Instance :: !(InstVariant),maybeinstancename_Declaration_Instance :: !(MaybeName),useimplicitly_Declaration_Instance :: !(Bool),context_Declaration_Instance :: !(ContextItems),type_Declaration_Instance :: !(Type),where_Declaration_Instance :: !(MaybeDeclarations)}
-                 | Declaration_InstanceUseImplicitly {range_Declaration_InstanceUseImplicitly :: !(Range),expression_Declaration_InstanceUseImplicitly :: !(Expression),name_Declaration_InstanceUseImplicitly :: !(Name),types_Declaration_InstanceUseImplicitly :: !(Types)}
+                 | Declaration_InstanceUseImplicitly {range_Declaration_InstanceUseImplicitly :: !(Range),expression_Declaration_InstanceUseImplicitly :: !(Expression),type_Declaration_InstanceUseImplicitly :: !(Type)}
                  | Declaration_Default {range_Declaration_Default :: !(Range),name_Declaration_Default :: !(MaybeName),types_Declaration_Default :: !(Types)}
                  | Declaration_Type {range_Declaration_Type :: !(Range),typelefthandside_Declaration_Type :: !(TypeLeftHandSide),type_Declaration_Type :: !(Type)}
                  | Declaration_Pragma {range_Declaration_Pragma :: !(Range),pragma_Declaration_Pragma :: !(Pragma)}
diff --git a/src/UHC/Light/Compiler/HS/MainAG.hs b/src/UHC/Light/Compiler/HS/MainAG.hs
--- a/src/UHC/Light/Compiler/HS/MainAG.hs
+++ b/src/UHC/Light/Compiler/HS/MainAG.hs
@@ -1,35671 +1,38956 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag)
-module UHC.Light.Compiler.HS.MainAG(Inh_AGItf (..), Syn_AGItf (..), sem_AGItf, wrap_AGItf
-, tyGam2IdDefOccGam, kiGam2IdDefOccGam
-, clGam2IdDefOccGam) where
-
-import Data.Char
-import Data.Maybe
-import Data.List as List
-import qualified Data.Map as Map
-import UHC.Util.Pretty
-import UHC.Light.Compiler.Base.Common
-import UHC.Light.Compiler.Base.TermLike
-import UHC.Light.Compiler.Base.HsName.Builtin
-import UHC.Light.Compiler.Opts
-import UHC.Light.Compiler.Gam.Full
-import UHC.Light.Compiler.Error
-import UHC.Light.Compiler.Error.Pretty
-import UHC.Light.Compiler.HS
-import UHC.Light.Compiler.NameAspect
-import UHC.Util.DependencyGraph
-import qualified UHC.Util.FastSeq as Seq
-import UHC.Util.Utils
-import qualified UHC.Light.Compiler.EH as EH
-import qualified Data.Set as Set
-import UHC.Light.Compiler.Ty (tyQu_Forall,tyQu_Exists)
-import UHC.Light.Compiler.Base.Target
-import UHC.Light.Compiler.Gam.ClGam
-import qualified UHC.Util.Rel as Rel
-import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Foreign
-import UHC.Light.Compiler.Foreign.Parser
-import Data.Ratio
-import UHC.Light.Compiler.Scanner.Common(floatDenot2NomDenom,intDenot2Integer)
-import UHC.Light.Compiler.Base.Debug as Debug
-import qualified UHC.Light.Compiler.Base.Pragma as Pragma
-
-
-doccForUse ::Maybe IdDefOcc -> IdIsDef
-doccForUse md
-  = case md of
-      Just d  -> IdIsDef (doccLev d)
-      Nothing -> IdIsNotDef
-
-
-
-mkBuiltinIdDefOcc :: HsName -> IdOccKind -> (IdOcc,IdDefOcc)
-mkBuiltinIdDefOcc n k
-  = (o,emptyIdDefOcc {doccOcc = o, doccLev = nmLevBuiltin, doccRange = builtinRange})
-  where o = IdOcc n k
-
-tyGam2IdDefOccGam :: TyGam -> IdDefOccGam
-tyGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Type)
-
-kiGam2IdDefOccGam :: KiGam -> IdDefOccGam
-kiGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Kind)
-
-clGam2IdDefOccGam :: ClGam -> IdDefOccGam
-clGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Class)
-
-
-
-data IdIsDef
-  = IdIsDef             { idIsDefLev :: NmLev }
-  | IdIsNotDef
-  | IdIsInWrongModule   IdOcc
-  deriving (Show)
-
-idIsDef :: IdIsDef -> Bool
-idIsDef (IdIsDef _) = True
-idIsDef _           = False
-
-instance PP IdIsDef where
-  pp (IdIsDef _)            = pp "Def'd"
-  pp IdIsNotDef             = pp "Undef'd"
-  pp (IdIsInWrongModule o)  = "Wrong" >#< o
-
-
-
-data IdUseOcc
-  = IdUseOcc
-      { uoccOcc     :: IdOcc
-      , uoccAsp     :: IdAspect
-      , uoccRange   :: Range
-      , uoccIsDef   :: IdIsDef
-      }
-  deriving (Show)
-
-instance PP IdUseOcc where
-  pp o = uoccOcc o >|< "/" >|< uoccIsDef o
-
-type IdUseOccGam = Gam    IdOcc  IdUseOcc
-type IdUseOccAsc = AssocL IdOcc [IdUseOcc]
-
-
-
-splitIdUseOccGam :: Int -> IdUseOccGam -> (IdUseOccGam, IdUseOccAsc, IdUseOccAsc, IdUseOccGam)
-splitIdUseOccGam level g
-  = (assocDupLToGam o,h,i,assocDupLToGam e)
-  where (o,h,i,e)
-          = foldr
-              (\x@(k,occs) (o,h,i,e)
-                 -> case partition (idIsDef . uoccIsDef) occs of
-                      (occ:_,[]) -> case compare (idIsDefLev $ uoccIsDef $ occ) level of
-                                      LT -> (x:o,  h,  i,  e)
-                                      EQ -> (  o,x:h,  i,  e)
-                                      GT -> (  o,  h,x:i,  e)
-                      (_,(_:_))  ->         (  o,  h,  i,x:e)
-              )
-              ([],[],[],[])
-              (gamToAssocDupL g)
-
-
-
-mkDefOccGam'' :: NmLev -> Range -> (x -> IdOcc -> IdAspect) -> AssocL x IdOcc -> IdDefOccGam
-mkDefOccGam'' l r mka os
-  = assocLToGamWithDups [ (o,mkIdDefOcc o (mka x o) l r) | (x,o) <- os ]
-
-mkDefOccGam' :: NmLev -> Range -> (IdOcc -> IdAspect) -> [IdOcc] -> IdDefOccGam
-mkDefOccGam' l r mka os
-  = mkDefOccGam'' l r (\_ -> mka) (zip (repeat undefined) os)
-{-# INLINE mkDefOccGam' #-}
-
-mkDefOccGam :: NmLev -> Range -> IdAspect -> [IdOcc] -> IdDefOccGam
-mkDefOccGam l r a os
-  = mkDefOccGam' l r (const a) os
-{-# INLINE mkDefOccGam #-}
-
-
-
-varL2IdDefOccGam :: IdOccKind -> IdAspect -> NmLev -> Range -> [HsName] -> IdDefOccGam
-varL2IdDefOccGam k a l r ns
-  = mkDefOccGam l r a [ IdOcc n k | n <- ns ]
-
-tvarL2IdDefOccGam :: NmLev -> Range -> [HsName] -> IdDefOccGam
-tvarL2IdDefOccGam
-  = varL2IdDefOccGam IdOcc_Type IdAsp_Type_Var
-
-varS2IdDefOccGam :: IdOccKind -> IdAspect -> NmLev -> Range -> HsNameS -> IdDefOccGam
-varS2IdDefOccGam k a l r ns
-  = varL2IdDefOccGam k a l r (Set.toList ns)
-
-tvarS2IdDefOccGam :: NmLev -> Range -> HsNameS -> IdDefOccGam
-tvarS2IdDefOccGam
-  = varS2IdDefOccGam IdOcc_Type IdAsp_Type_Var
-
-
-
-kvarL2IdDefOccGam :: NmLev -> Range -> [HsName] -> IdDefOccGam
-kvarL2IdDefOccGam
-  = varL2IdDefOccGam IdOcc_Kind IdAsp_Kind_Var
-
-kvarS2IdDefOccGam :: NmLev -> Range -> HsNameS -> IdDefOccGam
-kvarS2IdDefOccGam
-  = varS2IdDefOccGam IdOcc_Kind IdAsp_Kind_Var
-
-
-
--- | Get the names used by the literals
--- Note: don't change the order in returned lists, only append new values, as position is assumed to be fixed
-litNames :: EHCOpts -> Literal -> Bool -> Int -> [([HsName],IdOccKind,IdAspect)]
-litNames opts lit isPat sign
-  = case lit of
-      Literal_String r s   -> mk' (if isPat then IdAsp_Val_Con else IdAsp_Val_Var) [hsnDataListAltCons,hsnDataListAltNil]
-                              ++ (if ehcOptOverloadedStrings opts then mk [hsnDataStringFromString] else [])
-      Literal_Int    _ _ _
-        | sign < 0         -> mk [hsnFromInteger,hsnNegate]
-        | otherwise        -> mk [hsnFromInteger]
-      Literal_Float  _ _
-        | sign < 0         -> mk [hsnMkRatio,hsnFromRational,hsnNegate]
-        | otherwise        -> mk [hsnMkRatio,hsnFromRational]
-      _                    -> []
-  where mk' a ns = [(ns,IdOcc_Val,a)]
-        mk = mk' IdAsp_Val_Var
-
-
-
-mkUseOccGam :: EHCOpts -> IdDefOccGam -> [HsName] -> IdOccKind -> IdAspect -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
-mkUseOccGam opts idGam names kind asp rng = mkUseOccGam' opts idGam [(names,kind,asp)] rng
-
-
-
-mkUseOccGam' :: EHCOpts -> IdDefOccGam -> [([HsName],IdOccKind,IdAspect)] -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
-mkUseOccGam' _ _ [] _
-  = (hsnUnknown,[],emptyGam,[])
-mkUseOccGam' opts idGam names rng
-  = (if null ns then hsnUnknown else n, ns, gamUnions g, concat e)
-  where (ns@(~(n:_)),g,e) = unzip3 [ mkUse idGam n kind asp rng | (ns,kind,asp) <- names, n <- ns ]
-        mkUse idGam name kind asp rng
-          = (nmOfDef,idUseOccGam,errs)
-          where idOccUse    = IdOcc name kind
-                mbDef       = -- (\v -> tr "XX" (idOccUse >#< ">>>>>" >#< v) v) $
-                              case gamLookup idOccUse idGam of
-                                Nothing | hsnIsInPrelude name
-                                            -> if ehcOptUseAssumePrelude opts
-                                               then Just (emptyIdDefOcc {doccOcc = idOccUse})
-                                               else gamLookup (idOccUse {ioccNm = hsnQualified $ ioccNm idOccUse}) idGam
-                                md          -> md
-                nmOfDef     = case mbDef of
-                                Just d -> ioccNm $ doccOcc d
-                                _      -> name
-                occOfDef    = idOccUse {ioccNm = nmOfDef}
-                idUseOccGam = gamSingleton occOfDef (IdUseOcc occOfDef asp rng (doccForUse mbDef))
-                errs        = case mbDef of
-                                Just d | Set.size (doccNmAlts d) > 1
-                                  -> [rngLift rng Err_AmbiguousNameRef "name" k name (Set.toList $ doccNmAlts d)]
-                                  where k = (show $ ioccKind $ doccOcc d) ++ " (" ++ (showPP $ pp $ doccAsp d) ++ ")"
-                                _ -> []
-
-
-
-type IdDpdMp = Map.Map IdOcc [IdOcc]
-
-idDpdMpSingleton :: IdOcc -> IdOcc -> IdDpdMp
-idDpdMpSingleton f t = Map.singleton f [t]
-
-idDpdMpUnions :: [IdDpdMp] -> IdDpdMp
-idDpdMpUnions = Map.unionsWith (++)
-
-idDpdMpUnion :: IdDpdMp -> IdDpdMp -> IdDpdMp
-idDpdMpUnion = Map.unionWith (++)
-
-idToOccL2DpdMp :: [IdOcc] -> AssocL IdOcc x -> IdDpdMp
-idToOccL2DpdMp fs l
-  = if null ts then Map.empty else idDpdMpUnions [ Map.singleton f ts | f <- fs ]
-  where ts = assocLKeys l
-
-idToOccGam2DpdMp :: [IdOcc] -> Gam IdOcc x -> IdDpdMp
-idToOccGam2DpdMp fs l
-  = idToOccL2DpdMp fs (gamToAssocL l)
-
-idFrOccGam2DpdMp :: Gam IdOcc x -> [IdOcc] -> IdDpdMp
-idFrOccGam2DpdMp g ts
-  = if null ts then Map.empty else idDpdMpUnions [ Map.singleton f ts | (f,_) <- gamToAssocL g ]
-
-
-
-idDpdMp2SccOrder :: IdDefOccGam -> IdDpdMp -> [[IdOcc]]
-idDpdMp2SccOrder gam mp
-  = dgSCCToList gr
-  where dflt = idDpdMpUnions [ idDpdMpSingleton o o | o <- gamKeys gam ] `Map.difference` mp
-        gr = mkDpdGrFromEdgesMp (idDpdMpUnions [mp,dflt])
-
-
-
-mkIdDefEH :: IdDefOcc -> [EH.Decl]
-mkIdDefEH def
-  = case doccAsp def of
-      IdAsp_Val_Pat decl
-        -> [decl]
-      IdAsp_Val_Sig decl
-        -> [decl]
-      IdAsp_Val_Fun lhs rhs _
-        -> [decl]
-        where (h,t) = hdAndTl lhs
-              decl  = rngLift (doccRange def) EH.Decl_Val h (foldr (rngLift (doccRange def) EH.Expr_Lam) rhs t)
-      IdAsp_Type_Def decl
-        -> [decl]
-      IdAsp_Type_Sig decl
-        -> [decl]
-      IdAsp_Val_Foreign decl
-        -> [decl]
-      IdAsp_Class_Def decl declInst
-        -> [decl,declInst]
-      IdAsp_Inst_Def decl _
-        -> [decl]
-      IdAsp_Dflt_Def decl ignore | not ignore
-        -> [decl]
-      IdAsp_Val_Fusion decl
-        -> [decl]
-      IdAsp_Fusion_Conv decl
-        -> [decl]
-      _ -> []
-
-
-
-mergeFunDefL :: Range -> [IdDefOcc] -> ([IdDefOcc],[Err])
-mergeFunDefL _ ds
-  = case ds of
-      [_] -> (ds,[])
-      (od : _ : _) | iaspIsFun (doccAsp od)
-          -> ([d],e)
-          where (IdAsp_Val_Fun (patf:pats1) _ uniq) = doccAsp od
-                xSz   = length pats1
-                xNmL  = [ mkHNm ("x" ++ show i) | i <- [1..xSz] ]
-                xPatL = map (rngLift r EH.PatExpr_Var) xNmL
-                b = EH.mkCase'
-                      r (appRngProdOpt r $ map (rngLift r EH.Expr_Var) $ xNmL)
-                      (Just $ Set.fromList $ map (iaspUniq . doccAsp) ds)
-                      Set.empty
-                      (length xNmL > 1)
-                    $ zipWith (EH.mkAlt r)
-                       [ appRngProdOpt r $ tail $ iaspPatL $ doccAsp d | d <- ds ]
-                       [ iaspBody $ doccAsp $ d | d <- ds ]
-                d = mkIdDefOcc (doccOcc od) (IdAsp_Val_Fun (patf:xPatL) b uniq) 0 r
-                e | length patLens > 1 = [rngLift r Err_FunPatternLengths (ioccNm $ doccOcc od)]
-                  | otherwise          = []
-                  where patLens = Set.toList $ Set.fromList [ length $ iaspPatL $ doccAsp d | d <- ds ]
-                r = rangeUnions [ doccRange d | d <- ds ]
-      _   -> ([],[])
-
-
-
-splitOff :: [IdDefOcc] -> [[IdDefOcc]]
-splitOff
-  = foldr (\df dfs -> zipWith (++) (s df) dfs) (repeat [])
-  where s d = case doccAsp d of
-                (IdAsp_Inst_Def  _ _) -> [[],[d]]
-                _                     -> [[d],[]]
-
-
-
-idOcc2Defs :: IdDefOccGam -> IdOcc -> [IdDefOcc]
-idOcc2Defs idDefOccGam occ = maybe [] id $ gamLookupDup occ idDefOccGam
-
-mkIdOccEH :: Range -> [IdDefOcc] -> ([EH.Decl],[Err])
-mkIdOccEH r defs
-  = case defs of
-      (_:_)
-        -> (concatMap mkIdDefEH (otherDefs ++ funDef),errL)
-        where (funDefs,otherDefs) = partition (iaspIsFun . doccAsp) defs
-              (funDef,errL) = mergeFunDefL r funDefs
-      _ -> ([],[])
-
-
-
-idDefOccs2Decls :: Range -> [[IdDefOcc]] -> ([[EH.Decl]],[Err])
-idDefOccs2Decls r docss
-  = ([concat ds], concat es)
-  where (ds,es) = unzip $ map (mkIdOccEH r) $ docss
-
-
-
-mkIdOccSccEH :: Range -> Bool -> IdDefOccGam -> Maybe [[IdOcc]] -> (EH.Expr -> EH.Expr,[[EH.Decl]],[Err])
-mkIdOccSccEH r isStrict g moss
-  = (m . mkLet (concat sds), d ++ sds, e ++ ses)
-  where (m,d,e) = foldr mkl (id,[],[]) doss
-        mkl dos (mke,d,e)
-          = ((\e -> foldr mkLet e dss) . mke,dss ++ d, es ++ e)
-          where (dss,es) = idDefOccs2Decls r dos
-        mkLet ds = EH.mkLet' isStrict r (Just ds)
-        (sds,ses) = idDefOccs2Decls r $ concat $ spls
-        (doss:spls:_)
-          = collapse
-              [ collapse [ splitOff $ idOcc2Defs g $ l | l <- ll ]
-              | ll <- maybe [gamKeys g] id moss
-              ]
-        collapse :: [[a]] -> [[a]]
-        collapse = foldr (zipWith (:)) (repeat [])
-
-
-
-type PatchEhNmInInstance = HsName -> HsName
-
-
-
-idDupCheckInfo :: AssocL IdOccKind (AssocL String (IdAspect -> Bool))
-idDupCheckInfo
-  = [ ( IdOcc_Val
-      , [ ( "type signature"    , iaspIsValSig )
-        , ( "value"             , (\a -> iaspIsValVar a
-                                         || iaspIsFun a
-                                         || iaspIsValFld a
-                                         || iaspIsValForeign a
-          )                       )
-        , ( "operator fixity"   , iaspIsValFix )
-        , ( "data constructor"  , iaspIsValCon )
-        ]
-      )
-    , ( IdOcc_Type
-      , [ ( "type variable"     , iaspIsTypeVar )
-        , ( "type"              , iaspIsTypeDef )
-        , ( "kind signature"    , iaspIsTypeSig )
-        ]
-      )
-    , ( IdOcc_Class
-      , [ ( "class"             , iaspIsClassDef )
-        ]
-      )
-    ]
-
-
-
-idDefOccGamCheckDupNames :: IdDefOccGam -> [Err]
-idDefOccGamCheckDupNames g
-  = case dups of
-      [] -> []
-      es -> map mk es
-         where mk (info,ds@((_,Just ((r,_):_)):_)) = rngLift r Err_NamesDupIntrod info ds
-  where dups
-          = Map.toList
-            $  Map.unionsWith (++)
-            $  [ Map.singleton info [(n,Just [(doccRange d, Just $ pp $ doccAsp d) | d <- defs])]
-               | (IdOcc {ioccKind=k, ioccNm=n},ds) <- gamToAssocDupL g
-               , check <- maybeToList $ lookup k idDupCheckInfo
-               , (info,defs) <- filter (\(_,x) -> length x > 1)
-                                $ assocLMapElt (\c -> filter (\d -> c (doccAsp d)) $ collapse ds) check
-               ]
-        -- Functions and data fields are allowed to have duplicate entries, so they are collapsed into 1.
-        -- For data fields under the provision that the type to which they belong is the same, but the constructor not (another weird language complexity check)
-        collapse ds
-          =    take 1 funs
-            ++ (map head $ filter (\l -> length l > 0) $ map concat flds1PerCon)
-            ++ (concat $ concat fldsManyPerCon)
-            ++ others2
-          where (funs,others1) = partition (iaspIsFun . doccAsp) ds
-                (flds,others2) = partition (iaspIsValFld . doccAsp) others1
-                fldsGrouped = map (groupOn (iaspConNm . doccAsp)) $ groupOn (iaspDataNm . doccAsp) flds
-                (flds1PerCon,fldsManyPerCon) = unzip $ map (partition (\l -> length l == 1)) $ fldsGrouped
-
-
-
-ppInstNm :: Bool -> Maybe HsName -> PP_Doc
-ppInstNm useimplicitly maybeinstancename
-  = maybe empty (\n -> " " >|< n >#< (if useimplicitly then "<:" else "::")) maybeinstancename
-
-
-
-data OpChain leaf
-  = OpChain_Op   leaf PP_Doc Fixity Int Range (OpChain leaf) (OpChain leaf)
-  | OpChain_Leaf leaf
-
-opChainReArrange :: OpChain e -> (OpChain e,[Err])
-opChainReArrange opChain
-  = case opChain of
-      OpChain_Op op1 pp1 f1 p1 pos1 l1 r1
-        -> case opChainReArrange r1 of
-             (OpChain_Op op2 pp2 f2 p2 pos2 l2 r2,rerr)
-               | p1  > p2 -> (lvariant,lerr)
-               | p1  < p2 -> (rvariant,rerr)
-               | p1 == p2 -> case (f1,f2,lvariant,rvariant) of
-                               (Fixity_Infixr,Fixity_Infixr,_,r) -> (r,rerr)
-                               (Fixity_Infixl,Fixity_Infixl,l,_) -> (l,lerr)
-                               (Fixity_Infix ,_            ,l,_) -> (l,[rngLift pos2 Err_Fixity pp1 pp2] ++ lerr)
-               where (lrearr,lerr) = opChainReArrange (OpChain_Op op1 pp1 f1 p1 pos1 l1 l2)
-                     lvariant = OpChain_Op op2 pp2 f2 p2 pos2 lrearr r2
-                     rvariant = OpChain_Op op1 pp1 f1 p1 pos1 l1 (OpChain_Op op2 pp2 f2 p2 pos2 l2 r2)
-             (r1l@(OpChain_Leaf _),rerr) -> (OpChain_Op op1 pp1 f1 p1 pos1 l1 r1l,rerr)
-      _ -> (opChain,[])
-
-unOpChain :: AppLike a boundmeta => OpChain a -> a
-unOpChain opChain
-  = un opChain
-  where un ch
-          = case ch of
-              OpChain_Op op _ _ _ rng l r
-                -> appRngParApp rng [op,un l,un r]
-              OpChain_Leaf leaf
-                -> leaf
-
-
-
-ehSection :: AppLike eh bound
-  => UID -> Range
-  -> RngLiftArg (HsName -> eh)
-  -> RngLiftArg (HsName -> ehp)
-  -> RngLiftArg (ehp -> eh -> eh)
-  -> Maybe eh -> eh -> Maybe eh
-  -> eh
-ehSection uniq range semvar sempatvar semlam left op right
-  = case (left,right) of
-      -- (Just l ,Just r ) -> appRngParApp range [op,l,r]
-      (Nothing,Just r ) -> rngLift range semlam np (appRngParApp range [op,ne,r])
-      (Just l ,Nothing) -> appRngParApp range [op,l]
-      (Nothing,Nothing) -> op
-  where n  = mkHNmHidden $ mkHNm ("x_" ++ show uniq)
-        ne = rngLift range semvar n
-        np = rngLift range sempatvar n
-
-
-
-ehTupleConstructor
-  :: AppLike eh bound
-     => Range -> Int -> RngLiftArg (HsName -> eh) -> RngLiftArg (HsName -> ehp) -> RngLiftArg (ehp -> eh -> eh)
-     -> ([ehp] -> eh -> eh) -> RngLiftArg (r -> eh) -> RngLiftArg (r -> Maybe HsName -> eh -> r) -> RngLiftArg r
-     -> eh
-ehTupleConstructor range arity semvar sempatvar semlam
-        semtop semrecd semrecdext semrecdempty
-  = foldr (rngLift range semlam) recd ps
-  where ns     = take arity hsnLclSupply
-        ps     = map (rngLift range sempatvar) ns
-        recd   = mkt (map (rngLift range semvar) ns)
-        mkt ns = semtop ps
-                 $ rngLift range semrecd
-                 $ foldl (\r e -> rngLift range semrecdext r Nothing e)
-                         (rngLift range semrecdempty)
-                         ns
-
-
-
-ehTyExprArg :: EH.TyExpr -> EH.TyExpr
-ehTyExprArg = snd . panicJust "HS.ToEH.ehTyExprArg" . appMbApp1 . fst . appUnTop
-
-
-
-
-
-ehPlainDataField :: Range -> EH.TyExpr -> EH.DataField
-ehPlainDataField r
-  = rngLift r EH.DataField_Field Nothing
-
-
-
-ehExpLitInt :: Range -> Int -> String -> Int -> [HsName] -> (EH.Expr,Maybe SrcConst)
-ehExpLitInt r b s sign litrefnames
-  | sign < 0  = mk (\e -> ehExpVarApp r (litrefnames !! 1) [e], negate)
-  | otherwise = mk (id                                        , id    )
-  where i = intDenot2Integer b s
-        mk (neg,negconst)
-          = (neg $ ehExpVarApp r (litrefnames !! 0) [rngLift r EH.Expr_IIConst i], Just $ SrcConst_Int $ negconst i)
-
-ehExpLitFloat :: Range -> String -> Int -> [HsName] -> (EH.Expr,Maybe SrcConst)
-ehExpLitFloat r s sign litrefnames
-  | sign < 0  = mk (\e -> ehExpVarApp r (litrefnames !! 2) [e], \(n,d) -> (negate n, d))
-  | otherwise = mk (id                                        , id                     )
-  where nd@(n,d) = floatDenot2NomDenom s
-        mk (neg,negconst)
-          = ( neg $ ehExpVarApp r (litrefnames !! 1)
-                  $ [rngLift r EH.Expr_Parens $ ehExpVarApp r (litrefnames !! 0) [rngLift r EH.Expr_IIConst n,rngLift r EH.Expr_IIConst d]]
-            , Just $ uncurry SrcConst_Ratio $ negconst nd
-            )
-
-
-
-ehExpLitString :: EHCOpts -> Range -> String -> [HsName] -> (EH.Expr,Maybe SrcConst)
-ehExpLitString opts r str litrefnames
-  | ehcOptOverloadedStrings opts = (ehExpVarApp r (litrefnames !! 2) [s], Nothing)
-  | otherwise                    = (s                                   , Nothing)
-  where s = rngLift r EH.Expr_SConst str
-
-
-
-ehExpApp' :: (EH.Expr -> a -> EH.Expr) -> Range -> EH.Expr -> [a] -> EH.Expr
-ehExpApp' app r f as
-  = rngLift r EH.Expr_AppTop
-    $ foldl app (ehExpUnTop f) as
-
-ehExpConApp :: Range -> HsName -> [EH.Expr] -> EH.Expr
-ehExpConApp r n as
-  = appRngParApp r (rngLift r EH.Expr_Con n : as)
-
-ehExpVarApp :: Range -> HsName -> [EH.Expr] -> EH.Expr
-ehExpVarApp r n as
-  = appRngParApp r (rngLift r EH.Expr_Var n : as)
-
-ehExpUnTop :: EH.Expr -> EH.Expr
-ehExpUnTop (EH.Expr_AppTop _ e) = e
-ehExpUnTop e                    = e
-
-
-
-ehExpProd :: Range -> [EH.Expr] -> EH.Expr
-ehExpProd r as
-  = ehExpConApp r (hsnProd a) as
-  where a = length as
-
-
-
--- original with mono restriction
-ehGenerator :: Range -> EH.PatExpr -> (EH.Expr -> EH.Expr) -> EH.Expr -> EH.Expr -> EH.Expr
-ehGenerator r p mkRes fail e
-  = EH.mkLet r
-      (Just
-         [ {- -} rngLift r EH.Decl_TySig ok ([mono] `appArr` appTopApp1 mono mono)
-         ,
-           rngLift r EH.Decl_Val
-             (rngLift r EH.PatExpr_Var ok)
-             (rngLift r EH.Expr_Lam
-               (rngLift r EH.PatExpr_Var x)
-               (EH.mkCase r
-                 (rngLift r EH.Expr_Var x)
-                 [(p,e),(rngLift r EH.PatExpr_Var hsnWild,fail)]
-             ) )
-{-
-         , rngLift r EH.Decl_TySig res mono
-         , rngLift r EH.Decl_Val
-             (rngLift r EH.PatExpr_Var res)
-             (mkRes (rngLift r EH.Expr_Var ok))
--}
-         ])
-      (mkRes (rngLift r EH.Expr_Var ok))
-      -- (rngLift r EH.Expr_Var res)
-  where ok   = mkHNmHidden "ok"
-        res  = mkHNmHidden "ok_app"
-        x    = mkHNmHidden "x"
-        mono = rngLift r EH.TyExpr_Mono
-
-
-
-ehRowRecExprUpd :: Range -> nm -> (EH.RecExpr -> nm -> EH.Expr -> EH.RecExpr) -> EH.Expr -> EH.Expr -> EH.Expr
-ehRowRecExprUpd rng nm mk updE recE
-  = case recE of
-      EH.Expr_Rec _ r
-        -> mkUpd  r
-      _ -> mkUpd (r2e recE)
-  where r2e     = rngLift rng EH.RecExpr_Expr
-        mkUpd r = rngLift rng EH.Expr_Rec (mk r nm updE)
-
-ehRowRecPatExprUpd :: Range -> nm -> (EH.RecPatExpr -> nm -> EH.PatExpr -> EH.RecPatExpr) -> EH.PatExpr -> EH.PatExpr -> EH.PatExpr
-ehRowRecPatExprUpd rng nm mk updE recE
-  = case recE of
-      EH.PatExpr_Rec _ r
-        -> mkUpd  r
-      _ -> mkUpd (r2e recE)
-  where r2e     = rngLift rng EH.RecPatExpr_Expr
-        mkUpd r = rngLift rng EH.PatExpr_Rec (mk r nm updE)
-
-
-
-ehRowRowTyExprUpd :: Range -> nm -> (EH.RowTyExpr -> nm -> EH.TyExpr -> EH.RowTyExpr) -> EH.TyExpr -> EH.TyExpr -> EH.TyExpr
-ehRowRowTyExprUpd rng nm mk updE recE
-  = case recE of
-      EH.TyExpr_Row _ r
-        -> mkUpd  r
-      EH.TyExpr_Var _ v
-        -> mkUpd (rngLift rng EH.RowTyExpr_Var v)
-      _ -> mkUpd (rngLift rng EH.RowTyExpr_Empty)
-  where mkUpd r = rngLift rng EH.TyExpr_Row (mk r nm updE)
-
-
-
--- | enforce monomorphism
-ehMkEnforceMono :: Range -> Bool -> EH.Expr -> EH.Expr
-ehMkEnforceMono r True e = rngLift r EH.Expr_TypeAs False (rngLift r EH.TyExpr_Mono) e
-ehMkEnforceMono _ _    e =                                                     e
-
-
-
-ehPatConApp r n as
-  = rngLift r EH.PatExpr_AppTop
-    $ foldl (rngLift r EH.PatExpr_App) (rngLift r EH.PatExpr_Con n) as
-
-
-
-ehPatProd :: Range -> [EH.PatExpr] -> EH.PatExpr
-ehPatProd r as
-  = ehPatConApp r (hsnProd a) as
-  where a = length as
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-data TypeConFixedMeaning
-  = TyConIsOther
-  | TyConIsPrArrow
-  | TyConIsEqTilde
-  deriving Eq
-
-
-
-extrTopInstanceNm :: [HsName] -> (Maybe HsName,[HsName])
-extrTopInstanceNm nms
-  = case nms of
-      (n:t) -> (Just n,t)
-      _     -> (Nothing,[])
-
--- AGItf -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         gUniq                : UID
-         idGam                : IdDefOccGam
-         isTopMod             : Bool
-         modEntToOrig         : ModEntRngMp
-         modInScope           : ModEntDomMp
-         moduleNm             : HsName
-         opts                 : EHCOpts
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.AGItf
-         errSq                : ErrSq
-         fileHeaderPragmas    : Set.Set Pragma.Pragma
-         gathFixityGam        : FixityGam
-         gathIdGam            : IdDefOccGam
-         mainValExists        : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-   alternatives:
-      alternative AGItf:
-         child module         : Module 
-         visit 0:
-            local patchEhNmInInstance : _
-            local nmLev       : _
-            local ppExtra     : _
-            local isMainMod   : _
--}
--- cata
-sem_AGItf :: AGItf ->
-             T_AGItf
-sem_AGItf (AGItf_AGItf _module) =
-    (sem_AGItf_AGItf (sem_Module _module))
--- semantic domain
-type T_AGItf = FixityGam ->
-               UID ->
-               IdDefOccGam ->
-               Bool ->
-               ModEntRngMp ->
-               ModEntDomMp ->
-               HsName ->
-               EHCOpts ->
-               ([HsName]) ->
-               ( (EH.AGItf),ErrSq,(Set.Set Pragma.Pragma),FixityGam,IdDefOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc))
-data Inh_AGItf = Inh_AGItf {fixityGam_Inh_AGItf :: !(FixityGam),gUniq_Inh_AGItf :: !(UID),idGam_Inh_AGItf :: !(IdDefOccGam),isTopMod_Inh_AGItf :: !(Bool),modEntToOrig_Inh_AGItf :: !(ModEntRngMp),modInScope_Inh_AGItf :: !(ModEntDomMp),moduleNm_Inh_AGItf :: !(HsName),opts_Inh_AGItf :: !(EHCOpts),topInstanceNmL_Inh_AGItf :: !(([HsName]))}
-data Syn_AGItf = Syn_AGItf {eh_Syn_AGItf :: !((EH.AGItf)),errSq_Syn_AGItf :: !(ErrSq),fileHeaderPragmas_Syn_AGItf :: !((Set.Set Pragma.Pragma)),gathFixityGam_Syn_AGItf :: !(FixityGam),gathIdGam_Syn_AGItf :: !(IdDefOccGam),mainValExists_Syn_AGItf :: !(Bool),pp_Syn_AGItf :: !(PP_Doc),ppWrap_Syn_AGItf :: !((PP_Doc -> PP_Doc))}
-wrap_AGItf :: T_AGItf ->
-              Inh_AGItf ->
-              Syn_AGItf
-wrap_AGItf sem (Inh_AGItf _lhsIfixityGam _lhsIgUniq _lhsIidGam _lhsIisTopMod _lhsImodEntToOrig _lhsImodInScope _lhsImoduleNm _lhsIopts _lhsItopInstanceNmL) =
-    (let ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap) = sem _lhsIfixityGam _lhsIgUniq _lhsIidGam _lhsIisTopMod _lhsImodEntToOrig _lhsImodInScope _lhsImoduleNm _lhsIopts _lhsItopInstanceNmL
-     in  (Syn_AGItf _lhsOeh _lhsOerrSq _lhsOfileHeaderPragmas _lhsOgathFixityGam _lhsOgathIdGam _lhsOmainValExists _lhsOpp _lhsOppWrap))
-sem_AGItf_AGItf :: T_Module ->
-                   T_AGItf
-sem_AGItf_AGItf module_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisTopMod
-       _lhsImodEntToOrig
-       _lhsImodInScope
-       _lhsImoduleNm
-       _lhsIopts
-       _lhsItopInstanceNmL ->
-         (let _lhsOpp :: PP_Doc
-              _lhsOeh :: (EH.AGItf)
-              _lhsOerrSq :: ErrSq
-              _lhsOfileHeaderPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgathIdGam :: IdDefOccGam
-              _lhsOmainValExists :: Bool
-              _moduleOfixityGam :: FixityGam
-              _moduleOgUniq :: UID
-              _moduleOidGam :: IdDefOccGam
-              _moduleOisMainMod :: Bool
-              _moduleOisTopMod :: Bool
-              _moduleOmodEntToOrig :: ModEntRngMp
-              _moduleOmodInScope :: ModEntDomMp
-              _moduleOmoduleNm :: HsName
-              _moduleOnmLev :: NmLev
-              _moduleOopts :: EHCOpts
-              _moduleOpatchEhNmInInstance :: PatchEhNmInInstance
-              _moduleOtopInstanceNmL :: ([HsName])
-              _moduleIeh :: (EH.Expr)
-              _moduleIerrSq :: ErrSq
-              _moduleIfileHeaderPragmas :: (Set.Set Pragma.Pragma)
-              _moduleIgUniq :: UID
-              _moduleIgathFixityGam :: FixityGam
-              _moduleIgathIdGam :: IdDefOccGam
-              _moduleIidUseOccGam :: IdUseOccGam
-              _moduleImainValExists :: Bool
-              _moduleIpp :: PP_Doc
-              _moduleIppWrap :: (PP_Doc -> PP_Doc)
-              _moduleItopInstanceNmL :: ([HsName])
-              _moduleIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1066, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 13, column 9)
-              _nmLev =
-                  nmLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 14, column 17)
-              _lhsOpp =
-                  _ppExtra >-< _moduleIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 15, column 17)
-              _ppExtra =
-                  empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 5, column 9)
-              _lhsOeh =
-                  EH.AGItf_AGItf _moduleIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 9)
-              _isMainMod =
-                  _moduleImainValExists
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _moduleIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
-              _lhsOfileHeaderPragmas =
-                  _moduleIfileHeaderPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _moduleIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _moduleIppWrap
-              -- copy rule (up)
-              _lhsOgathIdGam =
-                  _moduleIgathIdGam
-              -- copy rule (up)
-              _lhsOmainValExists =
-                  _moduleImainValExists
-              -- copy rule (down)
-              _moduleOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _moduleOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _moduleOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _moduleOisMainMod =
-                  _isMainMod
-              -- copy rule (down)
-              _moduleOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _moduleOmodEntToOrig =
-                  _lhsImodEntToOrig
-              -- copy rule (down)
-              _moduleOmodInScope =
-                  _lhsImodInScope
-              -- copy rule (down)
-              _moduleOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _moduleOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _moduleOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _moduleOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _moduleOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _moduleIeh,_moduleIerrSq,_moduleIfileHeaderPragmas,_moduleIgUniq,_moduleIgathFixityGam,_moduleIgathIdGam,_moduleIidUseOccGam,_moduleImainValExists,_moduleIpp,_moduleIppWrap,_moduleItopInstanceNmL,_moduleIundefOccGam) =
-                  module_ _moduleOfixityGam _moduleOgUniq _moduleOidGam _moduleOisMainMod _moduleOisTopMod _moduleOmodEntToOrig _moduleOmodInScope _moduleOmoduleNm _moduleOnmLev _moduleOopts _moduleOpatchEhNmInInstance _moduleOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap)))
--- Alternative -------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.CaseAlt]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Alternative:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child righthandside  : RightHandSide 
-         visit 0:
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-      alternative Empty:
-         child range          : {Range}
--}
--- cata
-sem_Alternative :: Alternative ->
-                   T_Alternative
-sem_Alternative (Alternative_Alternative _range _pattern _righthandside) =
-    (sem_Alternative_Alternative _range (sem_Pattern _pattern) (sem_RightHandSide _righthandside))
-sem_Alternative (Alternative_Empty _range) =
-    (sem_Alternative_Empty _range)
--- semantic domain
-type T_Alternative = UID ->
-                     FixityGam ->
-                     UID ->
-                     (Map.Map HsName [(HsName,HsName)]) ->
-                     IdDefOccGam ->
-                     HsName ->
-                     NmLev ->
-                     EHCOpts ->
-                     PatchEhNmInInstance ->
-                     (Set.Set Pragma.Pragma) ->
-                     ([HsName]) ->
-                     ( ([EH.CaseAlt]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Alternative_Alternative :: Range ->
-                               T_Pattern ->
-                               T_RightHandSide ->
-                               T_Alternative
-sem_Alternative_Alternative range_ pattern_ righthandside_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _righthandsideOidGam :: IdDefOccGam
-              _righthandsideOsepPP :: PP_Doc
-              _lhsOeh :: ([EH.CaseAlt])
-              _righthandsideOmustBeMono :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _righthandsideOcaseId :: UID
-              _righthandsideOfixityGam :: FixityGam
-              _righthandsideOgUniq :: UID
-              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _righthandsideOmoduleNm :: HsName
-              _righthandsideOnmLev :: NmLev
-              _righthandsideOopts :: EHCOpts
-              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
-              _righthandsideOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _righthandsideIeh :: (EH.Expr)
-              _righthandsideIerrSq :: ErrSq
-              _righthandsideIgUniq :: UID
-              _righthandsideIidUseOccGam :: IdUseOccGam
-              _righthandsideIpp :: PP_Doc
-              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _righthandsideItopInstanceNmL :: ([HsName])
-              _righthandsideIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 392, column 9)
-              _righthandsideOidGam =
-                  gamUnion _patternIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 73, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 121, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _patternIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 93, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, _patternIerrSq, _righthandsideIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 275, column 9)
-              _pp =
-                  _patternIpp >#< _righthandsideIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 276, column 9)
-              _righthandsideOsepPP =
-                  pp "->"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 625, column 9)
-              _lhsOeh =
-                  [EH.mkAlt range_ _patternIeh _righthandsideIeh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 278, column 9)
-              _righthandsideOmustBeMono =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam `gamAddGam` _righthandsideIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _righthandsideIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam `gamUnion` _righthandsideIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _righthandsideIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _righthandsideItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _patternOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _righthandsideOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _righthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _righthandsideOgUniq =
-                  _patternIgUniq
-              -- copy rule (down)
-              _righthandsideOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _righthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _righthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _righthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _righthandsideOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _righthandsideOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _righthandsideOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideIundefOccGam) =
-                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Alternative_Empty :: Range ->
-                         T_Alternative
-sem_Alternative_Empty range_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.CaseAlt])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 627, column 9)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Alternatives ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.CaseAlt]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Alternative 
-         child tl             : Alternatives 
-      alternative Nil:
--}
--- cata
-sem_Alternatives :: Alternatives ->
-                    T_Alternatives
-sem_Alternatives list =
-    (Prelude.foldr sem_Alternatives_Cons sem_Alternatives_Nil (Prelude.map sem_Alternative list))
--- semantic domain
-type T_Alternatives = UID ->
-                      FixityGam ->
-                      UID ->
-                      (Map.Map HsName [(HsName,HsName)]) ->
-                      IdDefOccGam ->
-                      HsName ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      (Set.Set Pragma.Pragma) ->
-                      ([HsName]) ->
-                      ( ([EH.CaseAlt]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Alternatives_Cons :: T_Alternative ->
-                         T_Alternatives ->
-                         T_Alternatives
-sem_Alternatives_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.CaseAlt])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: ([EH.CaseAlt])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.CaseAlt])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 619, column 28)
-              _lhsOeh =
-                  _hdIeh ++ _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Alternatives_Nil :: T_Alternatives
-sem_Alternatives_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.CaseAlt])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 619, column 28)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Body --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         modEntToOrig         : ModEntRngMp
-         modInScope           : ModEntDomMp
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.Expr
-         errSq                : ErrSq
-         extraModImpL         : [ModImp]
-         gathFixityGam        : FixityGam
-         gathIdGam            : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         mainValExists        : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Body:
-         child range          : {Range}
-         child importdeclarations : ImportDeclarations 
-         child declarations   : Declarations 
-         visit 0:
-            local idDefOccGamMain : _
-            local idGam       : _
-            local mainrefname : _
-            local mainrefnames : _
-            local idUseOccGamMain : _
-            local errIdUse    : _
-            local idUseHereOccL : _
-            local undefOccGamMain : _
-            local idDpdMp     : _
-            local mainValExists : _
-            local sccOrder    : _
-            local mkSccLet    : _
-            local errReorder  : _
-            local modAsMp     : _
-            local refmainname : _
-            local idOccDefMain : _
-            local extraModImpL : _
-            local errDupIntro : _
-            local ppExtra     : _
-            local ehMainDecl  : _
-            local ehMainSig   : _
-            local caseId      : _
-            local pragmas     : _
--}
--- cata
-sem_Body :: Body ->
-            T_Body
-sem_Body (Body_Body _range _importdeclarations _declarations) =
-    (sem_Body_Body _range (sem_ImportDeclarations _importdeclarations) (sem_Declarations _declarations))
--- semantic domain
-type T_Body = FixityGam ->
-              UID ->
-              IdDefOccGam ->
-              Bool ->
-              Bool ->
-              ModEntRngMp ->
-              ModEntDomMp ->
-              HsName ->
-              NmLev ->
-              EHCOpts ->
-              PatchEhNmInInstance ->
-              (Set.Set Pragma.Pragma) ->
-              ([HsName]) ->
-              ( (EH.Expr),ErrSq,([ModImp]),UID,FixityGam,IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Body_Body :: Range ->
-                 T_ImportDeclarations ->
-                 T_Declarations ->
-                 T_Body
-sem_Body_Body range_ importdeclarations_ declarations_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImodEntToOrig
-       _lhsImodInScope
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _declarationsOfixityGam :: FixityGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgathIdGam :: IdDefOccGam
-              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOextraModImpL :: ([ModImp])
-              _lhsOgUniq :: UID
-              _lhsOmainValExists :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _importdeclarationsOfixityGam :: FixityGam
-              _importdeclarationsOgUniq :: UID
-              _importdeclarationsOidGam :: IdDefOccGam
-              _importdeclarationsOisMainMod :: Bool
-              _importdeclarationsOisTopMod :: Bool
-              _importdeclarationsOmoduleNm :: HsName
-              _importdeclarationsOnmLev :: NmLev
-              _importdeclarationsOopts :: EHCOpts
-              _importdeclarationsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _importdeclarationsOtopInstanceNmL :: ([HsName])
-              _declarationsOcaseId :: UID
-              _declarationsOgUniq :: UID
-              _declarationsOidGam :: IdDefOccGam
-              _declarationsOmoduleNm :: HsName
-              _declarationsOnmLev :: NmLev
-              _declarationsOopts :: EHCOpts
-              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
-              _declarationsOtopInstanceNmL :: ([HsName])
-              _importdeclarationsIerrSq :: ErrSq
-              _importdeclarationsIgUniq :: UID
-              _importdeclarationsIgathFixityGam :: FixityGam
-              _importdeclarationsIidUseOccGam :: IdUseOccGam
-              _importdeclarationsImodAsMp :: (Map.Map HsName HsName)
-              _importdeclarationsIpp :: PP_Doc
-              _importdeclarationsIppWrap :: (PP_Doc -> PP_Doc)
-              _importdeclarationsItopInstanceNmL :: ([HsName])
-              _importdeclarationsIundefOccGam :: IdUseOccGam
-              _declarationsIeh :: ([EH.Decl])
-              _declarationsIerrSq :: ErrSq
-              _declarationsIgUniq :: UID
-              _declarationsIgathFixityGam :: FixityGam
-              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _declarationsIidDefOccGam :: IdDefOccGam
-              _declarationsIidDpdMp :: IdDpdMp
-              _declarationsIidOccDefs :: ([IdOcc])
-              _declarationsIidTySigDefOccGam :: IdDefOccGam
-              _declarationsIidUseOccGam :: IdUseOccGam
-              _declarationsIneedsError :: Bool
-              _declarationsIpp :: PP_Doc
-              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
-              _declarationsItopInstanceNmL :: ([HsName])
-              _declarationsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 252, column 9)
-              _idDefOccGamMain =
-                  gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain (IdAsp_Val_Pat _ehMainDecl) _lhsInmLev range_)
-                  `gamUnion` gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain IdAsp_Val_Var _lhsInmLev range_)
-                  `gamUnion` gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain (IdAsp_Val_Sig _ehMainSig) _lhsInmLev range_)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 293, column 9)
-              _idGam =
-                  let
-                      lkn :: (IdOcc -> Bool) -> HsName -> Maybe (HsName,[ModEnt])
-                      lkn isq n = case Map.lookup n
-                                       _lhsImodInScope of
-                                    Just es | not (null es')
-                                      -> Just (n,es')
-                                      where es' = [ e | e <- es, isq (mentIdOcc e) ]
-                                    _ -> Nothing
-                      lks :: Bool -> IdOcc -> [(HsName,[ModEnt])]
-                      lks allowRename o
-                                = ns1 ++ catMaybes ns2
-                                where (mq,n)    = hsnSplitQualify (ioccNm o)
-                                      (ns1,isq) = case mq of
-                                                    Just q  -> ( qres
-                                                               , (\o' -> maybe False (           `elem` qquals      ) (hsnQualifier (ioccNm o'))
-                                                                 )
-                                                               )
-                                                            where (qres,qquals)
-                                                                     = maybe ([],[q])
-                                                                             (\x@(_,es) -> ( [x]
-                                                                                           , q : extra es
-                                                                             )             )
-                                                                             (lkn (const True) (hsnPrefixQual (as q) n))
-                                                    Nothing -> ( [], const True )
-                                      ns2       = [lkn isq n]
-                                      extra | allowRename = \es -> catMaybes $ map (hsnQualifier . ioccNm . mentIdOcc) es
-                                            | otherwise   = const []
-                      as :: HsName -> HsName
-                      as n = Map.findWithDefault n n _modAsMp
-                      mkg sel g
-                         = foldr idDefOccGamUnion emptyGam
-                             [
-                                    gamSingleton (o {ioccNm = n}) (d {doccNmAlts = Set.fromList ns})
-                             | (o,d) <- gamToAssocL g
-                             , (n,es) <- sel o
-                             , let ns = [ ioccNm eo | e <- es, let eo = mentIdOcc e, ioccKind eo == ioccKind o ]
-                             ]
-                      gnew = mkg (lks False)
-                             _lhsIidGam
-                  in
-                      mkg (lks False) _declarationsIidDefOccGam `idDefOccGamUnion` gnew
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 650, column 29)
-              (_mainrefname,_mainrefnames,_idUseOccGamMain,_errIdUse) =
-                  mkUseOccGam _lhsIopts _idGam
-                    (  [hsnMain]
-                    ++ [hsnIO]
-                    ++ [hsnEhcRunMain]
-                    ++ (if _declarationsIneedsError then [hsnError] else [])
-                    )
-                    IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 839, column 29)
-              (_,_idUseHereOccL,_,_undefOccGamMain) =
-                  splitIdUseOccGam _lhsInmLev _idUseOccGamMain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 844, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDefMain] ((IdOcc _mainrefname IdOcc_Val,undefined) : _idUseHereOccL)
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamMain [_idOccDefMain]
-                  `idDpdMpUnion`
-                  _declarationsIidDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 849, column 9)
-              _lhsOundefOccGam =
-                  let g = if _lhsIisMainMod then _undefOccGamMain else emptyGam
-                  in  gamUnions [g,_declarationsIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 863, column 9)
-              _mainValExists =
-                  case gamLookupDup (IdOcc _refmainname IdOcc_Val) _declarationsIidDefOccGam of
-                    Nothing   -> False
-                    Just occs -> chk iaspIsValVar
-                                  where chk f = not $ null $ filter (f . doccAsp) occs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 886, column 9)
-              _sccOrder =
-                  idDpdMp2SccOrder (_idDefOccGamMain `gamUnion` _declarationsIidDefOccGam) _idDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1014, column 29)
-              (_mkSccLet,_,_errReorder) =
-                  let g = if _lhsIisMainMod then _idDefOccGamMain else emptyGam
-                  in  mkIdOccSccEH range_ False (g `gamUnion` _declarationsIidDefOccGam) (Just _sccOrder)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1054, column 9)
-              _modAsMp =
-                  _importdeclarationsImodAsMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 8, column 9)
-              _refmainname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm hsnMain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 188, column 9)
-              _idOccDefMain =
-                  IdOcc hsnMain IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 271, column 9)
-              _extraModImpL =
-                  if   ehcOptOverloadedStrings _lhsIopts
-                  then [ModImp True hsnModDataString hsnModDataString False [ModEntSpec (hsnQualified hsnDataStringFromString) range_ Nothing] range_]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 97, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 9, column 9)
-              _lhsOerrSq =
-                  Seq.firstNotEmpty [Seq.fromList _errDupIntro, Seq.fromList _errIdUse,Seq.fromList _errReorder, _declarationsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 7, column 9)
-              _lhsOpp =
-                  _importdeclarationsIpp >-<
-                  _declarationsIpp >-< _ppExtra
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 10, column 9)
-              _ppExtra =
-                  empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 22, column 9)
-              _declarationsOfixityGam =
-                  _declarationsIgathFixityGam `gamUnion` _lhsIfixityGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 51, column 9)
-              _lhsOeh =
-                  _mkSccLet (if _lhsIisMainMod then rngLift range_ EH.Expr_Var hsnMain
-                                               else rngLift range_ EH.Expr_IConst 0
-                            )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 57, column 9)
-              _ehMainDecl =
-                  rngLift range_ EH.Decl_Val
-                      (rngLift range_ EH.PatExpr_Var hsnMain)
-                      (appRngParApp range_ [rngLift range_ EH.Expr_Var (_mainrefnames !! 2),rngLift range_ EH.Expr_Var _mainrefname])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 57, column 9)
-              _ehMainSig =
-                  rngLift range_ EH.Decl_TySig
-                      hsnMain
-                      (appRngParApp range_ [rngLift range_ EH.TyExpr_Con (_mainrefnames !! 1),rngLift range_ EH.TyExpr_Wild])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 881, column 9)
-              _caseId =
-                  uidStart
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 89, column 9)
-              _lhsOgathIdGam =
-                  _declarationsIidDefOccGam
-                  `gamUnion`
-                  assocLToGam [ (o {ioccNm = hsnSetQual _lhsImoduleNm (ioccNm o)},d)
-                              | (o,d) <- gamToAssocL _lhsIidGam
-                              , n <- Map.findWithDefault [] o _lhsImodEntToOrig
-                              ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 309, column 9)
-              _pragmas =
-                  _declarationsIgathPragmas `Set.union` _lhsIpragmas
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 315, column 9)
-              _declarationsOgenerDerivMp =
-                  let nm n = hsnSetLevQual _lhsInmLev _lhsImoduleNm n
-                  in  Map.unionsWith (++)
-                          [ Map.singleton (nm clNm) [(nm fldNm,nm dfltNm)]
-                          | (Pragma.Pragma_Derivable clNm fldNm dfltNm) <- Set.toList _pragmas
-                          ]
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _importdeclarationsIgathFixityGam `gamAddGam` _declarationsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _importdeclarationsIidUseOccGam `gamAddGam` _declarationsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _importdeclarationsIppWrap . _declarationsIppWrap
-              -- copy rule (from local)
-              _lhsOextraModImpL =
-                  _extraModImpL
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _declarationsIgUniq
-              -- copy rule (from local)
-              _lhsOmainValExists =
-                  _mainValExists
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _declarationsItopInstanceNmL
-              -- copy rule (down)
-              _importdeclarationsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _importdeclarationsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _importdeclarationsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _importdeclarationsOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _importdeclarationsOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _importdeclarationsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _importdeclarationsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _importdeclarationsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _importdeclarationsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _importdeclarationsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _declarationsOcaseId =
-                  _caseId
-              -- copy rule (chain)
-              _declarationsOgUniq =
-                  _importdeclarationsIgUniq
-              -- copy rule (from local)
-              _declarationsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _declarationsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _declarationsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _declarationsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _declarationsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (from local)
-              _declarationsOpragmas =
-                  _pragmas
-              -- copy rule (chain)
-              _declarationsOtopInstanceNmL =
-                  _importdeclarationsItopInstanceNmL
-              ( _importdeclarationsIerrSq,_importdeclarationsIgUniq,_importdeclarationsIgathFixityGam,_importdeclarationsIidUseOccGam,_importdeclarationsImodAsMp,_importdeclarationsIpp,_importdeclarationsIppWrap,_importdeclarationsItopInstanceNmL,_importdeclarationsIundefOccGam) =
-                  importdeclarations_ _importdeclarationsOfixityGam _importdeclarationsOgUniq _importdeclarationsOidGam _importdeclarationsOisMainMod _importdeclarationsOisTopMod _importdeclarationsOmoduleNm _importdeclarationsOnmLev _importdeclarationsOopts _importdeclarationsOpatchEhNmInInstance _importdeclarationsOtopInstanceNmL
-              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
-                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOextraModImpL,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOidUseOccGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Constructor -------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         conAndFldrefnames    : AssocL Name Names
-         conrefnames          : Names
-         eh                   : EH.DataConstr
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         hasFlds              : Bool
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Constructor:
-         child range          : {Range}
-         child constructor    : {Name}
-         child types          : Types 
-         visit 0:
-            local conrefname  : _
-            local nmLev       : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Infix:
-         child range          : {Range}
-         child leftType       : Type 
-         child constructorOperator : {Name}
-         child rightType      : Type 
-         visit 0:
-            local conrefname  : _
-            local nmLev       : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Record:
-         child range          : {Range}
-         child constructor    : {Name}
-         child fieldDeclarations : FieldDeclarations 
-         visit 0:
-            local conrefname  : _
-            local conAndFldrefnames : _
-            local pp          : _
-      alternative Contexted:
-         child range          : {Range}
-         child context        : ContextItems 
-         child constructor    : Constructor 
-         visit 0:
-            local pp          : _
-      alternative GADTFunction:
-         child range          : {Range}
-         child constructor    : {Name}
-         child type           : Type 
-         visit 0:
-            local conrefname  : _
-            local nmLev       : _
-            local pp          : _
-            local ehArgs      : _
-            local ehRes       : _
-            local isAsPred    : _
-            local doGenVarWild : _
--}
--- cata
-sem_Constructor :: Constructor ->
-                   T_Constructor
-sem_Constructor (Constructor_Constructor _range _constructor _types) =
-    (sem_Constructor_Constructor _range _constructor (sem_Types _types))
-sem_Constructor (Constructor_Infix _range _leftType _constructorOperator _rightType) =
-    (sem_Constructor_Infix _range (sem_Type _leftType) _constructorOperator (sem_Type _rightType))
-sem_Constructor (Constructor_Record _range _constructor _fieldDeclarations) =
-    (sem_Constructor_Record _range _constructor (sem_FieldDeclarations _fieldDeclarations))
-sem_Constructor (Constructor_Contexted _range _context _constructor) =
-    (sem_Constructor_Contexted _range (sem_ContextItems _context) (sem_Constructor _constructor))
-sem_Constructor (Constructor_GADTFunction _range _constructor _type) =
-    (sem_Constructor_GADTFunction _range _constructor (sem_Type _type))
--- semantic domain
-type T_Constructor = FixityGam ->
-                     UID ->
-                     IdDefOccGam ->
-                     HsName ->
-                     NmLev ->
-                     EHCOpts ->
-                     PatchEhNmInInstance ->
-                     ([HsName]) ->
-                     ( (AssocL Name Names),Names,(EH.DataConstr),ErrSq,HsNameS,UID,Bool,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Constructor_Constructor :: Range ->
-                               Name ->
-                               T_Types ->
-                               T_Constructor
-sem_Constructor_Constructor range_ constructor_ types_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconrefnames :: Names
-              _lhsOeh :: (EH.DataConstr)
-              _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOhasFlds :: Bool
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typesOfixityGam :: FixityGam
-              _typesOgUniq :: UID
-              _typesOidGam :: IdDefOccGam
-              _typesOisAsPred :: Bool
-              _typesOnmLev :: NmLev
-              _typesOopts :: EHCOpts
-              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typesOtopInstanceNmL :: ([HsName])
-              _typesIeh :: ([EH.TyExpr])
-              _typesIerrSq :: ErrSq
-              _typesIfreeTvarS :: HsNameS
-              _typesIgUniq :: UID
-              _typesIidUseOccGam :: IdUseOccGam
-              _typesIpp :: PP_Doc
-              _typesIppL :: ([PP_Doc])
-              _typesIppWrap :: (PP_Doc -> PP_Doc)
-              _typesItopInstanceNmL :: ([HsName])
-              _typesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
-              _conrefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 71, column 9)
-              _lhsOconrefnames =
-                  [_conrefname]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 178, column 9)
-              _pp =
-                  constructor_ >#< ppSpaces _typesIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 307, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.DataConstr_Constr _conrefname
-                          Nothing
-                          (map (ehPlainDataField emptyRange) _typesIeh)
-                          Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 174, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 227, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typesIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typesIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
-              _lhsOhasFlds =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typesIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typesIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typesItopInstanceNmL
-              -- copy rule (down)
-              _typesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typesOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typesOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typesOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typesOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typesOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
-                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Constructor_Infix :: Range ->
-                         T_Type ->
-                         Name ->
-                         T_Type ->
-                         T_Constructor
-sem_Constructor_Infix range_ leftType_ constructorOperator_ rightType_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconrefnames :: Names
-              _lhsOeh :: (EH.DataConstr)
-              _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOhasFlds :: Bool
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftTypeOdoGenVarWild :: Bool
-              _leftTypeOfixityGam :: FixityGam
-              _leftTypeOgUniq :: UID
-              _leftTypeOidGam :: IdDefOccGam
-              _leftTypeOisAsPred :: Bool
-              _leftTypeOnmLev :: NmLev
-              _leftTypeOopts :: EHCOpts
-              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftTypeOtopInstanceNmL :: ([HsName])
-              _rightTypeOdoGenVarWild :: Bool
-              _rightTypeOfixityGam :: FixityGam
-              _rightTypeOgUniq :: UID
-              _rightTypeOidGam :: IdDefOccGam
-              _rightTypeOisAsPred :: Bool
-              _rightTypeOnmLev :: NmLev
-              _rightTypeOopts :: EHCOpts
-              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightTypeOtopInstanceNmL :: ([HsName])
-              _leftTypeIconNm :: Name
-              _leftTypeIeh :: (EH.TyExpr)
-              _leftTypeIehMbAsPr :: (Maybe EH.PrExpr)
-              _leftTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _leftTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _leftTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _leftTypeIerrSq :: ErrSq
-              _leftTypeIfreeTvarS :: HsNameS
-              _leftTypeIgUniq :: UID
-              _leftTypeIidUseOccGam :: IdUseOccGam
-              _leftTypeImbRefConNm :: (Maybe Name)
-              _leftTypeIopChain :: (OpChain EH.TyExpr)
-              _leftTypeIoperatorName :: MaybeName
-              _leftTypeIpp :: PP_Doc
-              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
-              _leftTypeItopInstanceNmL :: ([HsName])
-              _leftTypeItyConIs :: TypeConFixedMeaning
-              _leftTypeIundefOccGam :: IdUseOccGam
-              _rightTypeIconNm :: Name
-              _rightTypeIeh :: (EH.TyExpr)
-              _rightTypeIehMbAsPr :: (Maybe EH.PrExpr)
-              _rightTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _rightTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _rightTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _rightTypeIerrSq :: ErrSq
-              _rightTypeIfreeTvarS :: HsNameS
-              _rightTypeIgUniq :: UID
-              _rightTypeIidUseOccGam :: IdUseOccGam
-              _rightTypeImbRefConNm :: (Maybe Name)
-              _rightTypeIopChain :: (OpChain EH.TyExpr)
-              _rightTypeIoperatorName :: MaybeName
-              _rightTypeIpp :: PP_Doc
-              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
-              _rightTypeItopInstanceNmL :: ([HsName])
-              _rightTypeItyConIs :: TypeConFixedMeaning
-              _rightTypeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 66, column 9)
-              _conrefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructorOperator_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 73, column 9)
-              _lhsOconrefnames =
-                  [_conrefname]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 180, column 9)
-              _pp =
-                  _leftTypeIpp >#< constructorOperator_ >#< _rightTypeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 319, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.DataConstr_Constr _conrefname
-                          (let fgi = fixityGamLookup _conrefname _lhsIfixityGam
-                            in Just (fgiPrio fgi, fgiFixity fgi)
-                          )
-                          (map (ehPlainDataField emptyRange) [_leftTypeIeh,_rightTypeIeh])
-                          Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 174, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 227, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftTypeIerrSq `Seq.union` _rightTypeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _leftTypeIfreeTvarS `Set.union` _rightTypeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
-              _lhsOhasFlds =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftTypeIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftTypeIppWrap . _rightTypeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftTypeIundefOccGam `gamUnion` _rightTypeIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightTypeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightTypeItopInstanceNmL
-              -- copy rule (from local)
-              _leftTypeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _leftTypeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftTypeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftTypeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _leftTypeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _leftTypeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _leftTypeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftTypeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftTypeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _rightTypeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _rightTypeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightTypeOgUniq =
-                  _leftTypeIgUniq
-              -- copy rule (down)
-              _rightTypeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _rightTypeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _rightTypeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _rightTypeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightTypeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rightTypeOtopInstanceNmL =
-                  _leftTypeItopInstanceNmL
-              ( _leftTypeIconNm,_leftTypeIeh,_leftTypeIehMbAsPr,_leftTypeIehMbAsPrL,_leftTypeIehMbAsTyPr,_leftTypeIehMbAsTyPrL,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeImbRefConNm,_leftTypeIopChain,_leftTypeIoperatorName,_leftTypeIpp,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItyConIs,_leftTypeIundefOccGam) =
-                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOisAsPred _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL
-              ( _rightTypeIconNm,_rightTypeIeh,_rightTypeIehMbAsPr,_rightTypeIehMbAsPrL,_rightTypeIehMbAsTyPr,_rightTypeIehMbAsTyPrL,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeImbRefConNm,_rightTypeIopChain,_rightTypeIoperatorName,_rightTypeIpp,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItyConIs,_rightTypeIundefOccGam) =
-                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOisAsPred _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Constructor_Record :: Range ->
-                          Name ->
-                          T_FieldDeclarations ->
-                          T_Constructor
-sem_Constructor_Record range_ constructor_ fieldDeclarations_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconrefnames :: Names
-              _lhsOeh :: (EH.DataConstr)
-              _lhsOhasFlds :: Bool
-              _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _fieldDeclarationsOfixityGam :: FixityGam
-              _fieldDeclarationsOgUniq :: UID
-              _fieldDeclarationsOidGam :: IdDefOccGam
-              _fieldDeclarationsOmoduleNm :: HsName
-              _fieldDeclarationsOnmLev :: NmLev
-              _fieldDeclarationsOopts :: EHCOpts
-              _fieldDeclarationsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _fieldDeclarationsOtopInstanceNmL :: ([HsName])
-              _fieldDeclarationsIeh :: ([EH.DataField])
-              _fieldDeclarationsIerrSq :: ErrSq
-              _fieldDeclarationsIfldrefnames :: Names
-              _fieldDeclarationsIfreeTvarS :: HsNameS
-              _fieldDeclarationsIgUniq :: UID
-              _fieldDeclarationsIidUseOccGam :: IdUseOccGam
-              _fieldDeclarationsIpp :: PP_Doc
-              _fieldDeclarationsIppL :: ([PP_Doc])
-              _fieldDeclarationsIppWrap :: (PP_Doc -> PP_Doc)
-              _fieldDeclarationsItopInstanceNmL :: ([HsName])
-              _fieldDeclarationsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
-              _conrefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 76, column 9)
-              _lhsOconrefnames =
-                  [_conrefname]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 87, column 9)
-              _conAndFldrefnames =
-                  [(_conrefname,_fieldDeclarationsIfldrefnames)]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 182, column 9)
-              _pp =
-                  constructor_ >#< ppCurlysCommas' _fieldDeclarationsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 327, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.DataConstr_Constr _conrefname
-                          Nothing
-                          _fieldDeclarationsIeh
-                          Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 241, column 9)
-              _lhsOhasFlds =
-                  True
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  _conAndFldrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _fieldDeclarationsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _fieldDeclarationsIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _fieldDeclarationsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _fieldDeclarationsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _fieldDeclarationsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _fieldDeclarationsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _fieldDeclarationsItopInstanceNmL
-              -- copy rule (down)
-              _fieldDeclarationsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _fieldDeclarationsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _fieldDeclarationsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _fieldDeclarationsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _fieldDeclarationsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _fieldDeclarationsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _fieldDeclarationsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _fieldDeclarationsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _fieldDeclarationsIeh,_fieldDeclarationsIerrSq,_fieldDeclarationsIfldrefnames,_fieldDeclarationsIfreeTvarS,_fieldDeclarationsIgUniq,_fieldDeclarationsIidUseOccGam,_fieldDeclarationsIpp,_fieldDeclarationsIppL,_fieldDeclarationsIppWrap,_fieldDeclarationsItopInstanceNmL,_fieldDeclarationsIundefOccGam) =
-                  fieldDeclarations_ _fieldDeclarationsOfixityGam _fieldDeclarationsOgUniq _fieldDeclarationsOidGam _fieldDeclarationsOmoduleNm _fieldDeclarationsOnmLev _fieldDeclarationsOopts _fieldDeclarationsOpatchEhNmInInstance _fieldDeclarationsOtopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Constructor_Contexted :: Range ->
-                             T_ContextItems ->
-                             T_Constructor ->
-                             T_Constructor
-sem_Constructor_Contexted range_ context_ constructor_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.DataConstr)
-              _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOconrefnames :: Names
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOhasFlds :: Bool
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _constructorOfixityGam :: FixityGam
-              _constructorOgUniq :: UID
-              _constructorOidGam :: IdDefOccGam
-              _constructorOmoduleNm :: HsName
-              _constructorOnmLev :: NmLev
-              _constructorOopts :: EHCOpts
-              _constructorOpatchEhNmInInstance :: PatchEhNmInInstance
-              _constructorOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _constructorIconAndFldrefnames :: (AssocL Name Names)
-              _constructorIconrefnames :: Names
-              _constructorIeh :: (EH.DataConstr)
-              _constructorIerrSq :: ErrSq
-              _constructorIfreeTvarS :: HsNameS
-              _constructorIgUniq :: UID
-              _constructorIhasFlds :: Bool
-              _constructorIidUseOccGam :: IdUseOccGam
-              _constructorIpp :: PP_Doc
-              _constructorIppWrap :: (PP_Doc -> PP_Doc)
-              _constructorItopInstanceNmL :: ([HsName])
-              _constructorIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 184, column 17)
-              _pp =
-                  _contextIpp >#< "=>" >#< _constructorIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 332, column 17)
-              _lhsOeh =
-                  _constructorIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  _constructorIconAndFldrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
-              _lhsOconrefnames =
-                  _constructorIconrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _contextIerrSq `Seq.union` _constructorIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _contextIfreeTvarS `Set.union` _constructorIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
-              _lhsOhasFlds =
-                  _constructorIhasFlds
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _contextIidUseOccGam `gamAddGam` _constructorIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _constructorIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _contextIundefOccGam `gamUnion` _constructorIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _constructorIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _constructorItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _contextOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _contextOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _contextOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _contextOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _constructorOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _constructorOgUniq =
-                  _contextIgUniq
-              -- copy rule (down)
-              _constructorOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _constructorOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _constructorOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _constructorOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _constructorOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _constructorOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _constructorIconAndFldrefnames,_constructorIconrefnames,_constructorIeh,_constructorIerrSq,_constructorIfreeTvarS,_constructorIgUniq,_constructorIhasFlds,_constructorIidUseOccGam,_constructorIpp,_constructorIppWrap,_constructorItopInstanceNmL,_constructorIundefOccGam) =
-                  constructor_ _constructorOfixityGam _constructorOgUniq _constructorOidGam _constructorOmoduleNm _constructorOnmLev _constructorOopts _constructorOpatchEhNmInInstance _constructorOtopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Constructor_GADTFunction :: Range ->
-                                Name ->
-                                T_Type ->
-                                T_Constructor
-sem_Constructor_GADTFunction range_ constructor_ type_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconrefnames :: Names
-              _lhsOeh :: (EH.DataConstr)
-              _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOhasFlds :: Bool
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
-              _conrefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 71, column 9)
-              _lhsOconrefnames =
-                  [_conrefname]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 186, column 17)
-              _pp =
-                  constructor_ >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 312, column 41)
-              (_ehArgs,_ehRes) =
-                  appUnArr _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 314, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.DataConstr_Constr _conrefname
-                          Nothing
-                          (map (ehPlainDataField emptyRange) _ehArgs)
-                          (Just _ehRes)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 174, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 227, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
-              _lhsOhasFlds =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Constructors ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         conAndFldrefnames    : AssocL Name Names
-         conrefnames          : Names
-         eh                   : [EH.DataConstr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         hasFlds              : Bool
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Constructor 
-         child tl             : Constructors 
-      alternative Nil:
--}
--- cata
-sem_Constructors :: Constructors ->
-                    T_Constructors
-sem_Constructors list =
-    (Prelude.foldr sem_Constructors_Cons sem_Constructors_Nil (Prelude.map sem_Constructor list))
--- semantic domain
-type T_Constructors = FixityGam ->
-                      UID ->
-                      IdDefOccGam ->
-                      HsName ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      ([HsName]) ->
-                      ( (AssocL Name Names),Names,([EH.DataConstr]),ErrSq,HsNameS,UID,Bool,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Constructors_Cons :: T_Constructor ->
-                         T_Constructors ->
-                         T_Constructors
-sem_Constructors_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOconrefnames :: Names
-              _lhsOeh :: ([EH.DataConstr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOhasFlds :: Bool
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIconAndFldrefnames :: (AssocL Name Names)
-              _hdIconrefnames :: Names
-              _hdIeh :: (EH.DataConstr)
-              _hdIerrSq :: ErrSq
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIhasFlds :: Bool
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIconAndFldrefnames :: (AssocL Name Names)
-              _tlIconrefnames :: Names
-              _tlIeh :: ([EH.DataConstr])
-              _tlIerrSq :: ErrSq
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIhasFlds :: Bool
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  _hdIconAndFldrefnames ++ _tlIconAndFldrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
-              _lhsOconrefnames =
-                  _hdIconrefnames ++ _tlIconrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 295, column 28)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
-              _lhsOhasFlds =
-                  _hdIhasFlds || _tlIhasFlds
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIconAndFldrefnames,_hdIconrefnames,_hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIhasFlds,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIconAndFldrefnames,_tlIconrefnames,_tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIhasFlds,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Constructors_Nil :: T_Constructors
-sem_Constructors_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconAndFldrefnames :: (AssocL Name Names)
-              _lhsOconrefnames :: Names
-              _lhsOeh :: ([EH.DataConstr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOhasFlds :: Bool
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
-              _lhsOconAndFldrefnames =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
-              _lhsOconrefnames =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 295, column 28)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
-              _lhsOhasFlds =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ContextItem -------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.PrExpr
-         ehTy                 : EH.TyExpr
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Class:
-         child range          : {Range}
-         child name           : {Name}
-         child types          : Types 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-            local isAsPred    : _
-      alternative Forall:
-         child range          : {Range}
-         child typevariables  : {Names}
-         child context        : ContextItem 
-         visit 0:
-            local idDefOccGamInside : _
-            local idGam       : _
-            local nmLev       : _
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-      alternative Arrow:
-         child range          : {Range}
-         child argument       : ContextItem 
-         child result         : ContextItem 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-      alternative Implicits:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-      alternative NoImplicits:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-      alternative RowLacksLabel:
-         child range          : {Range}
-         child rowvariable    : {Name}
-         child name           : {Name}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-      alternative Equal:
-         child range          : {Range}
-         child type1          : Type 
-         child type2          : Type 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehTy        : _
-            local isAsPred    : _
-            local doGenVarWild : _
--}
--- cata
-sem_ContextItem :: ContextItem ->
-                   T_ContextItem
-sem_ContextItem (ContextItem_Class _range _name _types) =
-    (sem_ContextItem_Class _range _name (sem_Types _types))
-sem_ContextItem (ContextItem_Forall _range _typevariables _context) =
-    (sem_ContextItem_Forall _range _typevariables (sem_ContextItem _context))
-sem_ContextItem (ContextItem_Arrow _range _argument _result) =
-    (sem_ContextItem_Arrow _range (sem_ContextItem _argument) (sem_ContextItem _result))
-sem_ContextItem (ContextItem_Implicits _range) =
-    (sem_ContextItem_Implicits _range)
-sem_ContextItem (ContextItem_NoImplicits _range) =
-    (sem_ContextItem_NoImplicits _range)
-sem_ContextItem (ContextItem_RowLacksLabel _range _rowvariable _name) =
-    (sem_ContextItem_RowLacksLabel _range _rowvariable _name)
-sem_ContextItem (ContextItem_Equal _range _type1 _type2) =
-    (sem_ContextItem_Equal _range (sem_Type _type1) (sem_Type _type2))
--- semantic domain
-type T_ContextItem = FixityGam ->
-                     UID ->
-                     IdDefOccGam ->
-                     NmLev ->
-                     EHCOpts ->
-                     PatchEhNmInInstance ->
-                     ([HsName]) ->
-                     ( (EH.PrExpr),(EH.TyExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ContextItem_Class :: Range ->
-                         Name ->
-                         T_Types ->
-                         T_ContextItem
-sem_ContextItem_Class range_ name_ types_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typesOfixityGam :: FixityGam
-              _typesOgUniq :: UID
-              _typesOidGam :: IdDefOccGam
-              _typesOisAsPred :: Bool
-              _typesOnmLev :: NmLev
-              _typesOopts :: EHCOpts
-              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typesOtopInstanceNmL :: ([HsName])
-              _typesIeh :: ([EH.TyExpr])
-              _typesIerrSq :: ErrSq
-              _typesIfreeTvarS :: HsNameS
-              _typesIgUniq :: UID
-              _typesIidUseOccGam :: IdUseOccGam
-              _typesIpp :: PP_Doc
-              _typesIppL :: ([PP_Doc])
-              _typesIppWrap :: (PP_Doc -> PP_Doc)
-              _typesItopInstanceNmL :: ([HsName])
-              _typesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 617, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 619, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_typesIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 125, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _typesIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 162, column 9)
-              _pp =
-                  name_ >#< ppSpaces _typesIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 275, column 9)
-              _eh =
-                  rngLift range_ EH.PrExpr_Class _refname _typesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_Pred _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 193, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typesIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typesIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typesItopInstanceNmL
-              -- copy rule (down)
-              _typesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typesOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typesOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typesOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typesOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typesOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
-                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItem_Forall :: Range ->
-                          Names ->
-                          T_ContextItem ->
-                          T_ContextItem
-sem_ContextItem_Forall range_ typevariables_ context_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOfreeTvarS :: HsNameS
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _contextIeh :: (EH.PrExpr)
-              _contextIehTy :: (EH.TyExpr)
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 259, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 416, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamInside _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 46, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 172, column 9)
-              _pp =
-                  "forall" >#< ppSpaces typevariables_ >#< "." >#< _contextIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 283, column 9)
-              _eh =
-                  foldr (rngLift range_ EH.PrExpr_Forall) _contextIeh typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_Pred _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 128, column 9)
-              _lhsOfreeTvarS =
-                  _contextIfreeTvarS `Set.difference` Set.fromList typevariables_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _contextIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _contextIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _contextIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _contextIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _contextOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _contextOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _contextOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _contextOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItem_Arrow :: Range ->
-                         T_ContextItem ->
-                         T_ContextItem ->
-                         T_ContextItem
-sem_ContextItem_Arrow range_ argument_ result_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _argumentOfixityGam :: FixityGam
-              _argumentOgUniq :: UID
-              _argumentOidGam :: IdDefOccGam
-              _argumentOnmLev :: NmLev
-              _argumentOopts :: EHCOpts
-              _argumentOpatchEhNmInInstance :: PatchEhNmInInstance
-              _argumentOtopInstanceNmL :: ([HsName])
-              _resultOfixityGam :: FixityGam
-              _resultOgUniq :: UID
-              _resultOidGam :: IdDefOccGam
-              _resultOnmLev :: NmLev
-              _resultOopts :: EHCOpts
-              _resultOpatchEhNmInInstance :: PatchEhNmInInstance
-              _resultOtopInstanceNmL :: ([HsName])
-              _argumentIeh :: (EH.PrExpr)
-              _argumentIehTy :: (EH.TyExpr)
-              _argumentIerrSq :: ErrSq
-              _argumentIfreeTvarS :: HsNameS
-              _argumentIgUniq :: UID
-              _argumentIidUseOccGam :: IdUseOccGam
-              _argumentIpp :: PP_Doc
-              _argumentIppWrap :: (PP_Doc -> PP_Doc)
-              _argumentItopInstanceNmL :: ([HsName])
-              _argumentIundefOccGam :: IdUseOccGam
-              _resultIeh :: (EH.PrExpr)
-              _resultIehTy :: (EH.TyExpr)
-              _resultIerrSq :: ErrSq
-              _resultIfreeTvarS :: HsNameS
-              _resultIgUniq :: UID
-              _resultIidUseOccGam :: IdUseOccGam
-              _resultIpp :: PP_Doc
-              _resultIppWrap :: (PP_Doc -> PP_Doc)
-              _resultItopInstanceNmL :: ([HsName])
-              _resultIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 170, column 9)
-              _pp =
-                  _argumentIpp >#< "->" >#< _resultIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 281, column 9)
-              _eh =
-                  rngLift range_ EH.PrExpr_Arrow _argumentIeh _resultIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_Pred _eh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _argumentIerrSq `Seq.union` _resultIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _argumentIfreeTvarS `Set.union` _resultIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _argumentIidUseOccGam `gamAddGam` _resultIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _argumentIppWrap . _resultIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _argumentIundefOccGam `gamUnion` _resultIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _resultIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _resultItopInstanceNmL
-              -- copy rule (down)
-              _argumentOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _argumentOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _argumentOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _argumentOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _argumentOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _argumentOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _argumentOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _resultOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _resultOgUniq =
-                  _argumentIgUniq
-              -- copy rule (down)
-              _resultOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _resultOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _resultOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _resultOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _resultOtopInstanceNmL =
-                  _argumentItopInstanceNmL
-              ( _argumentIeh,_argumentIehTy,_argumentIerrSq,_argumentIfreeTvarS,_argumentIgUniq,_argumentIidUseOccGam,_argumentIpp,_argumentIppWrap,_argumentItopInstanceNmL,_argumentIundefOccGam) =
-                  argument_ _argumentOfixityGam _argumentOgUniq _argumentOidGam _argumentOnmLev _argumentOopts _argumentOpatchEhNmInInstance _argumentOtopInstanceNmL
-              ( _resultIeh,_resultIehTy,_resultIerrSq,_resultIfreeTvarS,_resultIgUniq,_resultIidUseOccGam,_resultIpp,_resultIppWrap,_resultItopInstanceNmL,_resultIundefOccGam) =
-                  result_ _resultOfixityGam _resultOgUniq _resultOidGam _resultOnmLev _resultOopts _resultOpatchEhNmInInstance _resultOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItem_Implicits :: Range ->
-                             T_ContextItem
-sem_ContextItem_Implicits range_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 164, column 9)
-              _pp =
-                  pp "..."
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 277, column 9)
-              _eh =
-                  undefined
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 291, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_Impls
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItem_NoImplicits :: Range ->
-                               T_ContextItem
-sem_ContextItem_NoImplicits range_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 166, column 9)
-              _pp =
-                  empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 277, column 9)
-              _eh =
-                  undefined
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 293, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_NoImpls
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItem_RowLacksLabel :: Range ->
-                                 Name ->
-                                 Name ->
-                                 T_ContextItem
-sem_ContextItem_RowLacksLabel range_ rowvariable_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOfreeTvarS :: HsNameS
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 168, column 9)
-              _pp =
-                  name_ >|< "\\" >|< rowvariable_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 279, column 9)
-              _eh =
-                  rngLift range_ EH.PrExpr_Lacks (rngLift range_ EH.RowTyExpr_Var rowvariable_) name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_Pred _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 130, column 9)
-              _lhsOfreeTvarS =
-                  Set.singleton rowvariable_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItem_Equal :: Range ->
-                         T_Type ->
-                         T_Type ->
-                         T_ContextItem
-sem_ContextItem_Equal range_ type1_ type2_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PrExpr)
-              _lhsOehTy :: (EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _type1OdoGenVarWild :: Bool
-              _type1OfixityGam :: FixityGam
-              _type1OgUniq :: UID
-              _type1OidGam :: IdDefOccGam
-              _type1OisAsPred :: Bool
-              _type1OnmLev :: NmLev
-              _type1Oopts :: EHCOpts
-              _type1OpatchEhNmInInstance :: PatchEhNmInInstance
-              _type1OtopInstanceNmL :: ([HsName])
-              _type2OdoGenVarWild :: Bool
-              _type2OfixityGam :: FixityGam
-              _type2OgUniq :: UID
-              _type2OidGam :: IdDefOccGam
-              _type2OisAsPred :: Bool
-              _type2OnmLev :: NmLev
-              _type2Oopts :: EHCOpts
-              _type2OpatchEhNmInInstance :: PatchEhNmInInstance
-              _type2OtopInstanceNmL :: ([HsName])
-              _type1IconNm :: Name
-              _type1Ieh :: (EH.TyExpr)
-              _type1IehMbAsPr :: (Maybe EH.PrExpr)
-              _type1IehMbAsPrL :: ([Maybe EH.PrExpr])
-              _type1IehMbAsTyPr :: (Maybe EH.TyExpr)
-              _type1IehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _type1IerrSq :: ErrSq
-              _type1IfreeTvarS :: HsNameS
-              _type1IgUniq :: UID
-              _type1IidUseOccGam :: IdUseOccGam
-              _type1ImbRefConNm :: (Maybe Name)
-              _type1IopChain :: (OpChain EH.TyExpr)
-              _type1IoperatorName :: MaybeName
-              _type1Ipp :: PP_Doc
-              _type1IppWrap :: (PP_Doc -> PP_Doc)
-              _type1ItopInstanceNmL :: ([HsName])
-              _type1ItyConIs :: TypeConFixedMeaning
-              _type1IundefOccGam :: IdUseOccGam
-              _type2IconNm :: Name
-              _type2Ieh :: (EH.TyExpr)
-              _type2IehMbAsPr :: (Maybe EH.PrExpr)
-              _type2IehMbAsPrL :: ([Maybe EH.PrExpr])
-              _type2IehMbAsTyPr :: (Maybe EH.TyExpr)
-              _type2IehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _type2IerrSq :: ErrSq
-              _type2IfreeTvarS :: HsNameS
-              _type2IgUniq :: UID
-              _type2IidUseOccGam :: IdUseOccGam
-              _type2ImbRefConNm :: (Maybe Name)
-              _type2IopChain :: (OpChain EH.TyExpr)
-              _type2IoperatorName :: MaybeName
-              _type2Ipp :: PP_Doc
-              _type2IppWrap :: (PP_Doc -> PP_Doc)
-              _type2ItopInstanceNmL :: ([HsName])
-              _type2ItyConIs :: TypeConFixedMeaning
-              _type2IundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 174, column 9)
-              _pp =
-                  _type1Ipp >#< hsnEqTilde >#< _type2Ipp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 285, column 9)
-              _eh =
-                  rngLift range_ EH.PrExpr_Eq _type1Ieh _type2Ieh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
-              _ehTy =
-                  rngLift range_ EH.TyExpr_Pred _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 193, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 235, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _type1IerrSq `Seq.union` _type2IerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _type1IfreeTvarS `Set.union` _type2IfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _type1IidUseOccGam `gamAddGam` _type2IidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _type1IppWrap . _type2IppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _type1IundefOccGam `gamUnion` _type2IundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehTy =
-                  _ehTy
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _type2IgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _type2ItopInstanceNmL
-              -- copy rule (from local)
-              _type1OdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _type1OfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _type1OgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _type1OidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _type1OisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _type1OnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _type1Oopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _type1OpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _type1OtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _type2OdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _type2OfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _type2OgUniq =
-                  _type1IgUniq
-              -- copy rule (down)
-              _type2OidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _type2OisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _type2OnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _type2Oopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _type2OpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _type2OtopInstanceNmL =
-                  _type1ItopInstanceNmL
-              ( _type1IconNm,_type1Ieh,_type1IehMbAsPr,_type1IehMbAsPrL,_type1IehMbAsTyPr,_type1IehMbAsTyPrL,_type1IerrSq,_type1IfreeTvarS,_type1IgUniq,_type1IidUseOccGam,_type1ImbRefConNm,_type1IopChain,_type1IoperatorName,_type1Ipp,_type1IppWrap,_type1ItopInstanceNmL,_type1ItyConIs,_type1IundefOccGam) =
-                  type1_ _type1OdoGenVarWild _type1OfixityGam _type1OgUniq _type1OidGam _type1OisAsPred _type1OnmLev _type1Oopts _type1OpatchEhNmInInstance _type1OtopInstanceNmL
-              ( _type2IconNm,_type2Ieh,_type2IehMbAsPr,_type2IehMbAsPrL,_type2IehMbAsTyPr,_type2IehMbAsTyPrL,_type2IerrSq,_type2IfreeTvarS,_type2IgUniq,_type2IidUseOccGam,_type2ImbRefConNm,_type2IopChain,_type2IoperatorName,_type2Ipp,_type2IppWrap,_type2ItopInstanceNmL,_type2ItyConIs,_type2IundefOccGam) =
-                  type2_ _type2OdoGenVarWild _type2OfixityGam _type2OgUniq _type2OidGam _type2OisAsPred _type2OnmLev _type2Oopts _type2OpatchEhNmInInstance _type2OtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ContextItems ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.PrExpr]
-         ehTy                 : [EH.TyExpr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : ContextItem 
-         child tl             : ContextItems 
-      alternative Nil:
--}
--- cata
-sem_ContextItems :: ContextItems ->
-                    T_ContextItems
-sem_ContextItems list =
-    (Prelude.foldr sem_ContextItems_Cons sem_ContextItems_Nil (Prelude.map sem_ContextItem list))
--- semantic domain
-type T_ContextItems = FixityGam ->
-                      UID ->
-                      IdDefOccGam ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      ([HsName]) ->
-                      ( ([EH.PrExpr]),([EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ContextItems_Cons :: T_ContextItem ->
-                         T_ContextItems ->
-                         T_ContextItems
-sem_ContextItems_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.PrExpr])
-              _lhsOehTy :: ([EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.PrExpr)
-              _hdIehTy :: (EH.TyExpr)
-              _hdIerrSq :: ErrSq
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.PrExpr])
-              _tlIehTy :: ([EH.TyExpr])
-              _tlIerrSq :: ErrSq
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 28)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 62)
-              _lhsOehTy =
-                  _hdIehTy : _tlIehTy
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIehTy,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIehTy,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextItems_Nil :: T_ContextItems
-sem_ContextItems_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.PrExpr])
-              _lhsOehTy :: ([EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 28)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 62)
-              _lhsOehTy =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ContextedExpression -----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : (EH.Expr,EH.PrExpr)
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Contexted:
-         child range          : {Range}
-         child expression     : Expression 
-         child context        : ContextItem 
-         visit 0:
-            local pp          : _
--}
--- cata
-sem_ContextedExpression :: ContextedExpression ->
-                           T_ContextedExpression
-sem_ContextedExpression (ContextedExpression_Contexted _range _expression _context) =
-    (sem_ContextedExpression_Contexted _range (sem_Expression _expression) (sem_ContextItem _context))
--- semantic domain
-type T_ContextedExpression = UID ->
-                             FixityGam ->
-                             UID ->
-                             (Map.Map HsName [(HsName,HsName)]) ->
-                             IdDefOccGam ->
-                             HsName ->
-                             NmLev ->
-                             EHCOpts ->
-                             PatchEhNmInInstance ->
-                             (Set.Set Pragma.Pragma) ->
-                             ([HsName]) ->
-                             ( ((EH.Expr,EH.PrExpr)),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ContextedExpression_Contexted :: Range ->
-                                     T_Expression ->
-                                     T_ContextItem ->
-                                     T_ContextedExpression
-sem_ContextedExpression_Contexted range_ expression_ context_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ((EH.Expr,EH.PrExpr))
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _contextIeh :: (EH.PrExpr)
-              _contextIehTy :: (EH.TyExpr)
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 259, column 9)
-              _pp =
-                  _expressionIpp >#< "<:" >#< _contextIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 550, column 9)
-              _lhsOeh =
-                  (_expressionIeh,_contextIeh)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq `Seq.union` _contextIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _contextIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _contextIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _contextIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _contextIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _contextOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _contextOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _contextOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _contextOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _contextOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ContextedExpressions ----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [(EH.Expr,EH.PrExpr)]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : ContextedExpression 
-         child tl             : ContextedExpressions 
-      alternative Nil:
--}
--- cata
-sem_ContextedExpressions :: ContextedExpressions ->
-                            T_ContextedExpressions
-sem_ContextedExpressions list =
-    (Prelude.foldr sem_ContextedExpressions_Cons sem_ContextedExpressions_Nil (Prelude.map sem_ContextedExpression list))
--- semantic domain
-type T_ContextedExpressions = UID ->
-                              FixityGam ->
-                              UID ->
-                              (Map.Map HsName [(HsName,HsName)]) ->
-                              IdDefOccGam ->
-                              HsName ->
-                              NmLev ->
-                              EHCOpts ->
-                              PatchEhNmInInstance ->
-                              (Set.Set Pragma.Pragma) ->
-                              ([HsName]) ->
-                              ( ([(EH.Expr,EH.PrExpr)]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ContextedExpressions_Cons :: T_ContextedExpression ->
-                                 T_ContextedExpressions ->
-                                 T_ContextedExpressions
-sem_ContextedExpressions_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([(EH.Expr,EH.PrExpr)])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: ((EH.Expr,EH.PrExpr))
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([(EH.Expr,EH.PrExpr)])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 511, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 544, column 36)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextedExpressions_Nil :: T_ContextedExpressions
-sem_ContextedExpressions_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([(EH.Expr,EH.PrExpr)])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 513, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 544, column 36)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ContextedPattern --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : (EH.PatExpr,EH.PrExpr)
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Contexted:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child context        : ContextItem 
-         visit 0:
-            local pp          : _
--}
--- cata
-sem_ContextedPattern :: ContextedPattern ->
-                        T_ContextedPattern
-sem_ContextedPattern (ContextedPattern_Contexted _range _pattern _context) =
-    (sem_ContextedPattern_Contexted _range (sem_Pattern _pattern) (sem_ContextItem _context))
--- semantic domain
-type T_ContextedPattern = FixityGam ->
-                          UID ->
-                          IdDefOccGam ->
-                          HsName ->
-                          NmLev ->
-                          EHCOpts ->
-                          PatchEhNmInInstance ->
-                          ([HsName]) ->
-                          ( ((EH.PatExpr,EH.PrExpr)),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ContextedPattern_Contexted :: Range ->
-                                  T_Pattern ->
-                                  T_ContextItem ->
-                                  T_ContextedPattern
-sem_ContextedPattern_Contexted range_ pattern_ context_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ((EH.PatExpr,EH.PrExpr))
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _contextIeh :: (EH.PrExpr)
-              _contextIehTy :: (EH.TyExpr)
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 372, column 9)
-              _pp =
-                  _patternIpp >#< "<:" >#< _contextIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 852, column 9)
-              _lhsOeh =
-                  (_patternIeh,_contextIeh)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq `Seq.union` _contextIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _contextIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam `gamAddGam` _contextIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _contextIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam `gamUnion` _contextIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _contextIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _contextOgUniq =
-                  _patternIgUniq
-              -- copy rule (down)
-              _contextOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _contextOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _contextOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _contextOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ContextedPatterns -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [(EH.PatExpr,EH.PrExpr)]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : ContextedPattern 
-         child tl             : ContextedPatterns 
-      alternative Nil:
--}
--- cata
-sem_ContextedPatterns :: ContextedPatterns ->
-                         T_ContextedPatterns
-sem_ContextedPatterns list =
-    (Prelude.foldr sem_ContextedPatterns_Cons sem_ContextedPatterns_Nil (Prelude.map sem_ContextedPattern list))
--- semantic domain
-type T_ContextedPatterns = FixityGam ->
-                           UID ->
-                           IdDefOccGam ->
-                           HsName ->
-                           NmLev ->
-                           EHCOpts ->
-                           PatchEhNmInInstance ->
-                           ([HsName]) ->
-                           ( ([(EH.PatExpr,EH.PrExpr)]),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ContextedPatterns_Cons :: T_ContextedPattern ->
-                              T_ContextedPatterns ->
-                              T_ContextedPatterns
-sem_ContextedPatterns_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([(EH.PatExpr,EH.PrExpr)])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: ((EH.PatExpr,EH.PrExpr))
-              _hdIerrSq :: ErrSq
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([(EH.PatExpr,EH.PrExpr)])
-              _tlIerrSq :: ErrSq
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 517, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 846, column 33)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ContextedPatterns_Nil :: T_ContextedPatterns
-sem_ContextedPatterns_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([(EH.PatExpr,EH.PrExpr)])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 519, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 846, column 33)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Declaration -------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.Decl]
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative FunctionBindings:
-         child range          : {Range}
-         child bindings       : FunctionBindings 
-         visit 0:
-            local idOccDefs   : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative PatternBinding:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child righthandside  : RightHandSide 
-         visit 0:
-            local idDefOccGamPat : _
-            local idDefOccGam : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local idOccDef    : _
-            local idOccDefsPat : _
-            local idOccDefs   : _
-            local pp          : _
-            local eh          : _
-            local caseId      : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local lUniq       : {UID}
-      alternative TypeSignature:
-         child range          : {Range}
-         child names          : {Names}
-         child type           : Type 
-         visit 0:
-            local idDefOccGam : _
-            local idDefOccGamType : _
-            local idTySigDefOccGam : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local refnames    : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local pp          : _
-            local mkEHSig     : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Fixity:
-         child range          : {Range}
-         child fixity         : {Fixity}
-         child priority       : {Maybe Int}
-         child operators      : {Names}
-         visit 0:
-            local idDefOccGam : _
-            local patchEhNmInInstance : _
-            local oprefnames  : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative FusionDeclaration:
-         child range          : {Range}
-         child fusename       : {Name}
-         visit 0:
-            local idDefOccGam : _
-            local reffusename : _
-            local idUseOccGamFusion : _
-            local errIdUse    : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local lUniq       : {UID}
-      alternative FusionConversion:
-         child range          : {Range}
-         child absname        : {Name}
-         child conname        : {Name}
-         visit 0:
-            local idDefOccGam : _
-            local refnames    : _
-            local idUseOccGamFusion : _
-            local errIdUse    : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local lUniq       : {UID}
-      alternative Empty:
-         child range          : {Range}
-         visit 0:
-            local patchEhNmInInstance : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Data:
-         child range          : {Range}
-         child context        : ContextItems 
-         child typelefthandside : TypeLeftHandSide 
-         child constructors   : Constructors 
-         child derivings      : Derivings 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGamType2 : _
-            local idDefOccGamConstrs : _
-            local idDefOccGamGener : _
-            local idDefOccGam : _
-            local idDefOccGamInside : _
-            local idGam       : _
-            local idUseOccGamVal : _
-            local errIdUseVal : _
-            local idUseOccGamClass : _
-            local errIdUseClass : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local typerefname : _
-            local idOccDef    : _
-            local idOccDefsCon : _
-            local idOccDefsFld : _
-            local generMaxRemArity : _
-            local idOccDefsGener : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local errDupIntro : _
-            local locErrs     : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehGener     : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Newtype:
-         child range          : {Range}
-         child context        : ContextItems 
-         child typelefthandside : TypeLeftHandSide 
-         child constructors   : Constructor 
-         child derivings      : Derivings 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGamType2 : _
-            local idDefOccGamConstrs : _
-            local idDefOccGamGener : _
-            local idDefOccGam : _
-            local idDefOccGamInside : _
-            local idGam       : _
-            local idUseOccGamVal : _
-            local errIdUseVal : _
-            local idUseOccGamClass : _
-            local errIdUseClass : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local typerefname : _
-            local idOccDef    : _
-            local idOccDefsCon : _
-            local idOccDefsFld : _
-            local generMaxRemArity : _
-            local idOccDefsGener : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local errNewtype  : _
-            local errDupIntro : _
-            local locErrs     : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehGener     : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative GADT:
-         child range          : {Range}
-         child context        : ContextItems 
-         child typelefthandside : TypeLeftHandSide 
-         child constructors   : Constructors 
-         child derivings      : Derivings 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGamType2 : _
-            local idDefOccGamConstrs : _
-            local idDefOccGamGener : _
-            local idDefOccGam : _
-            local idDefOccGamInside : _
-            local idGam       : _
-            local idUseOccGamVal : _
-            local errIdUseVal : _
-            local idUseOccGamClass : _
-            local errIdUseClass : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local typerefname : _
-            local idOccDef    : _
-            local idOccDefsCon : _
-            local idOccDefsFld : _
-            local generMaxRemArity : _
-            local idOccDefsGener : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local errDupIntro : _
-            local locErrs     : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehGener     : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative KindSignature:
-         child range          : {Range}
-         child names          : {Names}
-         child kind           : Kind 
-         visit 0:
-            local idDefOccGam : _
-            local idDefOccGamKind : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local refnames    : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local pp          : _
-            local mkEHSig     : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative ForeignImport:
-         child range          : {Range}
-         child callconvention : {FFIWay}
-         child safety         : {Maybe String}
-         child importname     : {Maybe String}
-         child name           : {Name}
-         child type           : Type 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGam : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local refname     : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local errFFIWay   : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local nmForParse  : _
-            local ent         : _
-            local entErrs     : _
-      alternative ForeignExport:
-         child range          : {Range}
-         child callconvention : {FFIWay}
-         child exportname     : {Maybe String}
-         child name           : {Name}
-         child type           : Type 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGam : _
-            local refname     : _
-            local idUseOccGamExport : _
-            local errIdUse    : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local exportrefname : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local errFFIWay   : _
-            local errSq       : _
-            local pp          : _
-            local nmForParse  : _
-            local ent         : _
-            local entErrs     : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Class:
-         child range          : {Range}
-         child context        : ContextItems 
-         child typelefthandside : TypeLeftHandSide 
-         child dependencies   : FunctionalDependencies 
-         child where          : MaybeDeclarations 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGamSigAsVar : _
-            local idDefOccGam : _
-            local idDefOccGamInside : _
-            local idGam       : _
-            local idDefOccGamInstForClass : _
-            local idUseOccGamExtra : _
-            local errIdUseExtra : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local ehReorderedDecls : _
-            local errReorder  : _
-            local patchEhNmInInstance : _
-            local instancerefname : _
-            local classrefname : _
-            local extranames  : _
-            local idOccDef    : _
-            local idOccDefVal : _
-            local idOccDefsSig : _
-            local idOccDefs   : _
-            local instancename : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehInst      : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local mbPrevInstancename : _
-            local generDerivInfoL : _
-            local lUniq       : {UID}
-      alternative Instance:
-         child range          : {Range}
-         child instVariant    : {InstVariant}
-         child maybeinstancename : {MaybeName}
-         child useimplicitly  : {Bool}
-         child context        : ContextItems 
-         child type           : Type 
-         child where          : MaybeDeclarations 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGam : _
-            local idGam       : _
-            local classrefname : _
-            local idUseOccGamInst : _
-            local errIdUse    : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local ehReorderedDecls : _
-            local errReorder  : _
-            local instancerefname : _
-            local idOccDef    : _
-            local idOccDefVal : _
-            local idOccDefs   : _
-            local instancename : _
-            local nmLev       : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local mbPrevInstancename : _
-            local lUniq       : {UID}
-      alternative InstanceUseImplicitly:
-         child range          : {Range}
-         child expression     : Expression 
-         child name           : {Name}
-         child types          : Types 
-         visit 0:
-            local idDefOccGam : _
-            local classrefname : _
-            local idUseOccGamInst : _
-            local errIdUse    : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local instancerefname : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local instancename : _
-            local nmLev       : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local mbPrevInstancename : _
-            local lUniq       : {UID}
-      alternative Default:
-         child range          : {Range}
-         child name           : {MaybeName}
-         child types          : Types 
-         visit 0:
-            local idDefOccGam : _
-            local classrefname : _
-            local classrefnames : _
-            local idUseOccGamDflt : _
-            local errIdUse    : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local defaultname : _
-            local nmLev       : _
-            local errSq       : _
-            local pp          : _
-            local ignoredecl  : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local lUniq       : {UID}
-      alternative Type:
-         child range          : {Range}
-         child typelefthandside : TypeLeftHandSide 
-         child type           : Type 
-         visit 0:
-            local idDefOccGamType : _
-            local idDefOccGam : _
-            local idDefOccGamInside : _
-            local idGam       : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local patchEhNmInInstance : _
-            local typerefname : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Pragma:
-         child range          : {Range}
-         child pragma         : Pragma 
-         visit 0:
-            local patchEhNmInInstance : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Module:
-         child range          : {Range}
-         child name           : {MaybeName}
-         child exports        : MaybeExports 
-         visit 0:
-            local patchEhNmInInstance : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-            local isMainMod   : _
-            local isTopMod    : _
--}
--- cata
-sem_Declaration :: Declaration ->
-                   T_Declaration
-sem_Declaration (Declaration_FunctionBindings _range _bindings) =
-    (sem_Declaration_FunctionBindings _range (sem_FunctionBindings _bindings))
-sem_Declaration (Declaration_PatternBinding _range _pattern _righthandside) =
-    (sem_Declaration_PatternBinding _range (sem_Pattern _pattern) (sem_RightHandSide _righthandside))
-sem_Declaration (Declaration_TypeSignature _range _names _type) =
-    (sem_Declaration_TypeSignature _range _names (sem_Type _type))
-sem_Declaration (Declaration_Fixity _range _fixity _priority _operators) =
-    (sem_Declaration_Fixity _range _fixity _priority _operators)
-sem_Declaration (Declaration_FusionDeclaration _range _fusename) =
-    (sem_Declaration_FusionDeclaration _range _fusename)
-sem_Declaration (Declaration_FusionConversion _range _absname _conname) =
-    (sem_Declaration_FusionConversion _range _absname _conname)
-sem_Declaration (Declaration_Empty _range) =
-    (sem_Declaration_Empty _range)
-sem_Declaration (Declaration_Data _range _context _typelefthandside _constructors _derivings) =
-    (sem_Declaration_Data _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructors _constructors) (sem_Derivings _derivings))
-sem_Declaration (Declaration_Newtype _range _context _typelefthandside _constructors _derivings) =
-    (sem_Declaration_Newtype _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructor _constructors) (sem_Derivings _derivings))
-sem_Declaration (Declaration_GADT _range _context _typelefthandside _constructors _derivings) =
-    (sem_Declaration_GADT _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructors _constructors) (sem_Derivings _derivings))
-sem_Declaration (Declaration_KindSignature _range _names _kind) =
-    (sem_Declaration_KindSignature _range _names (sem_Kind _kind))
-sem_Declaration (Declaration_ForeignImport _range _callconvention _safety _importname _name _type) =
-    (sem_Declaration_ForeignImport _range _callconvention _safety _importname _name (sem_Type _type))
-sem_Declaration (Declaration_ForeignExport _range _callconvention _exportname _name _type) =
-    (sem_Declaration_ForeignExport _range _callconvention _exportname _name (sem_Type _type))
-sem_Declaration (Declaration_Class _range _context _typelefthandside _dependencies _where) =
-    (sem_Declaration_Class _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_FunctionalDependencies _dependencies) (sem_MaybeDeclarations _where))
-sem_Declaration (Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly _context _type _where) =
-    (sem_Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly (sem_ContextItems _context) (sem_Type _type) (sem_MaybeDeclarations _where))
-sem_Declaration (Declaration_InstanceUseImplicitly _range _expression _name _types) =
-    (sem_Declaration_InstanceUseImplicitly _range (sem_Expression _expression) _name (sem_Types _types))
-sem_Declaration (Declaration_Default _range _name _types) =
-    (sem_Declaration_Default _range _name (sem_Types _types))
-sem_Declaration (Declaration_Type _range _typelefthandside _type) =
-    (sem_Declaration_Type _range (sem_TypeLeftHandSide _typelefthandside) (sem_Type _type))
-sem_Declaration (Declaration_Pragma _range _pragma) =
-    (sem_Declaration_Pragma _range (sem_Pragma _pragma))
-sem_Declaration (Declaration_Module _range _name _exports) =
-    (sem_Declaration_Module _range _name (sem_MaybeExports _exports))
--- semantic domain
-type T_Declaration = UID ->
-                     FixityGam ->
-                     UID ->
-                     (Map.Map HsName [(HsName,HsName)]) ->
-                     IdDefOccGam ->
-                     HsName ->
-                     NmLev ->
-                     EHCOpts ->
-                     PatchEhNmInInstance ->
-                     (Set.Set Pragma.Pragma) ->
-                     ([HsName]) ->
-                     ( ([EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Declaration_FunctionBindings :: Range ->
-                                    T_FunctionBindings ->
-                                    T_Declaration
-sem_Declaration_FunctionBindings range_ bindings_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _bindingsOcaseId :: UID
-              _bindingsOfixityGam :: FixityGam
-              _bindingsOgUniq :: UID
-              _bindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _bindingsOidGam :: IdDefOccGam
-              _bindingsOmoduleNm :: HsName
-              _bindingsOnmLev :: NmLev
-              _bindingsOopts :: EHCOpts
-              _bindingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _bindingsOpragmas :: (Set.Set Pragma.Pragma)
-              _bindingsOtopInstanceNmL :: ([HsName])
-              _bindingsIeh :: ([EH.Decl])
-              _bindingsIerrSq :: ErrSq
-              _bindingsIgUniq :: UID
-              _bindingsIidDefOccGam :: IdDefOccGam
-              _bindingsIidDpdMp :: IdDpdMp
-              _bindingsIidOccDefs :: ([IdOcc])
-              _bindingsIidUseOccGam :: IdUseOccGam
-              _bindingsIpp :: PP_Doc
-              _bindingsIppWrap :: (PP_Doc -> PP_Doc)
-              _bindingsItopInstanceNmL :: ([HsName])
-              _bindingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 115, column 9)
-              _idOccDefs =
-                  _bindingsIidOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 76, column 9)
-              _lhsOeh =
-                  _bindingsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _bindingsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _bindingsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _bindingsIidDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _bindingsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _bindingsIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _bindingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _bindingsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _bindingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _bindingsItopInstanceNmL
-              -- copy rule (down)
-              _bindingsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _bindingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _bindingsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _bindingsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _bindingsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _bindingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _bindingsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _bindingsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _bindingsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _bindingsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _bindingsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _bindingsIeh,_bindingsIerrSq,_bindingsIgUniq,_bindingsIidDefOccGam,_bindingsIidDpdMp,_bindingsIidOccDefs,_bindingsIidUseOccGam,_bindingsIpp,_bindingsIppWrap,_bindingsItopInstanceNmL,_bindingsIundefOccGam) =
-                  bindings_ _bindingsOcaseId _bindingsOfixityGam _bindingsOgUniq _bindingsOgenerDerivMp _bindingsOidGam _bindingsOmoduleNm _bindingsOnmLev _bindingsOopts _bindingsOpatchEhNmInInstance _bindingsOpragmas _bindingsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_PatternBinding :: Range ->
-                                  T_Pattern ->
-                                  T_RightHandSide ->
-                                  T_Declaration
-sem_Declaration_PatternBinding range_ pattern_ righthandside_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _righthandsideOsepPP :: PP_Doc
-              _lhsOeh :: ([EH.Decl])
-              _righthandsideOmustBeMono :: Bool
-              _patternOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _righthandsideOcaseId :: UID
-              _righthandsideOfixityGam :: FixityGam
-              _righthandsideOgUniq :: UID
-              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _righthandsideOidGam :: IdDefOccGam
-              _righthandsideOmoduleNm :: HsName
-              _righthandsideOnmLev :: NmLev
-              _righthandsideOopts :: EHCOpts
-              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
-              _righthandsideOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _righthandsideIeh :: (EH.Expr)
-              _righthandsideIerrSq :: ErrSq
-              _righthandsideIgUniq :: UID
-              _righthandsideIidUseOccGam :: IdUseOccGam
-              _righthandsideIpp :: PP_Doc
-              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _righthandsideItopInstanceNmL :: ([HsName])
-              _righthandsideIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 140, column 9)
-              _idDefOccGamPat =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Pat _eh) _idOccDefsPat
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 140, column 9)
-              _idDefOccGam =
-                  _idDefOccGamPat `gamAddGam` _patternIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 746, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                       (gamUnions [_patternIidUseOccGam,_righthandsideIidUseOccGam])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 746, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-                  `idDpdMpUnion`
-                  idToOccL2DpdMp [_idOccDef] (gamToAssocL _patternIidDefOccGam)
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _patternIidDefOccGam [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 754, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_righthandsideIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1074, column 9)
-              _righthandsideOpatchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
-              _idOccDef =
-                  IdOcc (maybe (mkHNm _lUniq) id _patternImbTopRefname) IdOcc_Pat
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
-              _idOccDefsPat =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
-              _idOccDefs =
-                  _patternIidOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 29, column 9)
-              _pp =
-                  _patternIpp >#< _righthandsideIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 30, column 9)
-              _righthandsideOsepPP =
-                  pp "="
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 78, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_Val _patternIeh _righthandsideIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 79, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 877, column 9)
-              _caseId =
-                  _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 270, column 9)
-              _righthandsideOmustBeMono =
-                  not _patternIisVar
-              -- -- generated by the unique rule mechanism.
-              (_patternOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq `Seq.union` _righthandsideIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _righthandsideIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _righthandsideIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _righthandsideItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _righthandsideOcaseId =
-                  _caseId
-              -- copy rule (down)
-              _righthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _righthandsideOgUniq =
-                  _patternIgUniq
-              -- copy rule (down)
-              _righthandsideOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _righthandsideOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _righthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _righthandsideOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _righthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _righthandsideOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _righthandsideOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideIundefOccGam) =
-                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_TypeSignature :: Range ->
-                                 Names ->
-                                 T_Type ->
-                                 T_Declaration
-sem_Declaration_TypeSignature range_ names_ type_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _typeOidGam :: IdDefOccGam
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 134, column 9)
-              _idDefOccGam =
-                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Sig (_mkEHSig (ioccNm o))) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 134, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _nmLev range_ _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 274, column 9)
-              _idTySigDefOccGam =
-                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Var) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
-              _typeOidGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 741, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 741, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp (gamKeys _idDefOccGam) _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 744, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_typeIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 14, column 9)
-              _refnames =
-                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
-              _idOccDefs =
-                  [ IdOcc n IdOcc_Val | n <- _refnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 17, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 33, column 9)
-              _pp =
-                  ppCommas' names_ >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 81, column 9)
-              _mkEHSig =
-                  \n -> rngLift range_ EH.Decl_TySig n _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 82, column 9)
-              _lhsOeh =
-                  map _mkEHSig _refnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _idTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typeOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Fixity :: Range ->
-                          Fixity ->
-                          (Maybe Int) ->
-                          Names ->
-                          T_Declaration
-sem_Declaration_Fixity range_ fixity_ priority_ operators_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOgathFixityGam :: FixityGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 138, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Fix [ IdOcc n IdOcc_Val | n <- _oprefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 12, column 9)
-              _oprefnames =
-                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) operators_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 35, column 9)
-              _pp =
-                  fixity_ >#< maybe empty pp priority_ >#< ppCommas' operators_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 16, column 9)
-              _lhsOgathFixityGam =
-                  let p = maybe (fgiPrio defaultFixityGamInfo) id priority_
-                      mk n = (n,FixityGamInfo p fixity_)
-                  in  assocLToGam $ map mk $ _oprefnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 84, column 9)
-              _lhsOeh =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_FusionDeclaration :: Range ->
-                                     Name ->
-                                     T_Declaration
-sem_Declaration_FusionDeclaration range_ fusename_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 201, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Fusion _eh) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 682, column 29)
-              (_reffusename,_,_idUseOccGamFusion,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [fusename_] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev _idUseOccGamFusion
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 835, column 9)
-              _lhsOundefOccGam =
-                  _undefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
-              _idOccDef =
-                  IdOcc (mkHNm _lUniq) IdOcc_Fusion
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 158, column 17)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 71, column 9)
-              _pp =
-                  "fuse" >#< fusename_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 99, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_FusionDecl _reffusename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 103, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_lhsOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_FusionConversion :: Range ->
-                                    Name ->
-                                    Name ->
-                                    T_Declaration
-sem_Declaration_FusionConversion range_ absname_ conname_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 203, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Fusion_Conv _eh) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 685, column 29)
-              (_,_refnames,_idUseOccGamFusion,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [conname_,absname_] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev _idUseOccGamFusion
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 835, column 9)
-              _lhsOundefOccGam =
-                  _undefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
-              _idOccDef =
-                  IdOcc (mkHNm _lUniq) IdOcc_Fusion
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 158, column 17)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 73, column 9)
-              _pp =
-                  "convert" >#< ppCommas [conname_, absname_]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 101, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_FusionConv (_refnames !! 0) (_refnames !! 1)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 103, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_lhsOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Empty :: Range ->
-                         T_Declaration
-sem_Declaration_Empty range_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 37, column 9)
-              _pp =
-                  empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 86, column 9)
-              _lhsOeh =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Data :: Range ->
-                        T_ContextItems ->
-                        T_TypeLeftHandSide ->
-                        T_Constructors ->
-                        T_Derivings ->
-                        T_Declaration
-sem_Declaration_Data range_ context_ typelefthandside_ constructors_ derivings_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOneedsError :: Bool
-              _derivingsOidOccDefData :: IdOcc
-              _lhsOeh :: ([EH.Decl])
-              _derivingsOehDataTyExpr :: (EH.TyExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _typelefthandsideOfixityGam :: FixityGam
-              _typelefthandsideOgUniq :: UID
-              _typelefthandsideOidGam :: IdDefOccGam
-              _typelefthandsideOmoduleNm :: HsName
-              _typelefthandsideOnmLev :: NmLev
-              _typelefthandsideOopts :: EHCOpts
-              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typelefthandsideOtopInstanceNmL :: ([HsName])
-              _constructorsOfixityGam :: FixityGam
-              _constructorsOgUniq :: UID
-              _constructorsOidGam :: IdDefOccGam
-              _constructorsOmoduleNm :: HsName
-              _constructorsOnmLev :: NmLev
-              _constructorsOopts :: EHCOpts
-              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _constructorsOtopInstanceNmL :: ([HsName])
-              _derivingsOfixityGam :: FixityGam
-              _derivingsOgUniq :: UID
-              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _derivingsOidGam :: IdDefOccGam
-              _derivingsOmoduleNm :: HsName
-              _derivingsOnmLev :: NmLev
-              _derivingsOopts :: EHCOpts
-              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
-              _derivingsOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _typelefthandsideIeh :: ([EH.TyVar])
-              _typelefthandsideIerrSq :: ErrSq
-              _typelefthandsideIfreeTvarS :: HsNameS
-              _typelefthandsideIgUniq :: UID
-              _typelefthandsideIidDefOccGam :: IdDefOccGam
-              _typelefthandsideIidOccDefs :: ([IdOcc])
-              _typelefthandsideIidUseOccGam :: IdUseOccGam
-              _typelefthandsideIname :: Name
-              _typelefthandsideIpp :: PP_Doc
-              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _typelefthandsideIrange :: Range
-              _typelefthandsideItopInstanceNmL :: ([HsName])
-              _typelefthandsideItypevariables :: Names
-              _typelefthandsideIundefOccGam :: IdUseOccGam
-              _constructorsIconAndFldrefnames :: (AssocL Name Names)
-              _constructorsIconrefnames :: Names
-              _constructorsIeh :: ([EH.DataConstr])
-              _constructorsIerrSq :: ErrSq
-              _constructorsIfreeTvarS :: HsNameS
-              _constructorsIgUniq :: UID
-              _constructorsIhasFlds :: Bool
-              _constructorsIidUseOccGam :: IdUseOccGam
-              _constructorsIpp :: PP_Doc
-              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
-              _constructorsItopInstanceNmL :: ([HsName])
-              _constructorsIundefOccGam :: IdUseOccGam
-              _derivingsIerrSq :: ErrSq
-              _derivingsIgUniq :: UID
-              _derivingsIgathFixityGam :: FixityGam
-              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _derivingsIidDefOccGam :: IdDefOccGam
-              _derivingsIidDpdMp :: IdDpdMp
-              _derivingsIidOccDefs :: ([IdOcc])
-              _derivingsIidTySigDefOccGam :: IdDefOccGam
-              _derivingsIidUseOccGam :: IdUseOccGam
-              _derivingsIneedsError :: Bool
-              _derivingsIpp :: PP_Doc
-              _derivingsIppL :: ([PP_Doc])
-              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
-              _derivingsItopInstanceNmL :: ([HsName])
-              _derivingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamType2 =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamConstrs =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
-                  `gamAddGam`
-                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
-                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-                                )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamGener =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _ehGener) _idOccDefsGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
-                  `gamAddGam` _idDefOccGamConstrs
-                  `gamAddGam` _derivingsIidDefOccGam
-                  `gamAddGam` _idDefOccGamGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 662, column 29)
-              (_,_,_idUseOccGamVal,_errIdUseVal) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 675, column 29)
-              (_,_,_idUseOccGamClass,_errIdUseClass) =
-                  mkUseOccGam _lhsIopts _lhsIidGam
-                              (if ehcOptGenGenerics _lhsIopts then builtinGenerClassNmL else [])
-                              IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 697, column 9)
-              _lhsOneedsError =
-                  _constructorsIhasFlds
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions
-                          [ _constructorsIidUseOccGam
-                          , _idUseOccGamVal
-                          , _contextIidUseOccGam
-                          , _idUseOccGamClass
-                          ]
-                      )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
-                  `idDpdMpUnion`
-                  _derivingsIidDpdMp
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 873, column 9)
-              _derivingsOidOccDefData =
-                  _idOccDef
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
-              _typerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDef =
-                  IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsCon =
-                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsFld =
-                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _generMaxRemArity =
-                  length _typelefthandsideItypevariables `min` 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsGener =
-                  if ehcOptGenGenerics _lhsIopts
-                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-                  ++ _idOccDefsCon
-                  ++ _idOccDefsFld
-                  ++ _idOccDefsGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamType2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 72, column 9)
-              _locErrs =
-                  Seq.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
-              _errSq =
-                  Seq.unions [ _locErrs
-                             , _typelefthandsideIerrSq
-                             , Seq.fromList _errDupIntro
-                             , Seq.fromList _errIdUseVal
-                             , _constructorsIerrSq
-                             , _contextIerrSq
-                             , _derivingsIerrSq
-                             , Seq.fromList _errIdUseClass
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 39, column 9)
-              _pp =
-                  "data" >#< _typelefthandsideIpp
-                         >#< "=" >#< _constructorsIpp
-                         >-< ppParensCommas _derivingsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 89, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_Data False _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) _constructorsIeh
-                          (if ehcOptGenGenerics _lhsIopts then Just _generMaxRemArity else Nothing)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 91, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
-              _ehGener =
-                  rngLift range_ EH.Decl_GenerRep _generMaxRemArity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 164, column 9)
-              _derivingsOehDataTyExpr =
-                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _derivingsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _derivingsIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _derivingsIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _undefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _derivingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _derivingsItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _contextOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _contextOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _contextOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _contextOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typelefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typelefthandsideOgUniq =
-                  _contextIgUniq
-              -- copy rule (from local)
-              _typelefthandsideOidGam =
-                  _idGam
-              -- copy rule (down)
-              _typelefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _typelefthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typelefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typelefthandsideOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _typelefthandsideOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _constructorsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _constructorsOgUniq =
-                  _typelefthandsideIgUniq
-              -- copy rule (from local)
-              _constructorsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _constructorsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _constructorsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _constructorsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _constructorsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _constructorsOtopInstanceNmL =
-                  _typelefthandsideItopInstanceNmL
-              -- copy rule (down)
-              _derivingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _derivingsOgUniq =
-                  _constructorsIgUniq
-              -- copy rule (down)
-              _derivingsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _derivingsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _derivingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _derivingsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _derivingsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _derivingsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _derivingsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _derivingsOtopInstanceNmL =
-                  _constructorsItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
-                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
-              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsIundefOccGam) =
-                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL
-              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidOccDefs,_derivingsIidTySigDefOccGam,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsIundefOccGam) =
-                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefData _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Newtype :: Range ->
-                           T_ContextItems ->
-                           T_TypeLeftHandSide ->
-                           T_Constructor ->
-                           T_Derivings ->
-                           T_Declaration
-sem_Declaration_Newtype range_ context_ typelefthandside_ constructors_ derivings_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _derivingsOidOccDefData :: IdOcc
-              _lhsOeh :: ([EH.Decl])
-              _derivingsOehDataTyExpr :: (EH.TyExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _typelefthandsideOfixityGam :: FixityGam
-              _typelefthandsideOgUniq :: UID
-              _typelefthandsideOidGam :: IdDefOccGam
-              _typelefthandsideOmoduleNm :: HsName
-              _typelefthandsideOnmLev :: NmLev
-              _typelefthandsideOopts :: EHCOpts
-              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typelefthandsideOtopInstanceNmL :: ([HsName])
-              _constructorsOfixityGam :: FixityGam
-              _constructorsOgUniq :: UID
-              _constructorsOidGam :: IdDefOccGam
-              _constructorsOmoduleNm :: HsName
-              _constructorsOnmLev :: NmLev
-              _constructorsOopts :: EHCOpts
-              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _constructorsOtopInstanceNmL :: ([HsName])
-              _derivingsOfixityGam :: FixityGam
-              _derivingsOgUniq :: UID
-              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _derivingsOidGam :: IdDefOccGam
-              _derivingsOmoduleNm :: HsName
-              _derivingsOnmLev :: NmLev
-              _derivingsOopts :: EHCOpts
-              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
-              _derivingsOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _typelefthandsideIeh :: ([EH.TyVar])
-              _typelefthandsideIerrSq :: ErrSq
-              _typelefthandsideIfreeTvarS :: HsNameS
-              _typelefthandsideIgUniq :: UID
-              _typelefthandsideIidDefOccGam :: IdDefOccGam
-              _typelefthandsideIidOccDefs :: ([IdOcc])
-              _typelefthandsideIidUseOccGam :: IdUseOccGam
-              _typelefthandsideIname :: Name
-              _typelefthandsideIpp :: PP_Doc
-              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _typelefthandsideIrange :: Range
-              _typelefthandsideItopInstanceNmL :: ([HsName])
-              _typelefthandsideItypevariables :: Names
-              _typelefthandsideIundefOccGam :: IdUseOccGam
-              _constructorsIconAndFldrefnames :: (AssocL Name Names)
-              _constructorsIconrefnames :: Names
-              _constructorsIeh :: (EH.DataConstr)
-              _constructorsIerrSq :: ErrSq
-              _constructorsIfreeTvarS :: HsNameS
-              _constructorsIgUniq :: UID
-              _constructorsIhasFlds :: Bool
-              _constructorsIidUseOccGam :: IdUseOccGam
-              _constructorsIpp :: PP_Doc
-              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
-              _constructorsItopInstanceNmL :: ([HsName])
-              _constructorsIundefOccGam :: IdUseOccGam
-              _derivingsIerrSq :: ErrSq
-              _derivingsIgUniq :: UID
-              _derivingsIgathFixityGam :: FixityGam
-              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _derivingsIidDefOccGam :: IdDefOccGam
-              _derivingsIidDpdMp :: IdDpdMp
-              _derivingsIidOccDefs :: ([IdOcc])
-              _derivingsIidTySigDefOccGam :: IdDefOccGam
-              _derivingsIidUseOccGam :: IdUseOccGam
-              _derivingsIneedsError :: Bool
-              _derivingsIpp :: PP_Doc
-              _derivingsIppL :: ([PP_Doc])
-              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
-              _derivingsItopInstanceNmL :: ([HsName])
-              _derivingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamType2 =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamConstrs =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
-                  `gamAddGam`
-                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
-                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-                                )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamGener =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _ehGener) _idOccDefsGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
-                  `gamAddGam` _idDefOccGamConstrs
-                  `gamAddGam` _derivingsIidDefOccGam
-                  `gamAddGam` _idDefOccGamGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 665, column 29)
-              (_,_,_idUseOccGamVal,_errIdUseVal) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnPrelId] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 675, column 29)
-              (_,_,_idUseOccGamClass,_errIdUseClass) =
-                  mkUseOccGam _lhsIopts _lhsIidGam
-                              (if ehcOptGenGenerics _lhsIopts then builtinGenerClassNmL else [])
-                              IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions
-                          [ _constructorsIidUseOccGam
-                          , _idUseOccGamVal
-                          , _contextIidUseOccGam
-                          , _idUseOccGamClass
-                          ]
-                      )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
-                  `idDpdMpUnion`
-                  _derivingsIidDpdMp
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 873, column 9)
-              _derivingsOidOccDefData =
-                  _idOccDef
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
-              _typerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDef =
-                  IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsCon =
-                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsFld =
-                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _generMaxRemArity =
-                  length _typelefthandsideItypevariables `min` 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsGener =
-                  if ehcOptGenGenerics _lhsIopts
-                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-                  ++ _idOccDefsCon
-                  ++ _idOccDefsFld
-                  ++ _idOccDefsGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 30, column 9)
-              _errNewtype =
-                  case _constructorsIeh of
-                    EH.DataConstr_Constr _
-                                         _
-                                         _
-                                         [_]
-                                         _
-                      -> []
-                    _ -> [rngLift range_ Err_Newtype _typelefthandsideIname]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamType2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 74, column 9)
-              _locErrs =
-                  Seq.fromList _errNewtype
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
-              _errSq =
-                  Seq.unions [ _locErrs
-                             , _typelefthandsideIerrSq
-                             , Seq.fromList _errDupIntro
-                             , Seq.fromList _errIdUseVal
-                             , _constructorsIerrSq
-                             , _contextIerrSq
-                             , _derivingsIerrSq
-                             , Seq.fromList _errIdUseClass
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 43, column 9)
-              _pp =
-                  "newtype" >#< _typelefthandsideIpp
-                            >#< "=" >#< _constructorsIpp
-                            >-< ppParensCommas _derivingsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 93, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_Data True _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) [_constructorsIeh]
-                          (if ehcOptGenGenerics _lhsIopts then Just _generMaxRemArity else Nothing)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 95, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
-              _ehGener =
-                  rngLift range_ EH.Decl_GenerRep _generMaxRemArity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 164, column 9)
-              _derivingsOehDataTyExpr =
-                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _derivingsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _derivingsIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _derivingsIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _derivingsIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _undefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _derivingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _derivingsItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _contextOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _contextOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _contextOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _contextOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typelefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typelefthandsideOgUniq =
-                  _contextIgUniq
-              -- copy rule (from local)
-              _typelefthandsideOidGam =
-                  _idGam
-              -- copy rule (down)
-              _typelefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _typelefthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typelefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typelefthandsideOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _typelefthandsideOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _constructorsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _constructorsOgUniq =
-                  _typelefthandsideIgUniq
-              -- copy rule (from local)
-              _constructorsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _constructorsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _constructorsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _constructorsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _constructorsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _constructorsOtopInstanceNmL =
-                  _typelefthandsideItopInstanceNmL
-              -- copy rule (down)
-              _derivingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _derivingsOgUniq =
-                  _constructorsIgUniq
-              -- copy rule (down)
-              _derivingsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _derivingsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _derivingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _derivingsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _derivingsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _derivingsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _derivingsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _derivingsOtopInstanceNmL =
-                  _constructorsItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
-                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
-              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsIundefOccGam) =
-                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL
-              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidOccDefs,_derivingsIidTySigDefOccGam,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsIundefOccGam) =
-                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefData _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_GADT :: Range ->
-                        T_ContextItems ->
-                        T_TypeLeftHandSide ->
-                        T_Constructors ->
-                        T_Derivings ->
-                        T_Declaration
-sem_Declaration_GADT range_ context_ typelefthandside_ constructors_ derivings_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _derivingsOidOccDefData :: IdOcc
-              _lhsOeh :: ([EH.Decl])
-              _derivingsOehDataTyExpr :: (EH.TyExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _typelefthandsideOfixityGam :: FixityGam
-              _typelefthandsideOgUniq :: UID
-              _typelefthandsideOidGam :: IdDefOccGam
-              _typelefthandsideOmoduleNm :: HsName
-              _typelefthandsideOnmLev :: NmLev
-              _typelefthandsideOopts :: EHCOpts
-              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typelefthandsideOtopInstanceNmL :: ([HsName])
-              _constructorsOfixityGam :: FixityGam
-              _constructorsOgUniq :: UID
-              _constructorsOidGam :: IdDefOccGam
-              _constructorsOmoduleNm :: HsName
-              _constructorsOnmLev :: NmLev
-              _constructorsOopts :: EHCOpts
-              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _constructorsOtopInstanceNmL :: ([HsName])
-              _derivingsOfixityGam :: FixityGam
-              _derivingsOgUniq :: UID
-              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _derivingsOidGam :: IdDefOccGam
-              _derivingsOmoduleNm :: HsName
-              _derivingsOnmLev :: NmLev
-              _derivingsOopts :: EHCOpts
-              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
-              _derivingsOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _typelefthandsideIeh :: ([EH.TyVar])
-              _typelefthandsideIerrSq :: ErrSq
-              _typelefthandsideIfreeTvarS :: HsNameS
-              _typelefthandsideIgUniq :: UID
-              _typelefthandsideIidDefOccGam :: IdDefOccGam
-              _typelefthandsideIidOccDefs :: ([IdOcc])
-              _typelefthandsideIidUseOccGam :: IdUseOccGam
-              _typelefthandsideIname :: Name
-              _typelefthandsideIpp :: PP_Doc
-              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _typelefthandsideIrange :: Range
-              _typelefthandsideItopInstanceNmL :: ([HsName])
-              _typelefthandsideItypevariables :: Names
-              _typelefthandsideIundefOccGam :: IdUseOccGam
-              _constructorsIconAndFldrefnames :: (AssocL Name Names)
-              _constructorsIconrefnames :: Names
-              _constructorsIeh :: ([EH.DataConstr])
-              _constructorsIerrSq :: ErrSq
-              _constructorsIfreeTvarS :: HsNameS
-              _constructorsIgUniq :: UID
-              _constructorsIhasFlds :: Bool
-              _constructorsIidUseOccGam :: IdUseOccGam
-              _constructorsIpp :: PP_Doc
-              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
-              _constructorsItopInstanceNmL :: ([HsName])
-              _constructorsIundefOccGam :: IdUseOccGam
-              _derivingsIerrSq :: ErrSq
-              _derivingsIgUniq :: UID
-              _derivingsIgathFixityGam :: FixityGam
-              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _derivingsIidDefOccGam :: IdDefOccGam
-              _derivingsIidDpdMp :: IdDpdMp
-              _derivingsIidOccDefs :: ([IdOcc])
-              _derivingsIidTySigDefOccGam :: IdDefOccGam
-              _derivingsIidUseOccGam :: IdUseOccGam
-              _derivingsIneedsError :: Bool
-              _derivingsIpp :: PP_Doc
-              _derivingsIppL :: ([PP_Doc])
-              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
-              _derivingsItopInstanceNmL :: ([HsName])
-              _derivingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamType2 =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamConstrs =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
-                  `gamAddGam`
-                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
-                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-                                )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGamGener =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _ehGener) _idOccDefsGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
-                  `gamAddGam` _idDefOccGamConstrs
-                  `gamAddGam` _derivingsIidDefOccGam
-                  `gamAddGam` _idDefOccGamGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 662, column 29)
-              (_,_,_idUseOccGamVal,_errIdUseVal) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 675, column 29)
-              (_,_,_idUseOccGamClass,_errIdUseClass) =
-                  mkUseOccGam _lhsIopts _lhsIidGam
-                              (if ehcOptGenGenerics _lhsIopts then builtinGenerClassNmL else [])
-                              IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions
-                          [ _constructorsIidUseOccGam
-                          , _idUseOccGamVal
-                          , _contextIidUseOccGam
-                          , _idUseOccGamClass
-                          ]
-                      )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
-                  `idDpdMpUnion`
-                  _derivingsIidDpdMp
-                  `idDpdMpUnion`
-                  idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 873, column 9)
-              _derivingsOidOccDefData =
-                  _idOccDef
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
-              _typerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDef =
-                  IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsCon =
-                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsFld =
-                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _generMaxRemArity =
-                  length _typelefthandsideItypevariables `min` 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsGener =
-                  if ehcOptGenGenerics _lhsIopts
-                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-                  ++ _idOccDefsCon
-                  ++ _idOccDefsFld
-                  ++ _idOccDefsGener
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamType2
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 72, column 9)
-              _locErrs =
-                  Seq.empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
-              _errSq =
-                  Seq.unions [ _locErrs
-                             , _typelefthandsideIerrSq
-                             , Seq.fromList _errDupIntro
-                             , Seq.fromList _errIdUseVal
-                             , _constructorsIerrSq
-                             , _contextIerrSq
-                             , _derivingsIerrSq
-                             , Seq.fromList _errIdUseClass
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 47, column 9)
-              _pp =
-                  "data" >#< _typelefthandsideIpp
-                            >#< "where"
-                            >-< indent 2 (_constructorsIpp
-                                          >-< ppParensCommas _derivingsIppL
-                                         )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 89, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_Data False _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) _constructorsIeh
-                          (if ehcOptGenGenerics _lhsIopts then Just _generMaxRemArity else Nothing)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 91, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
-              _ehGener =
-                  rngLift range_ EH.Decl_GenerRep _generMaxRemArity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 164, column 9)
-              _derivingsOehDataTyExpr =
-                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _derivingsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _derivingsIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _derivingsIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _derivingsIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _undefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _derivingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _derivingsItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _contextOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _contextOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _contextOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _contextOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typelefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typelefthandsideOgUniq =
-                  _contextIgUniq
-              -- copy rule (from local)
-              _typelefthandsideOidGam =
-                  _idGam
-              -- copy rule (down)
-              _typelefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _typelefthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typelefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typelefthandsideOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _typelefthandsideOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _constructorsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _constructorsOgUniq =
-                  _typelefthandsideIgUniq
-              -- copy rule (from local)
-              _constructorsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _constructorsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _constructorsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _constructorsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _constructorsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _constructorsOtopInstanceNmL =
-                  _typelefthandsideItopInstanceNmL
-              -- copy rule (down)
-              _derivingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _derivingsOgUniq =
-                  _constructorsIgUniq
-              -- copy rule (down)
-              _derivingsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _derivingsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _derivingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _derivingsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _derivingsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _derivingsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _derivingsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _derivingsOtopInstanceNmL =
-                  _constructorsItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
-                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
-              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsIundefOccGam) =
-                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL
-              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidOccDefs,_derivingsIidTySigDefOccGam,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsIundefOccGam) =
-                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefData _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_KindSignature :: Range ->
-                                 Names ->
-                                 T_Kind ->
-                                 T_Declaration
-sem_Declaration_KindSignature range_ names_ kind_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _kindOidGam :: IdDefOccGam
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _kindOgUniq :: UID
-              _kindOnmLev :: NmLev
-              _kindOopts :: EHCOpts
-              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
-              _kindOtopInstanceNmL :: ([HsName])
-              _kindIconNm :: Name
-              _kindIeh :: (EH.KiExpr)
-              _kindIerrSq :: ErrSq
-              _kindIfreeTvarS :: HsNameS
-              _kindIgUniq :: UID
-              _kindIidUseOccGam :: IdUseOccGam
-              _kindIpp :: PP_Doc
-              _kindIppWrap :: (PP_Doc -> PP_Doc)
-              _kindItopInstanceNmL :: ([HsName])
-              _kindIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 163, column 9)
-              _idDefOccGam =
-                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Type_Sig (_mkEHSig (ioccNm o))) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 163, column 9)
-              _idDefOccGamKind =
-                  kvarS2IdDefOccGam _nmLev range_ _kindIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 372, column 9)
-              _kindOidGam =
-                  gamUnion _idDefOccGamKind _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 775, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev _kindIidUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 775, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp (gamKeys _idDefOccGam) _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 778, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_kindIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 16, column 9)
-              _refnames =
-                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 137, column 9)
-              _idOccDefs =
-                  [ IdOcc n IdOcc_Type | n <- _refnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 22, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 53, column 9)
-              _pp =
-                  ppCommas' names_ >#< "::" >#< _kindIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 105, column 9)
-              _mkEHSig =
-                  \n -> rngLift range_ EH.Decl_KiSig n _kindIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 106, column 9)
-              _lhsOeh =
-                  map _mkEHSig _refnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _kindIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _kindIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _kindIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _kindItopInstanceNmL
-              -- copy rule (down)
-              _kindOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _kindOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _kindOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _kindOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _kindOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
-                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_ForeignImport :: Range ->
-                                 FFIWay ->
-                                 (Maybe String) ->
-                                 (Maybe String) ->
-                                 Name ->
-                                 T_Type ->
-                                 T_Declaration
-sem_Declaration_ForeignImport range_ callconvention_ safety_ importname_ name_ type_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _typeOidGam :: IdDefOccGam
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 195, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 199, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Foreign _eh) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
-              _typeOidGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 780, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 780, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 783, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_typeIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 20, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 157, column 9)
-              _idOccDef =
-                  IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 157, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 24, column 9)
-              _errFFIWay =
-                  if maybe False (callconvention_ `elem`) $ fmap targiAllowedFFI $ Map.lookup (ehcOptTarget _lhsIopts) allTargetInfoMp
-                  then []
-                  else [rngLift range_ Err_IllegalFFIWay callconvention_]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 147, column 9)
-              _errSq =
-                  Seq.unions [ Seq.fromList (rngLift range_ mkNestErr (pp ("Parse of foreign entity '" ++ _nmForParse ++ "'")) _entErrs)
-                             , _typeIerrSq
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 55, column 9)
-              _pp =
-                  "foreign import" >#< callconvention_ >#< safety_ >#< maybe empty (pp.show) importname_ >#< name_ >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 108, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_FFI callconvention_ (maybe "safe" id safety_) _ent _refname _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 109, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 328, column 9)
-              _nmForParse =
-                  maybe "" id importname_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 329, column 25)
-              (_ent,_entErrs) =
-                  parseForeignEnt ForeignDirection_Import callconvention_ (Just $ show name_) _nmForParse
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typeOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_ForeignExport :: Range ->
-                                 FFIWay ->
-                                 (Maybe String) ->
-                                 Name ->
-                                 T_Type ->
-                                 T_Declaration
-sem_Declaration_ForeignExport range_ callconvention_ exportname_ name_ type_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _typeOidGam :: IdDefOccGam
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 195, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 199, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Foreign _eh) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
-              _typeOidGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 670, column 29)
-              (_refname,_,_idUseOccGamExport,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 826, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions [_idUseOccGamExport,_typeIidUseOccGam])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 826, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 830, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_typeIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 32, column 9)
-              _exportrefname =
-                  hsnUniqify HsNameUniqifier_FFE name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 160, column 9)
-              _idOccDef =
-                  IdOcc _exportrefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 160, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 24, column 9)
-              _errFFIWay =
-                  if maybe False (callconvention_ `elem`) $ fmap targiAllowedFFI $ Map.lookup (ehcOptTarget _lhsIopts) allTargetInfoMp
-                  then []
-                  else [rngLift range_ Err_IllegalFFIWay callconvention_]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 151, column 9)
-              _errSq =
-                  Seq.unions [ Seq.fromList _errIdUse
-                             , Seq.fromList (rngLift range_ mkNestErr (pp ("Parse of foreign entity '" ++ _nmForParse ++ "'")) _entErrs)
-                             , _typeIerrSq
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 83, column 9)
-              _pp =
-                  "foreign export" >#< callconvention_ >#< exportname_ >#< name_ >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 141, column 9)
-              _nmForParse =
-                  maybe "" id exportname_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 142, column 25)
-              (_ent,_entErrs) =
-                  parseForeignEnt ForeignDirection_Export callconvention_ (Just $ show name_) _nmForParse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 141, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_FFE _exportrefname callconvention_ _ent (rngLift range_ EH.Expr_Var _refname) _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 145, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typeOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Class :: Range ->
-                         T_ContextItems ->
-                         T_TypeLeftHandSide ->
-                         T_FunctionalDependencies ->
-                         T_MaybeDeclarations ->
-                         T_Declaration
-sem_Declaration_Class range_ context_ typelefthandside_ dependencies_ where_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _contextOfixityGam :: FixityGam
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _typelefthandsideOfixityGam :: FixityGam
-              _typelefthandsideOgUniq :: UID
-              _typelefthandsideOidGam :: IdDefOccGam
-              _typelefthandsideOmoduleNm :: HsName
-              _typelefthandsideOnmLev :: NmLev
-              _typelefthandsideOopts :: EHCOpts
-              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typelefthandsideOtopInstanceNmL :: ([HsName])
-              _dependenciesOfixityGam :: FixityGam
-              _dependenciesOgUniq :: UID
-              _dependenciesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _dependenciesOidGam :: IdDefOccGam
-              _dependenciesOmoduleNm :: HsName
-              _dependenciesOnmLev :: NmLev
-              _dependenciesOopts :: EHCOpts
-              _dependenciesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _dependenciesOpragmas :: (Set.Set Pragma.Pragma)
-              _dependenciesOtopInstanceNmL :: ([HsName])
-              _whereOcaseId :: UID
-              _whereOfixityGam :: FixityGam
-              _whereOgUniq :: UID
-              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _whereOidGam :: IdDefOccGam
-              _whereOmoduleNm :: HsName
-              _whereOnmLev :: NmLev
-              _whereOopts :: EHCOpts
-              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
-              _whereOpragmas :: (Set.Set Pragma.Pragma)
-              _whereOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _typelefthandsideIeh :: ([EH.TyVar])
-              _typelefthandsideIerrSq :: ErrSq
-              _typelefthandsideIfreeTvarS :: HsNameS
-              _typelefthandsideIgUniq :: UID
-              _typelefthandsideIidDefOccGam :: IdDefOccGam
-              _typelefthandsideIidOccDefs :: ([IdOcc])
-              _typelefthandsideIidUseOccGam :: IdUseOccGam
-              _typelefthandsideIname :: Name
-              _typelefthandsideIpp :: PP_Doc
-              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _typelefthandsideIrange :: Range
-              _typelefthandsideItopInstanceNmL :: ([HsName])
-              _typelefthandsideItypevariables :: Names
-              _typelefthandsideIundefOccGam :: IdUseOccGam
-              _dependenciesIeh :: ([EH.FuncDep])
-              _dependenciesIerrSq :: ErrSq
-              _dependenciesIgUniq :: UID
-              _dependenciesIgathFixityGam :: FixityGam
-              _dependenciesIgathPragmas :: (Set.Set Pragma.Pragma)
-              _dependenciesIidDefOccGam :: IdDefOccGam
-              _dependenciesIidDpdMp :: IdDpdMp
-              _dependenciesIidOccDefs :: ([IdOcc])
-              _dependenciesIidTySigDefOccGam :: IdDefOccGam
-              _dependenciesIidUseOccGam :: IdUseOccGam
-              _dependenciesIneedsError :: Bool
-              _dependenciesIpp :: PP_Doc
-              _dependenciesIppWrap :: (PP_Doc -> PP_Doc)
-              _dependenciesItopInstanceNmL :: ([HsName])
-              _dependenciesIundefOccGam :: IdUseOccGam
-              _whereIeh :: (Maybe [EH.Decl])
-              _whereIerrSq :: ErrSq
-              _whereIgUniq :: UID
-              _whereIgathFixityGam :: FixityGam
-              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
-              _whereIidDefOccGam :: IdDefOccGam
-              _whereIidDpdMp :: IdDpdMp
-              _whereIidOccDefs :: ([IdOcc])
-              _whereIidTySigDefOccGam :: IdDefOccGam
-              _whereIidUseOccGam :: IdUseOccGam
-              _whereIneedsError :: Bool
-              _whereIpp :: PP_Doc
-              _whereIppWrap :: (PP_Doc -> PP_Doc)
-              _whereItopInstanceNmL :: ([HsName])
-              _whereIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 167, column 9)
-              _idDefOccGamType =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 167, column 9)
-              _idDefOccGamSigAsVar =
-                  _whereIidTySigDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 167, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Class_Def _eh _ehInst) [_idOccDef]
-                  `gamUnion` _idDefOccGamSigAsVar
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 375, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 375, column 9)
-              _idDefOccGamInstForClass =
-                  fst $ gamPartition (\_ d -> case doccAsp d of {IdAsp_Inst_Def _ n | n == _classrefname -> True ; _ -> False}) $ _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 690, column 29)
-              (_,_,_idUseOccGamExtra,_errIdUseExtra) =
-                  mkUseOccGam _lhsIopts _lhsIidGam _extranames IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 785, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions [ _contextIidUseOccGam,_whereIidUseOccGam
-                                 , _idUseOccGamExtra
-                                 ])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 785, column 9)
-              _idDpdMp =
-                  idDpdMpUnions
-                      [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-                      , idToOccGam2DpdMp [_idOccDef] _idDefOccGamSigAsVar
-                      , idFrOccGam2DpdMp _idDefOccGamSigAsVar [_idOccDef]
-                      , idFrOccGam2DpdMp _idDefOccGamSigAsVar (gamKeys _idDefOccGamInstForClass)
-                      , _whereIidDpdMp
-                      ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 798, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_whereIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1036, column 29)
-              (_,_ehReorderedDecls,_errReorder) =
-                  mkIdOccSccEH range_ False _whereIidDefOccGam Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
-              _instancerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
-                  $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 26, column 9)
-              _classrefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 17)
-              _extranames =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
-              _idOccDef =
-                  IdOcc _classrefname IdOcc_Class
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
-              _idOccDefVal =
-                  IdOcc _instancerefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
-              _idOccDefsSig =
-                  _whereIidOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
-              _idOccDefs =
-                  [_idOccDef] ++ _idOccDefsSig
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 235, column 9)
-              _instancename =
-                  hsnUniqifyUID HsNameUniqifier_Class _lUniq (mkHNm _typelefthandsideIname)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 131, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamType
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 129, column 9)
-              _errSq =
-                  Seq.unions [ Seq.fromList _errDupIntro, Seq.fromList _errReorder, _contextIerrSq, _typelefthandsideIerrSq
-                             , _dependenciesIerrSq
-                             , Seq.fromList _errIdUseExtra
-                             , _whereIerrSq
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 57, column 9)
-              _pp =
-                  "class" >#< ppParens _contextIpp >#< "=>" >#< _typelefthandsideIpp
-                  >#< "|" >#< _dependenciesIpp
-                  >-< indent 2 _whereIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 111, column 25)
-              (_eh,_ehInst) =
-                  let h = rngLift range_ EH.TyExpr_Pred
-                          $ rngLift range_ EH.PrExpr_Class _classrefname (map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
-                      c = map (rngLift range_ EH.TyExpr_Pred) _contextIeh
-                      a = appArr c h
-                      (vals,sigs) = partition EH.ehIsDeclVal $ concat _ehReorderedDecls
-                  in  ( rngLift range_ EH.Decl_Class a
-                                _dependenciesIeh
-                                (Just _instancerefname) sigs
-                                _generDerivInfoL
-                      , rngLift range_ EH.Decl_Instance (Just (_instancerefname,False)) InstDefault a vals
-                      )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 122, column 9)
-              _lhsOeh =
-                  [_eh,_ehInst]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 293, column 9)
-              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
-                  extrTopInstanceNm _lhsItopInstanceNmL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 323, column 9)
-              _generDerivInfoL =
-                  Map.findWithDefault [] _classrefname _lhsIgenerDerivMp
-              -- -- generated by the unique rule mechanism.
-              (_contextOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _dependenciesIgathFixityGam `gamAddGam` _whereIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _dependenciesIgathPragmas `Set.union` _whereIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _dependenciesIidTySigDefOccGam `gamAddGam` _whereIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _dependenciesIneedsError || _whereIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _typelefthandsideIppWrap . _dependenciesIppWrap . _whereIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _whereIgUniq
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (from local)
-              _contextOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _contextOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _contextOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typelefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typelefthandsideOgUniq =
-                  _contextIgUniq
-              -- copy rule (from local)
-              _typelefthandsideOidGam =
-                  _idGam
-              -- copy rule (down)
-              _typelefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _typelefthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typelefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typelefthandsideOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _typelefthandsideOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _dependenciesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _dependenciesOgUniq =
-                  _typelefthandsideIgUniq
-              -- copy rule (down)
-              _dependenciesOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _dependenciesOidGam =
-                  _idGam
-              -- copy rule (down)
-              _dependenciesOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _dependenciesOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _dependenciesOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _dependenciesOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _dependenciesOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _dependenciesOtopInstanceNmL =
-                  _typelefthandsideItopInstanceNmL
-              -- copy rule (down)
-              _whereOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _whereOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _whereOgUniq =
-                  _dependenciesIgUniq
-              -- copy rule (down)
-              _whereOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _whereOidGam =
-                  _idGam
-              -- copy rule (down)
-              _whereOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _whereOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _whereOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _whereOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _whereOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _whereOtopInstanceNmL =
-                  _dependenciesItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
-                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
-              ( _dependenciesIeh,_dependenciesIerrSq,_dependenciesIgUniq,_dependenciesIgathFixityGam,_dependenciesIgathPragmas,_dependenciesIidDefOccGam,_dependenciesIidDpdMp,_dependenciesIidOccDefs,_dependenciesIidTySigDefOccGam,_dependenciesIidUseOccGam,_dependenciesIneedsError,_dependenciesIpp,_dependenciesIppWrap,_dependenciesItopInstanceNmL,_dependenciesIundefOccGam) =
-                  dependencies_ _dependenciesOfixityGam _dependenciesOgUniq _dependenciesOgenerDerivMp _dependenciesOidGam _dependenciesOmoduleNm _dependenciesOnmLev _dependenciesOopts _dependenciesOpatchEhNmInInstance _dependenciesOpragmas _dependenciesOtopInstanceNmL
-              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
-                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Instance :: Range ->
-                            InstVariant ->
-                            MaybeName ->
-                            Bool ->
-                            T_ContextItems ->
-                            T_Type ->
-                            T_MaybeDeclarations ->
-                            T_Declaration
-sem_Declaration_Instance range_ instVariant_ maybeinstancename_ useimplicitly_ context_ type_ where_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
-              _lhsOeh :: ([EH.Decl])
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _contextOfixityGam :: FixityGam
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _whereOcaseId :: UID
-              _whereOfixityGam :: FixityGam
-              _whereOgUniq :: UID
-              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _whereOidGam :: IdDefOccGam
-              _whereOmoduleNm :: HsName
-              _whereOnmLev :: NmLev
-              _whereOopts :: EHCOpts
-              _whereOpragmas :: (Set.Set Pragma.Pragma)
-              _whereOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              _whereIeh :: (Maybe [EH.Decl])
-              _whereIerrSq :: ErrSq
-              _whereIgUniq :: UID
-              _whereIgathFixityGam :: FixityGam
-              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
-              _whereIidDefOccGam :: IdDefOccGam
-              _whereIidDpdMp :: IdDpdMp
-              _whereIidOccDefs :: ([IdOcc])
-              _whereIidTySigDefOccGam :: IdDefOccGam
-              _whereIidUseOccGam :: IdUseOccGam
-              _whereIneedsError :: Bool
-              _whereIpp :: PP_Doc
-              _whereIppWrap :: (PP_Doc -> PP_Doc)
-              _whereItopInstanceNmL :: ([HsName])
-              _whereIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 175, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_  _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 175, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) [_idOccDef]
-                  `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 379, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 623, column 29)
-              (_classrefname,_,_idUseOccGamInst,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [_typeIconNm] IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 800, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions [_idUseOccGamInst,_contextIidUseOccGam,_typeIidUseOccGam                         ,_whereIidUseOccGam])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 800, column 9)
-              _idDpdMp =
-                  idDpdMpUnions
-                      [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-                      , idDpdMpSingleton _idOccDefVal _idOccDef
-                      , _whereIidDpdMp
-                      ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 808, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_whereIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1036, column 29)
-              (_,_ehReorderedDecls,_errReorder) =
-                  mkIdOccSccEH range_ False _whereIidDefOccGam Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1071, column 9)
-              _whereOpatchEhNmInInstance =
-                  hsnSetQual (panicJust "Declaration.Instance.patchEhNmInInstance" $ hsnQualifier _classrefname)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
-              _instancerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
-                  $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
-              _idOccDef =
-                  IdOcc _instancerefname IdOcc_Inst
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
-              _idOccDefVal =
-                  IdOcc _instancerefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
-              _idOccDefs =
-                  [_idOccDef,_idOccDefVal]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 233, column 9)
-              _instancename =
-                  maybe (hsnUniqifyUID HsNameUniqifier_ClassDict _lUniq (_typeIconNm)) id maybeinstancename_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 26, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 135, column 9)
-              _errSq =
-                  Seq.firstNotEmpty [Seq.fromList _errIdUse, _contextIerrSq, _typeIerrSq,                     _whereIerrSq, Seq.fromList _errReorder]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 61, column 9)
-              _pp =
-                  "instance" >|< ppInstNm useimplicitly_ maybeinstancename_
-                  >#< ppParens _contextIpp >#< "=>" >#< _typeIpp
-                  >-< indent 2 _whereIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 124, column 9)
-              _eh =
-                  let
-                      h = rngLift range_ EH.TyExpr_Pred $ panicJust "HS.ToEH.Instance.eh.type.ehMbAsPr" _typeIehMbAsPr
-                      c = map (rngLift range_ EH.TyExpr_Pred) _contextIeh
-                  in  rngLift range_ EH.Decl_Instance (Just (_instancerefname,useimplicitly_)) instVariant_ (appArr c h) (concat _ehReorderedDecls)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 128, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 182, column 9)
-              _isAsPred =
-                  True
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 293, column 9)
-              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
-                  extrTopInstanceNm _lhsItopInstanceNmL
-              -- -- generated by the unique rule mechanism.
-              (_contextOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _whereIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _whereIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _whereIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _whereIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _typeIppWrap . _whereIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _whereIgUniq
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (from local)
-              _contextOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _contextOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _contextOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _contextIgUniq
-              -- copy rule (from local)
-              _typeOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              -- copy rule (down)
-              _whereOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _whereOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _whereOgUniq =
-                  _typeIgUniq
-              -- copy rule (down)
-              _whereOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _whereOidGam =
-                  _idGam
-              -- copy rule (down)
-              _whereOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _whereOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _whereOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _whereOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _whereOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
-                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_InstanceUseImplicitly :: Range ->
-                                         T_Expression ->
-                                         Name ->
-                                         T_Types ->
-                                         T_Declaration
-sem_Declaration_InstanceUseImplicitly range_ expression_ name_ types_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _typesOfixityGam :: FixityGam
-              _typesOgUniq :: UID
-              _typesOidGam :: IdDefOccGam
-              _typesOisAsPred :: Bool
-              _typesOnmLev :: NmLev
-              _typesOopts :: EHCOpts
-              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typesOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _typesIeh :: ([EH.TyExpr])
-              _typesIerrSq :: ErrSq
-              _typesIfreeTvarS :: HsNameS
-              _typesIgUniq :: UID
-              _typesIidUseOccGam :: IdUseOccGam
-              _typesIpp :: PP_Doc
-              _typesIppL :: ([PP_Doc])
-              _typesIppWrap :: (PP_Doc -> PP_Doc)
-              _typesItopInstanceNmL :: ([HsName])
-              _typesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 180, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 627, column 29)
-              (_classrefname,_,_idUseOccGamInst,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 810, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions [_idUseOccGamInst,_typesIidUseOccGam,_expressionIidUseOccGam])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 810, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
-              _instancerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
-                  $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 148, column 9)
-              _idOccDef =
-                  IdOcc _instancerefname IdOcc_Inst
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 148, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 237, column 9)
-              _instancename =
-                  mkHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 137, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq, _typesIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 65, column 9)
-              _pp =
-                  "instance" >#< _expressionIpp >#< "<:" >#< name_ >#< ppSpaces _typesIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 130, column 9)
-              _eh =
-                  let h = rngLift range_ EH.PrExpr_Class _classrefname _typesIeh
-                  in  rngLift range_ EH.Decl_InstanceIntro (Just _instancerefname) _expressionIeh h
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 132, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 293, column 9)
-              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
-                  extrTopInstanceNm _lhsItopInstanceNmL
-              -- -- generated by the unique rule mechanism.
-              (_expressionOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _typesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _undefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typesIgUniq
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _expressionOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _expressionOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typesOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _typesOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typesOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typesOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typesOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typesOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _typesOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
-                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Default :: Range ->
-                           MaybeName ->
-                           T_Types ->
-                           T_Declaration
-sem_Declaration_Default range_ name_ types_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _typesOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typesOfixityGam :: FixityGam
-              _typesOidGam :: IdDefOccGam
-              _typesOisAsPred :: Bool
-              _typesOnmLev :: NmLev
-              _typesOopts :: EHCOpts
-              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typesOtopInstanceNmL :: ([HsName])
-              _typesIeh :: ([EH.TyExpr])
-              _typesIerrSq :: ErrSq
-              _typesIfreeTvarS :: HsNameS
-              _typesIgUniq :: UID
-              _typesIidUseOccGam :: IdUseOccGam
-              _typesIpp :: PP_Doc
-              _typesIppL :: ([PP_Doc])
-              _typesIppWrap :: (PP_Doc -> PP_Doc)
-              _typesItopInstanceNmL :: ([HsName])
-              _typesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Dflt_Def _eh _ignoredecl) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 630, column 29)
-              (_classrefname,_classrefnames,_idUseOccGamDflt,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam (catMaybes [name_]) IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 815, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                      (gamUnions [_idUseOccGamDflt,_typesIidUseOccGam])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 815, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 819, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_typesIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 151, column 9)
-              _idOccDef =
-                  IdOcc _defaultname IdOcc_Dflt
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 151, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 239, column 9)
-              _defaultname =
-                  mkHNm _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 139, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _typesIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 67, column 9)
-              _pp =
-                  "default" >#< maybe empty pp name_ >#< ppParensCommas _typesIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 134, column 9)
-              _ignoredecl =
-                  null _classrefnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 134, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_Default _classrefname _typesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 136, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_typesOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typesIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typesItopInstanceNmL
-              -- copy rule (down)
-              _typesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typesOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typesOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typesOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typesOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typesOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _typesOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
-                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Type :: Range ->
-                        T_TypeLeftHandSide ->
-                        T_Type ->
-                        T_Declaration
-sem_Declaration_Type range_ typelefthandside_ type_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typelefthandsideOfixityGam :: FixityGam
-              _typelefthandsideOgUniq :: UID
-              _typelefthandsideOidGam :: IdDefOccGam
-              _typelefthandsideOmoduleNm :: HsName
-              _typelefthandsideOnmLev :: NmLev
-              _typelefthandsideOopts :: EHCOpts
-              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typelefthandsideOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typelefthandsideIeh :: ([EH.TyVar])
-              _typelefthandsideIerrSq :: ErrSq
-              _typelefthandsideIfreeTvarS :: HsNameS
-              _typelefthandsideIgUniq :: UID
-              _typelefthandsideIidDefOccGam :: IdDefOccGam
-              _typelefthandsideIidOccDefs :: ([IdOcc])
-              _typelefthandsideIidUseOccGam :: IdUseOccGam
-              _typelefthandsideIname :: Name
-              _typelefthandsideIpp :: PP_Doc
-              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _typelefthandsideIrange :: Range
-              _typelefthandsideItopInstanceNmL :: ([HsName])
-              _typelefthandsideItypevariables :: Names
-              _typelefthandsideIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 184, column 9)
-              _idDefOccGamType =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 184, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 821, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 821, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 824, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_typeIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 28, column 9)
-              _typerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 154, column 9)
-              _idOccDef =
-                  IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 154, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 29, column 9)
-              _nmLev =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 141, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamType
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 143, column 9)
-              _errSq =
-                  Seq.unions [ Seq.fromList _errDupIntro, _typelefthandsideIerrSq, _typeIerrSq ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 69, column 9)
-              _pp =
-                  "type" >#< _typelefthandsideIpp >#< "=" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 138, column 9)
-              _eh =
-                  rngLift range_ EH.Decl_Type _typerefname (foldr (rngLift range_ EH.TyExpr_Lam) _typeIeh _typelefthandsideItypevariables)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 139, column 9)
-              _lhsOeh =
-                  [_eh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typelefthandsideIppWrap . _typeIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _typelefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typelefthandsideOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _typelefthandsideOidGam =
-                  _idGam
-              -- copy rule (down)
-              _typelefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _typelefthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typelefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typelefthandsideOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _typelefthandsideOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _typelefthandsideIgUniq
-              -- copy rule (from local)
-              _typeOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _typeOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _typelefthandsideItopInstanceNmL
-              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
-                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Pragma :: Range ->
-                          T_Pragma ->
-                          T_Declaration
-sem_Declaration_Pragma range_ pragma_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _pragmaOgUniq :: UID
-              _pragmaOidGam :: IdDefOccGam
-              _pragmaOnmLev :: NmLev
-              _pragmaOopts :: EHCOpts
-              _pragmaOpatchEhNmInInstance :: PatchEhNmInInstance
-              _pragmaOtopInstanceNmL :: ([HsName])
-              _pragmaIerrSq :: ErrSq
-              _pragmaIgUniq :: UID
-              _pragmaIgathPragmas :: (Set.Set Pragma.Pragma)
-              _pragmaIidUseOccGam :: IdUseOccGam
-              _pragmaIpp :: PP_Doc
-              _pragmaIppWrap :: (PP_Doc -> PP_Doc)
-              _pragmaItopInstanceNmL :: ([HsName])
-              _pragmaIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 75, column 9)
-              _pp =
-                  "{-#" >#< _pragmaIpp >#< "#-}"
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 147, column 9)
-              _eh =
-                  undefined
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 148, column 9)
-              _lhsOeh =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _pragmaIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _pragmaIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _pragmaIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _pragmaIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _pragmaIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _pragmaIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _pragmaItopInstanceNmL
-              -- copy rule (down)
-              _pragmaOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _pragmaOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _pragmaOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _pragmaOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _pragmaOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _pragmaOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _pragmaIerrSq,_pragmaIgUniq,_pragmaIgathPragmas,_pragmaIidUseOccGam,_pragmaIpp,_pragmaIppWrap,_pragmaItopInstanceNmL,_pragmaIundefOccGam) =
-                  pragma_ _pragmaOgUniq _pragmaOidGam _pragmaOnmLev _pragmaOopts _pragmaOpatchEhNmInInstance _pragmaOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declaration_Module :: Range ->
-                          MaybeName ->
-                          T_MaybeExports ->
-                          T_Declaration
-sem_Declaration_Module range_ name_ exports_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _exportsOfixityGam :: FixityGam
-              _exportsOgUniq :: UID
-              _exportsOidGam :: IdDefOccGam
-              _exportsOisMainMod :: Bool
-              _exportsOisTopMod :: Bool
-              _exportsOmoduleNm :: HsName
-              _exportsOnmLev :: NmLev
-              _exportsOopts :: EHCOpts
-              _exportsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _exportsOtopInstanceNmL :: ([HsName])
-              _exportsIerrSq :: ErrSq
-              _exportsIgUniq :: UID
-              _exportsIgathFixityGam :: FixityGam
-              _exportsIidUseOccGam :: IdUseOccGam
-              _exportsIpp :: PP_Doc
-              _exportsIppWrap :: (PP_Doc -> PP_Doc)
-              _exportsItopInstanceNmL :: ([HsName])
-              _exportsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 147, column 9)
-              _eh =
-                  undefined
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 148, column 9)
-              _lhsOeh =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
-              _doGenVarWild =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 253, column 9)
-              _isMainMod =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 253, column 9)
-              _isTopMod =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _exportsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _exportsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _exportsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _exportsIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _exportsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _exportsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _exportsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _exportsItopInstanceNmL
-              -- copy rule (down)
-              _exportsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _exportsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _exportsOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _exportsOisMainMod =
-                  _isMainMod
-              -- copy rule (from local)
-              _exportsOisTopMod =
-                  _isTopMod
-              -- copy rule (down)
-              _exportsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _exportsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _exportsOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _exportsOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _exportsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _exportsIerrSq,_exportsIgUniq,_exportsIgathFixityGam,_exportsIidUseOccGam,_exportsIpp,_exportsIppWrap,_exportsItopInstanceNmL,_exportsIundefOccGam) =
-                  exports_ _exportsOfixityGam _exportsOgUniq _exportsOidGam _exportsOisMainMod _exportsOisTopMod _exportsOmoduleNm _exportsOnmLev _exportsOopts _exportsOpatchEhNmInInstance _exportsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Declarations ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.Decl]
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Declaration 
-         child tl             : Declarations 
-      alternative Nil:
--}
--- cata
-sem_Declarations :: Declarations ->
-                    T_Declarations
-sem_Declarations list =
-    (Prelude.foldr sem_Declarations_Cons sem_Declarations_Nil (Prelude.map sem_Declaration list))
--- semantic domain
-type T_Declarations = UID ->
-                      FixityGam ->
-                      UID ->
-                      (Map.Map HsName [(HsName,HsName)]) ->
-                      IdDefOccGam ->
-                      HsName ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      (Set.Set Pragma.Pragma) ->
-                      ([HsName]) ->
-                      ( ([EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Declarations_Cons :: T_Declaration ->
-                         T_Declarations ->
-                         T_Declarations
-sem_Declarations_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: ([EH.Decl])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidDpdMp :: IdDpdMp
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidTySigDefOccGam :: IdDefOccGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIneedsError :: Bool
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.Decl])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathFixityGam :: FixityGam
-              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidDpdMp :: IdDpdMp
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidTySigDefOccGam :: IdDefOccGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIneedsError :: Bool
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 66, column 28)
-              _lhsOeh =
-                  _hdIeh ++ _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _hdIidTySigDefOccGam `gamAddGam` _tlIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _hdIneedsError || _tlIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidTySigDefOccGam,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidTySigDefOccGam,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Declarations_Nil :: T_Declarations
-sem_Declarations_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 66, column 28)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Deriving ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         ehDataTyExpr         : EH.TyExpr
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         idOccDefData         : IdOcc
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Deriving:
-         child range          : {Range}
-         child maybeinstancename : {MaybeName}
-         child useimplicitly  : {Bool}
-         child name           : {Name}
-         visit 0:
-            local idDefOccGam : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local instancerefname : _
-            local idOccDef    : _
-            local idOccDefVal : _
-            local idOccDefs   : _
-            local instancename : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local mbPrevInstancename : _
-            local lUniq       : {UID}
--}
--- cata
-sem_Deriving :: Deriving ->
-                T_Deriving
-sem_Deriving (Deriving_Deriving _range _maybeinstancename _useimplicitly _name) =
-    (sem_Deriving_Deriving _range _maybeinstancename _useimplicitly _name)
--- semantic domain
-type T_Deriving = (EH.TyExpr) ->
-                  FixityGam ->
-                  UID ->
-                  (Map.Map HsName [(HsName,HsName)]) ->
-                  IdDefOccGam ->
-                  IdOcc ->
-                  HsName ->
-                  NmLev ->
-                  EHCOpts ->
-                  PatchEhNmInInstance ->
-                  (Set.Set Pragma.Pragma) ->
-                  ([HsName]) ->
-                  ( ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Deriving_Deriving :: Range ->
-                         MaybeName ->
-                         Bool ->
-                         Name ->
-                         T_Deriving
-sem_Deriving_Deriving range_ maybeinstancename_ useimplicitly_ name_ =
-    (\ _lhsIehDataTyExpr
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsIidOccDefData
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidDpdMp :: IdDpdMp
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lhsOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 264, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _refname) [_idOccDef]
-                  `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 635, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 854, column 9)
-              _lhsOidDpdMp =
-                  idDpdMpUnions
-                      [ idDpdMpSingleton _idOccDef _lhsIidOccDefData
-                      , idDpdMpSingleton _idOccDefVal _idOccDef
-                      ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 37, column 9)
-              _instancerefname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
-                  $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
-              _idOccDef =
-                  IdOcc _instancerefname IdOcc_Inst
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
-              _idOccDefVal =
-                  IdOcc _instancerefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
-              _idOccDefs =
-                  [_idOccDef,_idOccDefVal]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 247, column 9)
-              _instancename =
-                  maybe (mkHNm _lUniq) id maybeinstancename_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 162, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 87, column 9)
-              _pp =
-                  ppInstNm useimplicitly_ maybeinstancename_ >#< name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 168, column 9)
-              _eh =
-                  let h = rngLift range_ EH.TyExpr_Pred
-                          $ rngLift range_ EH.PrExpr_Class _refname [rngLift range_ EH.TyExpr_Parens _lhsIehDataTyExpr]
-                  in  rngLift range_ EH.Decl_Instance (Just (_instancerefname,useimplicitly_)) (InstDeriving InstDerivingFrom_Datatype) h []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 298, column 9)
-              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
-                  extrTopInstanceNm _lhsItopInstanceNmL
-              -- -- generated by the unique rule mechanism.
-              (_lhsOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Derivings ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         ehDataTyExpr         : EH.TyExpr
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         idOccDefData         : IdOcc
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Deriving 
-         child tl             : Derivings 
-      alternative Nil:
--}
--- cata
-sem_Derivings :: Derivings ->
-                 T_Derivings
-sem_Derivings list =
-    (Prelude.foldr sem_Derivings_Cons sem_Derivings_Nil (Prelude.map sem_Deriving list))
--- semantic domain
-type T_Derivings = (EH.TyExpr) ->
-                   FixityGam ->
-                   UID ->
-                   (Map.Map HsName [(HsName,HsName)]) ->
-                   IdDefOccGam ->
-                   IdOcc ->
-                   HsName ->
-                   NmLev ->
-                   EHCOpts ->
-                   PatchEhNmInInstance ->
-                   (Set.Set Pragma.Pragma) ->
-                   ([HsName]) ->
-                   ( ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Derivings_Cons :: T_Deriving ->
-                      T_Derivings ->
-                      T_Derivings
-sem_Derivings_Cons hd_ tl_ =
-    (\ _lhsIehDataTyExpr
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsIidOccDefData
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOehDataTyExpr :: (EH.TyExpr)
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOidOccDefData :: IdOcc
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOehDataTyExpr :: (EH.TyExpr)
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOidOccDefData :: IdOcc
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidDpdMp :: IdDpdMp
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidTySigDefOccGam :: IdDefOccGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIneedsError :: Bool
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathFixityGam :: FixityGam
-              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidDpdMp :: IdDpdMp
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidTySigDefOccGam :: IdDefOccGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIneedsError :: Bool
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 528, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _hdIidTySigDefOccGam `gamAddGam` _tlIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _hdIneedsError || _tlIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOehDataTyExpr =
-                  _lhsIehDataTyExpr
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOidOccDefData =
-                  _lhsIidOccDefData
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOehDataTyExpr =
-                  _lhsIehDataTyExpr
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOidOccDefData =
-                  _lhsIidOccDefData
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidTySigDefOccGam,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOehDataTyExpr _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOidOccDefData _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidTySigDefOccGam,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOehDataTyExpr _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOidOccDefData _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Derivings_Nil :: T_Derivings
-sem_Derivings_Nil =
-    (\ _lhsIehDataTyExpr
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsIidOccDefData
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 530, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Export ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-      alternative TypeOrClass:
-         child range          : {Range}
-         child name           : {Name}
-         child names          : {MaybeNames}
-      alternative TypeOrClassComplete:
-         child range          : {Range}
-         child name           : {Name}
-      alternative Module:
-         child range          : {Range}
-         child name           : {Name}
--}
--- cata
-sem_Export :: Export ->
-              T_Export
-sem_Export (Export_Variable _range _name) =
-    (sem_Export_Variable _range _name)
-sem_Export (Export_TypeOrClass _range _name _names) =
-    (sem_Export_TypeOrClass _range _name _names)
-sem_Export (Export_TypeOrClassComplete _range _name) =
-    (sem_Export_TypeOrClassComplete _range _name)
-sem_Export (Export_Module _range _name) =
-    (sem_Export_Module _range _name)
--- semantic domain
-type T_Export = FixityGam ->
-                UID ->
-                IdDefOccGam ->
-                Bool ->
-                Bool ->
-                HsName ->
-                NmLev ->
-                EHCOpts ->
-                PatchEhNmInInstance ->
-                ([HsName]) ->
-                ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Export_Variable :: Range ->
-                       Name ->
-                       T_Export
-sem_Export_Variable range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Export_TypeOrClass :: Range ->
-                          Name ->
-                          MaybeNames ->
-                          T_Export
-sem_Export_TypeOrClass range_ name_ names_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Export_TypeOrClassComplete :: Range ->
-                                  Name ->
-                                  T_Export
-sem_Export_TypeOrClassComplete range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Export_Module :: Range ->
-                     Name ->
-                     T_Export
-sem_Export_Module range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Exports -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Export 
-         child tl             : Exports 
-      alternative Nil:
--}
--- cata
-sem_Exports :: Exports ->
-               T_Exports
-sem_Exports list =
-    (Prelude.foldr sem_Exports_Cons sem_Exports_Nil (Prelude.map sem_Export list))
--- semantic domain
-type T_Exports = FixityGam ->
-                 UID ->
-                 IdDefOccGam ->
-                 Bool ->
-                 Bool ->
-                 HsName ->
-                 NmLev ->
-                 EHCOpts ->
-                 PatchEhNmInInstance ->
-                 ([HsName]) ->
-                 ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Exports_Cons :: T_Export ->
-                    T_Exports ->
-                    T_Exports
-sem_Exports_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOisMainMod :: Bool
-              _hdOisTopMod :: Bool
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOisMainMod :: Bool
-              _tlOisTopMod :: Bool
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathFixityGam :: FixityGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _hdOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _tlOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Exports_Nil :: T_Exports
-sem_Exports_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Expression --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         conNm                : Name
-         eh                   : EH.Expr
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         opChain              : OpChain EH.Expr
-         operatorName         : MaybeName
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Literal:
-         child range          : {Range}
-         child literal        : Literal 
-         visit 0:
-            local litnames    : _
-            local litrefname  : _
-            local litrefnames : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idAsp       : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Constructor:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idAsp       : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative TupleConstructor:
-         child range          : {Range}
-         child arity          : {Int}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Parenthesized:
-         child range          : {Range}
-         child expression     : Expression 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative NormalApplication:
-         child range          : {Range}
-         child function       : Expression 
-         child arguments      : Expressions 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative SectionApplication:
-         child range          : {Range}
-         child leftExpression : MaybeExpression 
-         child operator       : Expression 
-         child rightExpression : MaybeExpression 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local lUniq_1_nm  : {UID}
-      alternative InfixApplication:
-         child range          : {Range}
-         child leftExpression : Expression 
-         child operator       : Expression 
-         child rightExpression : Expression 
-         visit 0:
-            local pp          : _
-            local fgi         : _
-            local eh          : _
-            local isAsPred    : _
-      alternative InfixApplicationChainTop:
-         child range          : {Range}
-         child expression     : Expression 
-         visit 0:
-            local errSq       : _
-            local ehRearrOpChain : _
-            local errRearr    : _
-            local ehFromOpChain : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Lambda:
-         child range          : {Range}
-         child patterns       : Patterns 
-         child expression     : Expression 
-         visit 0:
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Let:
-         child range          : {Range}
-         child isStrict       : {Bool}
-         child declarations   : Declarations 
-         child expression     : Expression 
-         visit 0:
-            local idGam       : _
-            local sccOrder    : _
-            local mkSccLet    : _
-            local errReorder  : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local ppExtra     : _
-            local fixityGam   : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Tuple:
-         child range          : {Range}
-         child expressions    : Expressions 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Typed:
-         child range          : {Range}
-         child expression     : Expression 
-         child type           : Type 
-         visit 0:
-            local idDefOccGamType : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative Negate:
-         child range          : {Range}
-         child expression     : Expression 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Annotate:
-         child range          : {Range}
-         child annotation     : ExpressionAnnotation 
-         child expression     : Expression 
-         visit 0:
-            local eh          : _
-            local isAsPred    : _
-      alternative ImpredicativeApplication:
-         child range          : {Range}
-         child function       : Expression 
-         child arguments      : Expressions 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative If:
-         child range          : {Range}
-         child guardExpression : Expression 
-         child thenExpression : Expression 
-         child elseExpression : Expression 
-         visit 0:
-            local valrefnames : _
-            local idUseOccGamVal : _
-            local errIdUseVal : _
-            local typerefname : _
-            local idUseOccGamType : _
-            local errIdUseType : _
-            local idUseOccGam : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Case:
-         child range          : {Range}
-         child expression     : Expression 
-         child alternatives   : Alternatives 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local caseId      : _
-            local isAsPred    : _
-            local lUniq       : {UID}
-      alternative List:
-         child range          : {Range}
-         child expressions    : Expressions 
-         visit 0:
-            local refnames    : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Enum:
-         child range          : {Range}
-         child from           : Expression 
-         child then           : MaybeExpression 
-         child to             : MaybeExpression 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local enumNm      : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Comprehension:
-         child range          : {Range}
-         child expression     : Expression 
-         child qualifiers     : Qualifiers 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative RecordConstruction:
-         child range          : {Range}
-         child name           : {Name}
-         child recordExpressionBindings : RecordExpressionBindings 
-         visit 0:
-            local idAsp       : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative RecordUpdate:
-         child range          : {Range}
-         child expression     : Expression 
-         child recordExpressionBindings : RecordExpressionBindings 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative RowRecordUpdate:
-         child range          : {Range}
-         child expression     : Expression 
-         child rowRecordExpressionUpdates : RowRecordExpressionUpdates 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative RowRecordEmpty:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative RowRecordSelect:
-         child range          : {Range}
-         child expression     : Expression 
-         child name           : {Name}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative Do:
-         child range          : {Range}
-         child statements     : Statements 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative ImplicitApplication:
-         child range          : {Range}
-         child function       : Expression 
-         child arguments      : ContextedExpressions 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
-      alternative ImplicitLambda:
-         child range          : {Range}
-         child patterns       : ContextedPatterns 
-         child expression     : Expression 
-         visit 0:
-            local idDefOccGamType : _
-            local idGam       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local isAsPred    : _
--}
--- cata
-sem_Expression :: Expression ->
-                  T_Expression
-sem_Expression (Expression_Literal _range _literal) =
-    (sem_Expression_Literal _range (sem_Literal _literal))
-sem_Expression (Expression_Variable _range _name) =
-    (sem_Expression_Variable _range _name)
-sem_Expression (Expression_Constructor _range _name) =
-    (sem_Expression_Constructor _range _name)
-sem_Expression (Expression_TupleConstructor _range _arity) =
-    (sem_Expression_TupleConstructor _range _arity)
-sem_Expression (Expression_Parenthesized _range _expression) =
-    (sem_Expression_Parenthesized _range (sem_Expression _expression))
-sem_Expression (Expression_NormalApplication _range _function _arguments) =
-    (sem_Expression_NormalApplication _range (sem_Expression _function) (sem_Expressions _arguments))
-sem_Expression (Expression_SectionApplication _range _leftExpression _operator _rightExpression) =
-    (sem_Expression_SectionApplication _range (sem_MaybeExpression _leftExpression) (sem_Expression _operator) (sem_MaybeExpression _rightExpression))
-sem_Expression (Expression_InfixApplication _range _leftExpression _operator _rightExpression) =
-    (sem_Expression_InfixApplication _range (sem_Expression _leftExpression) (sem_Expression _operator) (sem_Expression _rightExpression))
-sem_Expression (Expression_InfixApplicationChainTop _range _expression) =
-    (sem_Expression_InfixApplicationChainTop _range (sem_Expression _expression))
-sem_Expression (Expression_Lambda _range _patterns _expression) =
-    (sem_Expression_Lambda _range (sem_Patterns _patterns) (sem_Expression _expression))
-sem_Expression (Expression_Let _range _isStrict _declarations _expression) =
-    (sem_Expression_Let _range _isStrict (sem_Declarations _declarations) (sem_Expression _expression))
-sem_Expression (Expression_Tuple _range _expressions) =
-    (sem_Expression_Tuple _range (sem_Expressions _expressions))
-sem_Expression (Expression_Typed _range _expression _type) =
-    (sem_Expression_Typed _range (sem_Expression _expression) (sem_Type _type))
-sem_Expression (Expression_Negate _range _expression) =
-    (sem_Expression_Negate _range (sem_Expression _expression))
-sem_Expression (Expression_Annotate _range _annotation _expression) =
-    (sem_Expression_Annotate _range (sem_ExpressionAnnotation _annotation) (sem_Expression _expression))
-sem_Expression (Expression_ImpredicativeApplication _range _function _arguments) =
-    (sem_Expression_ImpredicativeApplication _range (sem_Expression _function) (sem_Expressions _arguments))
-sem_Expression (Expression_If _range _guardExpression _thenExpression _elseExpression) =
-    (sem_Expression_If _range (sem_Expression _guardExpression) (sem_Expression _thenExpression) (sem_Expression _elseExpression))
-sem_Expression (Expression_Case _range _expression _alternatives) =
-    (sem_Expression_Case _range (sem_Expression _expression) (sem_Alternatives _alternatives))
-sem_Expression (Expression_List _range _expressions) =
-    (sem_Expression_List _range (sem_Expressions _expressions))
-sem_Expression (Expression_Enum _range _from _then _to) =
-    (sem_Expression_Enum _range (sem_Expression _from) (sem_MaybeExpression _then) (sem_MaybeExpression _to))
-sem_Expression (Expression_Comprehension _range _expression _qualifiers) =
-    (sem_Expression_Comprehension _range (sem_Expression _expression) (sem_Qualifiers _qualifiers))
-sem_Expression (Expression_RecordConstruction _range _name _recordExpressionBindings) =
-    (sem_Expression_RecordConstruction _range _name (sem_RecordExpressionBindings _recordExpressionBindings))
-sem_Expression (Expression_RecordUpdate _range _expression _recordExpressionBindings) =
-    (sem_Expression_RecordUpdate _range (sem_Expression _expression) (sem_RecordExpressionBindings _recordExpressionBindings))
-sem_Expression (Expression_RowRecordUpdate _range _expression _rowRecordExpressionUpdates) =
-    (sem_Expression_RowRecordUpdate _range (sem_Expression _expression) (sem_RowRecordExpressionUpdates _rowRecordExpressionUpdates))
-sem_Expression (Expression_RowRecordEmpty _range) =
-    (sem_Expression_RowRecordEmpty _range)
-sem_Expression (Expression_RowRecordSelect _range _expression _name) =
-    (sem_Expression_RowRecordSelect _range (sem_Expression _expression) _name)
-sem_Expression (Expression_Do _range _statements) =
-    (sem_Expression_Do _range (sem_Statements _statements))
-sem_Expression (Expression_ImplicitApplication _range _function _arguments) =
-    (sem_Expression_ImplicitApplication _range (sem_Expression _function) (sem_ContextedExpressions _arguments))
-sem_Expression (Expression_ImplicitLambda _range _patterns _expression) =
-    (sem_Expression_ImplicitLambda _range (sem_ContextedPatterns _patterns) (sem_Expression _expression))
--- semantic domain
-type T_Expression = UID ->
-                    FixityGam ->
-                    UID ->
-                    (Map.Map HsName [(HsName,HsName)]) ->
-                    IdDefOccGam ->
-                    HsName ->
-                    NmLev ->
-                    EHCOpts ->
-                    PatchEhNmInInstance ->
-                    (Set.Set Pragma.Pragma) ->
-                    ([HsName]) ->
-                    ( Name,(EH.Expr),ErrSq,UID,IdUseOccGam,(OpChain EH.Expr),MaybeName,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Expression_Literal :: Range ->
-                          T_Literal ->
-                          T_Expression
-sem_Expression_Literal range_ literal_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _literalOgUniq :: UID
-              _literalOidGam :: IdDefOccGam
-              _literalOnmLev :: NmLev
-              _literalOopts :: EHCOpts
-              _literalOpatchEhNmInInstance :: PatchEhNmInInstance
-              _literalOtopInstanceNmL :: ([HsName])
-              _literalIeh :: Literal
-              _literalIerrSq :: ErrSq
-              _literalIgUniq :: UID
-              _literalIidUseOccGam :: IdUseOccGam
-              _literalIpp :: PP_Doc
-              _literalIppWrap :: (PP_Doc -> PP_Doc)
-              _literalItopInstanceNmL :: ([HsName])
-              _literalIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 475, column 9)
-              _litnames =
-                  litNames _lhsIopts _literalIeh False 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 476, column 29)
-              (_litrefname,_litrefnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam' _lhsIopts _lhsIidGam _litnames range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 478, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam, _literalIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 13, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _literalIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 466, column 9)
-              _eh =
-                  case _literalIeh of
-                    Literal_Int    r b s -> fst $ ehExpLitInt r b s 1 _litrefnames
-                    Literal_Char   r s -> rngLift r EH.Expr_CConst (head s)
-                    Literal_String r s -> fst $ ehExpLitString _lhsIopts r s _litrefnames
-                    Literal_Float  r s -> fst $ ehExpLitFloat r s 1 _litrefnames
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _literalIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _literalIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _literalIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _literalIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _literalItopInstanceNmL
-              -- copy rule (down)
-              _literalOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _literalOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _literalOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _literalOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _literalOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _literalOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _literalIeh,_literalIerrSq,_literalIgUniq,_literalIidUseOccGam,_literalIpp,_literalIppWrap,_literalItopInstanceNmL,_literalIundefOccGam) =
-                  literal_ _literalOgUniq _literalOidGam _literalOnmLev _literalOopts _literalOpatchEhNmInInstance _literalOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Variable :: Range ->
-                           Name ->
-                           T_Expression
-sem_Expression_Variable range_ name_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 480, column 9)
-              _idAsp =
-                  IdAsp_Val_Var
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 486, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
-                      dbgnm = mkHNm "putStrLn"
-                      dbgoc = IdOcc dbgnm IdOcc_Val
-                  in
-                              x
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 15, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 194, column 9)
-              _pp =
-                  pp name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
-              _lhsOoperatorName =
-                  Just _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 472, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_Var _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Constructor :: Range ->
-                              Name ->
-                              T_Expression
-sem_Expression_Constructor range_ name_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 483, column 9)
-              _idAsp =
-                  IdAsp_Val_Con
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 486, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
-                      dbgnm = mkHNm "putStrLn"
-                      dbgoc = IdOcc dbgnm IdOcc_Val
-                  in
-                              x
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 263, column 9)
-              _lhsOconNm =
-                  name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 15, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 196, column 9)
-              _pp =
-                  ppCon name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
-              _lhsOoperatorName =
-                  Just _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 474, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_Con _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_TupleConstructor :: Range ->
-                                   Int ->
-                                   T_Expression
-sem_Expression_TupleConstructor range_ arity_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 198, column 9)
-              _pp =
-                  ppParens (replicate (arity_ - 1) (','))
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 476, column 9)
-              _eh =
-                  ehTupleConstructor range_ arity_ EH.Expr_Var EH.PatExpr_Var EH.Expr_Lam
-                      (\_ x -> x) EH.Expr_Rec EH.RecExpr_Ext EH.RecExpr_Empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Parenthesized :: Range ->
-                                T_Expression ->
-                                T_Expression
-sem_Expression_Parenthesized range_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 200, column 9)
-              _pp =
-                  ppParens _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 479, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_Parens _expressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_NormalApplication :: Range ->
-                                    T_Expression ->
-                                    T_Expressions ->
-                                    T_Expression
-sem_Expression_NormalApplication range_ function_ arguments_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _functionOcaseId :: UID
-              _functionOfixityGam :: FixityGam
-              _functionOgUniq :: UID
-              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _functionOidGam :: IdDefOccGam
-              _functionOmoduleNm :: HsName
-              _functionOnmLev :: NmLev
-              _functionOopts :: EHCOpts
-              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _functionOpragmas :: (Set.Set Pragma.Pragma)
-              _functionOtopInstanceNmL :: ([HsName])
-              _argumentsOcaseId :: UID
-              _argumentsOfixityGam :: FixityGam
-              _argumentsOgUniq :: UID
-              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _argumentsOidGam :: IdDefOccGam
-              _argumentsOmoduleNm :: HsName
-              _argumentsOnmLev :: NmLev
-              _argumentsOopts :: EHCOpts
-              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
-              _argumentsOtopInstanceNmL :: ([HsName])
-              _functionIconNm :: Name
-              _functionIeh :: (EH.Expr)
-              _functionIerrSq :: ErrSq
-              _functionIgUniq :: UID
-              _functionIidUseOccGam :: IdUseOccGam
-              _functionIopChain :: (OpChain EH.Expr)
-              _functionIoperatorName :: MaybeName
-              _functionIpp :: PP_Doc
-              _functionIppWrap :: (PP_Doc -> PP_Doc)
-              _functionItopInstanceNmL :: ([HsName])
-              _functionIundefOccGam :: IdUseOccGam
-              _argumentsIeh :: ([EH.Expr])
-              _argumentsIerrSq :: ErrSq
-              _argumentsIgUniq :: UID
-              _argumentsIidUseOccGam :: IdUseOccGam
-              _argumentsIpp :: PP_Doc
-              _argumentsIppL :: ([PP_Doc])
-              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
-              _argumentsItopInstanceNmL :: ([HsName])
-              _argumentsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 202, column 9)
-              _pp =
-                  ppAppTop  (_functionIconNm,_functionIpp)
-                            _argumentsIppL (_functionIpp >#< ppSpaces _argumentsIppL)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 481, column 9)
-              _eh =
-                  appRngTopApp range_ (_functionIeh : _argumentsIeh)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _functionIerrSq `Seq.union` _argumentsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _functionIppWrap . _argumentsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _argumentsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _argumentsItopInstanceNmL
-              -- copy rule (down)
-              _functionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _functionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _functionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _functionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _functionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _functionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _functionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _functionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _functionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _functionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _functionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _argumentsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _argumentsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _argumentsOgUniq =
-                  _functionIgUniq
-              -- copy rule (down)
-              _argumentsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _argumentsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _argumentsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _argumentsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _argumentsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _argumentsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _argumentsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _argumentsOtopInstanceNmL =
-                  _functionItopInstanceNmL
-              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
-                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL
-              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
-                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_SectionApplication :: Range ->
-                                     T_MaybeExpression ->
-                                     T_Expression ->
-                                     T_MaybeExpression ->
-                                     T_Expression
-sem_Expression_SectionApplication range_ leftExpression_ operator_ rightExpression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _leftExpressionOgUniq :: UID
-              _lUniq_1_nm :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftExpressionOcaseId :: UID
-              _leftExpressionOfixityGam :: FixityGam
-              _leftExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _leftExpressionOidGam :: IdDefOccGam
-              _leftExpressionOmoduleNm :: HsName
-              _leftExpressionOnmLev :: NmLev
-              _leftExpressionOopts :: EHCOpts
-              _leftExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _leftExpressionOtopInstanceNmL :: ([HsName])
-              _operatorOcaseId :: UID
-              _operatorOfixityGam :: FixityGam
-              _operatorOgUniq :: UID
-              _operatorOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _operatorOidGam :: IdDefOccGam
-              _operatorOmoduleNm :: HsName
-              _operatorOnmLev :: NmLev
-              _operatorOopts :: EHCOpts
-              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
-              _operatorOpragmas :: (Set.Set Pragma.Pragma)
-              _operatorOtopInstanceNmL :: ([HsName])
-              _rightExpressionOcaseId :: UID
-              _rightExpressionOfixityGam :: FixityGam
-              _rightExpressionOgUniq :: UID
-              _rightExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _rightExpressionOidGam :: IdDefOccGam
-              _rightExpressionOmoduleNm :: HsName
-              _rightExpressionOnmLev :: NmLev
-              _rightExpressionOopts :: EHCOpts
-              _rightExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _rightExpressionOtopInstanceNmL :: ([HsName])
-              _leftExpressionIeh :: (Maybe EH.Expr)
-              _leftExpressionIerrSq :: ErrSq
-              _leftExpressionIgUniq :: UID
-              _leftExpressionIidUseOccGam :: IdUseOccGam
-              _leftExpressionIpp :: PP_Doc
-              _leftExpressionIppMb :: (Maybe PP_Doc)
-              _leftExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _leftExpressionItopInstanceNmL :: ([HsName])
-              _leftExpressionIundefOccGam :: IdUseOccGam
-              _operatorIconNm :: Name
-              _operatorIeh :: (EH.Expr)
-              _operatorIerrSq :: ErrSq
-              _operatorIgUniq :: UID
-              _operatorIidUseOccGam :: IdUseOccGam
-              _operatorIopChain :: (OpChain EH.Expr)
-              _operatorIoperatorName :: MaybeName
-              _operatorIpp :: PP_Doc
-              _operatorIppWrap :: (PP_Doc -> PP_Doc)
-              _operatorItopInstanceNmL :: ([HsName])
-              _operatorIundefOccGam :: IdUseOccGam
-              _rightExpressionIeh :: (Maybe EH.Expr)
-              _rightExpressionIerrSq :: ErrSq
-              _rightExpressionIgUniq :: UID
-              _rightExpressionIidUseOccGam :: IdUseOccGam
-              _rightExpressionIpp :: PP_Doc
-              _rightExpressionIppMb :: (Maybe PP_Doc)
-              _rightExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _rightExpressionItopInstanceNmL :: ([HsName])
-              _rightExpressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 207, column 9)
-              _pp =
-                  let e = case (_leftExpressionIppMb,_rightExpressionIppMb) of
-                            (Just l ,Nothing) -> l >#< _operatorIpp
-                            (Nothing,Just r ) ->       _operatorIpp >#< r
-                            (Nothing,Nothing) ->       _operatorIpp
-                  in  ppParens e
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 487, column 9)
-              _eh =
-                  ehSection
-                      _lUniq_1_nm range_
-                      EH.Expr_Var EH.PatExpr_Var EH.Expr_Lam
-                      _leftExpressionIeh _operatorIeh _rightExpressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_leftExpressionOgUniq,_lUniq_1_nm) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_1_nm) -> (__cont,lUniq_1_nm)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftExpressionIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightExpressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftExpressionIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightExpressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftExpressionIppWrap . _operatorIppWrap . _rightExpressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftExpressionIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightExpressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightExpressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightExpressionItopInstanceNmL
-              -- copy rule (down)
-              _leftExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _leftExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _leftExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _leftExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _leftExpressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _operatorOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _operatorOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _operatorOgUniq =
-                  _leftExpressionIgUniq
-              -- copy rule (down)
-              _operatorOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _operatorOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _operatorOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _operatorOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _operatorOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _operatorOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _operatorOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _operatorOtopInstanceNmL =
-                  _leftExpressionItopInstanceNmL
-              -- copy rule (down)
-              _rightExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _rightExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightExpressionOgUniq =
-                  _operatorIgUniq
-              -- copy rule (down)
-              _rightExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _rightExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rightExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _rightExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _rightExpressionOtopInstanceNmL =
-                  _operatorItopInstanceNmL
-              ( _leftExpressionIeh,_leftExpressionIerrSq,_leftExpressionIgUniq,_leftExpressionIidUseOccGam,_leftExpressionIpp,_leftExpressionIppMb,_leftExpressionIppWrap,_leftExpressionItopInstanceNmL,_leftExpressionIundefOccGam) =
-                  leftExpression_ _leftExpressionOcaseId _leftExpressionOfixityGam _leftExpressionOgUniq _leftExpressionOgenerDerivMp _leftExpressionOidGam _leftExpressionOmoduleNm _leftExpressionOnmLev _leftExpressionOopts _leftExpressionOpatchEhNmInInstance _leftExpressionOpragmas _leftExpressionOtopInstanceNmL
-              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIgUniq,_operatorIidUseOccGam,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorIundefOccGam) =
-                  operator_ _operatorOcaseId _operatorOfixityGam _operatorOgUniq _operatorOgenerDerivMp _operatorOidGam _operatorOmoduleNm _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOpragmas _operatorOtopInstanceNmL
-              ( _rightExpressionIeh,_rightExpressionIerrSq,_rightExpressionIgUniq,_rightExpressionIidUseOccGam,_rightExpressionIpp,_rightExpressionIppMb,_rightExpressionIppWrap,_rightExpressionItopInstanceNmL,_rightExpressionIundefOccGam) =
-                  rightExpression_ _rightExpressionOcaseId _rightExpressionOfixityGam _rightExpressionOgUniq _rightExpressionOgenerDerivMp _rightExpressionOidGam _rightExpressionOmoduleNm _rightExpressionOnmLev _rightExpressionOopts _rightExpressionOpatchEhNmInInstance _rightExpressionOpragmas _rightExpressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_InfixApplication :: Range ->
-                                   T_Expression ->
-                                   T_Expression ->
-                                   T_Expression ->
-                                   T_Expression
-sem_Expression_InfixApplication range_ leftExpression_ operator_ rightExpression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftExpressionOcaseId :: UID
-              _leftExpressionOfixityGam :: FixityGam
-              _leftExpressionOgUniq :: UID
-              _leftExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _leftExpressionOidGam :: IdDefOccGam
-              _leftExpressionOmoduleNm :: HsName
-              _leftExpressionOnmLev :: NmLev
-              _leftExpressionOopts :: EHCOpts
-              _leftExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _leftExpressionOtopInstanceNmL :: ([HsName])
-              _operatorOcaseId :: UID
-              _operatorOfixityGam :: FixityGam
-              _operatorOgUniq :: UID
-              _operatorOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _operatorOidGam :: IdDefOccGam
-              _operatorOmoduleNm :: HsName
-              _operatorOnmLev :: NmLev
-              _operatorOopts :: EHCOpts
-              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
-              _operatorOpragmas :: (Set.Set Pragma.Pragma)
-              _operatorOtopInstanceNmL :: ([HsName])
-              _rightExpressionOcaseId :: UID
-              _rightExpressionOfixityGam :: FixityGam
-              _rightExpressionOgUniq :: UID
-              _rightExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _rightExpressionOidGam :: IdDefOccGam
-              _rightExpressionOmoduleNm :: HsName
-              _rightExpressionOnmLev :: NmLev
-              _rightExpressionOopts :: EHCOpts
-              _rightExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _rightExpressionOtopInstanceNmL :: ([HsName])
-              _leftExpressionIconNm :: Name
-              _leftExpressionIeh :: (EH.Expr)
-              _leftExpressionIerrSq :: ErrSq
-              _leftExpressionIgUniq :: UID
-              _leftExpressionIidUseOccGam :: IdUseOccGam
-              _leftExpressionIopChain :: (OpChain EH.Expr)
-              _leftExpressionIoperatorName :: MaybeName
-              _leftExpressionIpp :: PP_Doc
-              _leftExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _leftExpressionItopInstanceNmL :: ([HsName])
-              _leftExpressionIundefOccGam :: IdUseOccGam
-              _operatorIconNm :: Name
-              _operatorIeh :: (EH.Expr)
-              _operatorIerrSq :: ErrSq
-              _operatorIgUniq :: UID
-              _operatorIidUseOccGam :: IdUseOccGam
-              _operatorIopChain :: (OpChain EH.Expr)
-              _operatorIoperatorName :: MaybeName
-              _operatorIpp :: PP_Doc
-              _operatorIppWrap :: (PP_Doc -> PP_Doc)
-              _operatorItopInstanceNmL :: ([HsName])
-              _operatorIundefOccGam :: IdUseOccGam
-              _rightExpressionIconNm :: Name
-              _rightExpressionIeh :: (EH.Expr)
-              _rightExpressionIerrSq :: ErrSq
-              _rightExpressionIgUniq :: UID
-              _rightExpressionIidUseOccGam :: IdUseOccGam
-              _rightExpressionIopChain :: (OpChain EH.Expr)
-              _rightExpressionIoperatorName :: MaybeName
-              _rightExpressionIpp :: PP_Doc
-              _rightExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _rightExpressionItopInstanceNmL :: ([HsName])
-              _rightExpressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 205, column 9)
-              _pp =
-                  _leftExpressionIpp >#< _operatorIpp >#< _rightExpressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 58, column 9)
-              _fgi =
-                  case _operatorIoperatorName of
-                    Just n
-                      -> fixityGamLookup n _lhsIfixityGam
-                    _ -> defaultFixityGamInfo
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 100, column 9)
-              _lhsOopChain =
-                  OpChain_Op _operatorIeh _operatorIpp (fgiFixity _fgi) (fgiPrio _fgi) range_ _leftExpressionIopChain _rightExpressionIopChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 483, column 9)
-              _eh =
-                  appRngParApp range_ [_operatorIeh,_leftExpressionIeh,_rightExpressionIeh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftExpressionIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightExpressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftExpressionIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightExpressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftExpressionIppWrap . _operatorIppWrap . _rightExpressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftExpressionIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightExpressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightExpressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightExpressionItopInstanceNmL
-              -- copy rule (down)
-              _leftExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _leftExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftExpressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _leftExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _leftExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _leftExpressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _operatorOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _operatorOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _operatorOgUniq =
-                  _leftExpressionIgUniq
-              -- copy rule (down)
-              _operatorOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _operatorOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _operatorOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _operatorOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _operatorOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _operatorOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _operatorOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _operatorOtopInstanceNmL =
-                  _leftExpressionItopInstanceNmL
-              -- copy rule (down)
-              _rightExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _rightExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightExpressionOgUniq =
-                  _operatorIgUniq
-              -- copy rule (down)
-              _rightExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _rightExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rightExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _rightExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _rightExpressionOtopInstanceNmL =
-                  _operatorItopInstanceNmL
-              ( _leftExpressionIconNm,_leftExpressionIeh,_leftExpressionIerrSq,_leftExpressionIgUniq,_leftExpressionIidUseOccGam,_leftExpressionIopChain,_leftExpressionIoperatorName,_leftExpressionIpp,_leftExpressionIppWrap,_leftExpressionItopInstanceNmL,_leftExpressionIundefOccGam) =
-                  leftExpression_ _leftExpressionOcaseId _leftExpressionOfixityGam _leftExpressionOgUniq _leftExpressionOgenerDerivMp _leftExpressionOidGam _leftExpressionOmoduleNm _leftExpressionOnmLev _leftExpressionOopts _leftExpressionOpatchEhNmInInstance _leftExpressionOpragmas _leftExpressionOtopInstanceNmL
-              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIgUniq,_operatorIidUseOccGam,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorIundefOccGam) =
-                  operator_ _operatorOcaseId _operatorOfixityGam _operatorOgUniq _operatorOgenerDerivMp _operatorOidGam _operatorOmoduleNm _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOpragmas _operatorOtopInstanceNmL
-              ( _rightExpressionIconNm,_rightExpressionIeh,_rightExpressionIerrSq,_rightExpressionIgUniq,_rightExpressionIidUseOccGam,_rightExpressionIopChain,_rightExpressionIoperatorName,_rightExpressionIpp,_rightExpressionIppWrap,_rightExpressionItopInstanceNmL,_rightExpressionIundefOccGam) =
-                  rightExpression_ _rightExpressionOcaseId _rightExpressionOfixityGam _rightExpressionOgUniq _rightExpressionOgenerDerivMp _rightExpressionOidGam _rightExpressionOmoduleNm _rightExpressionOnmLev _rightExpressionOopts _rightExpressionOpatchEhNmInInstance _rightExpressionOpragmas _rightExpressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_InfixApplicationChainTop :: Range ->
-                                           T_Expression ->
-                                           T_Expression
-sem_Expression_InfixApplicationChainTop range_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 22, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errRearr, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 106, column 25)
-              (_ehRearrOpChain,_errRearr) =
-                  opChainReArrange _expressionIopChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 106, column 9)
-              _ehFromOpChain =
-                  unOpChain _ehRearrOpChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 485, column 9)
-              _eh =
-                  _ehFromOpChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _expressionIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Lambda :: Range ->
-                         T_Patterns ->
-                         T_Expression ->
-                         T_Expression
-sem_Expression_Lambda range_ patterns_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _expressionOidGam :: IdDefOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([EH.PatExpr])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 344, column 9)
-              _expressionOidGam =
-                  gamUnion _patternsIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 104, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _patternsIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 20, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, _patternsIerrSq, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 213, column 9)
-              _pp =
-                  "\\" >|< ppSpaces _patternsIppL >#< "->" >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 493, column 9)
-              _eh =
-                  foldr (rngLift range_ EH.Expr_Lam) _expressionIeh _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _patternsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _patternsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _expressionOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Let :: Range ->
-                      Bool ->
-                      T_Declarations ->
-                      T_Expression ->
-                      T_Expression
-sem_Expression_Let range_ isStrict_ declarations_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _declarationsOcaseId :: UID
-              _declarationsOfixityGam :: FixityGam
-              _declarationsOgUniq :: UID
-              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _declarationsOidGam :: IdDefOccGam
-              _declarationsOmoduleNm :: HsName
-              _declarationsOnmLev :: NmLev
-              _declarationsOopts :: EHCOpts
-              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
-              _declarationsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _declarationsIeh :: ([EH.Decl])
-              _declarationsIerrSq :: ErrSq
-              _declarationsIgUniq :: UID
-              _declarationsIgathFixityGam :: FixityGam
-              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _declarationsIidDefOccGam :: IdDefOccGam
-              _declarationsIidDpdMp :: IdDpdMp
-              _declarationsIidOccDefs :: ([IdOcc])
-              _declarationsIidTySigDefOccGam :: IdDefOccGam
-              _declarationsIidUseOccGam :: IdUseOccGam
-              _declarationsIneedsError :: Bool
-              _declarationsIpp :: PP_Doc
-              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
-              _declarationsItopInstanceNmL :: ([HsName])
-              _declarationsIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 342, column 9)
-              _idGam =
-                  gamUnion _declarationsIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 890, column 9)
-              _sccOrder =
-                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1020, column 29)
-              (_mkSccLet,_,_errReorder) =
-                  mkIdOccSccEH range_ isStrict_ _declarationsIidDefOccGam (Just _sccOrder)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 101, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 17, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errReorder, _declarationsIerrSq, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 215, column 9)
-              _pp =
-                  "let" >|< (if isStrict_ then pp "!" else empty) >#< (_declarationsIpp >-< _ppExtra) >#< "in" >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 216, column 17)
-              _ppExtra =
-                  empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 26, column 9)
-              _fixityGam =
-                  _declarationsIgathFixityGam `gamUnion` _lhsIfixityGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 495, column 9)
-              _eh =
-                  _mkSccLet _expressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _declarationsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _declarationsIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _declarationsIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _declarationsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _declarationsOfixityGam =
-                  _fixityGam
-              -- copy rule (down)
-              _declarationsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _declarationsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _declarationsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _declarationsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _declarationsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _declarationsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _declarationsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _declarationsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _declarationsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _expressionOfixityGam =
-                  _fixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _declarationsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _expressionOidGam =
-                  _idGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _expressionOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _declarationsItopInstanceNmL
-              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
-                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Tuple :: Range ->
-                        T_Expressions ->
-                        T_Expression
-sem_Expression_Tuple range_ expressions_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionsOcaseId :: UID
-              _expressionsOfixityGam :: FixityGam
-              _expressionsOgUniq :: UID
-              _expressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionsOidGam :: IdDefOccGam
-              _expressionsOmoduleNm :: HsName
-              _expressionsOnmLev :: NmLev
-              _expressionsOopts :: EHCOpts
-              _expressionsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionsOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionsOtopInstanceNmL :: ([HsName])
-              _expressionsIeh :: ([EH.Expr])
-              _expressionsIerrSq :: ErrSq
-              _expressionsIgUniq :: UID
-              _expressionsIidUseOccGam :: IdUseOccGam
-              _expressionsIpp :: PP_Doc
-              _expressionsIppL :: ([PP_Doc])
-              _expressionsIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionsItopInstanceNmL :: ([HsName])
-              _expressionsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 218, column 9)
-              _pp =
-                  ppParensCommas _expressionsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 497, column 9)
-              _eh =
-                  ehExpConApp range_ (hsnProd (length _expressionsIeh)) _expressionsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionsItopInstanceNmL
-              -- copy rule (down)
-              _expressionsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionsIeh,_expressionsIerrSq,_expressionsIgUniq,_expressionsIidUseOccGam,_expressionsIpp,_expressionsIppL,_expressionsIppWrap,_expressionsItopInstanceNmL,_expressionsIundefOccGam) =
-                  expressions_ _expressionsOcaseId _expressionsOfixityGam _expressionsOgUniq _expressionsOgenerDerivMp _expressionsOidGam _expressionsOmoduleNm _expressionsOnmLev _expressionsOopts _expressionsOpatchEhNmInInstance _expressionsOpragmas _expressionsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Typed :: Range ->
-                        T_Expression ->
-                        T_Type ->
-                        T_Expression
-sem_Expression_Typed range_ expression_ type_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _typeOidGam :: IdDefOccGam
-              _lhsOconNm :: Name
-              _typeOnmLev :: NmLev
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOisAsPred :: Bool
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 234, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 346, column 9)
-              _typeOidGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 52, column 9)
-              _typeOnmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 220, column 9)
-              _pp =
-                  _expressionIpp >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 499, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_TypeAs False _typeIeh _expressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 218, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq `Seq.union` _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _typeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _expressionIgUniq
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Negate :: Range ->
-                         T_Expression ->
-                         T_Expression
-sem_Expression_Negate range_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 496, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnNegate] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 498, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_expressionIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 24, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 222, column 9)
-              _pp =
-                  "-" >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 501, column 9)
-              _eh =
-                  ehExpVarApp range_ _refname [_expressionIeh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Annotate :: Range ->
-                           T_ExpressionAnnotation ->
-                           T_Expression ->
-                           T_Expression
-sem_Expression_Annotate range_ annotation_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _annotationOcaseId :: UID
-              _annotationOfixityGam :: FixityGam
-              _annotationOgUniq :: UID
-              _annotationOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _annotationOidGam :: IdDefOccGam
-              _annotationOmoduleNm :: HsName
-              _annotationOnmLev :: NmLev
-              _annotationOopts :: EHCOpts
-              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
-              _annotationOpragmas :: (Set.Set Pragma.Pragma)
-              _annotationOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _annotationIeh :: (EH.ExprAnn)
-              _annotationIerrSq :: ErrSq
-              _annotationIgUniq :: UID
-              _annotationIidUseOccGam :: IdUseOccGam
-              _annotationIpp :: PP_Doc
-              _annotationIppWrap :: (PP_Doc -> PP_Doc)
-              _annotationItopInstanceNmL :: ([HsName])
-              _annotationIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 503, column 17)
-              _eh =
-                  rngLift range_ EH.Expr_Ann _annotationIeh _expressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _annotationIerrSq `Seq.union` _expressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _annotationIidUseOccGam `gamAddGam` _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _annotationIpp >-< _expressionIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _annotationIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _annotationIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _annotationOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _annotationOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _annotationOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _annotationOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _annotationOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _annotationOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _annotationOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _annotationOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _annotationOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _annotationOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _annotationOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _annotationIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _annotationItopInstanceNmL
-              ( _annotationIeh,_annotationIerrSq,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
-                  annotation_ _annotationOcaseId _annotationOfixityGam _annotationOgUniq _annotationOgenerDerivMp _annotationOidGam _annotationOmoduleNm _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOpragmas _annotationOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_ImpredicativeApplication :: Range ->
-                                           T_Expression ->
-                                           T_Expressions ->
-                                           T_Expression
-sem_Expression_ImpredicativeApplication range_ function_ arguments_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _functionOcaseId :: UID
-              _functionOfixityGam :: FixityGam
-              _functionOgUniq :: UID
-              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _functionOidGam :: IdDefOccGam
-              _functionOmoduleNm :: HsName
-              _functionOnmLev :: NmLev
-              _functionOopts :: EHCOpts
-              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _functionOpragmas :: (Set.Set Pragma.Pragma)
-              _functionOtopInstanceNmL :: ([HsName])
-              _argumentsOcaseId :: UID
-              _argumentsOfixityGam :: FixityGam
-              _argumentsOgUniq :: UID
-              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _argumentsOidGam :: IdDefOccGam
-              _argumentsOmoduleNm :: HsName
-              _argumentsOnmLev :: NmLev
-              _argumentsOopts :: EHCOpts
-              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
-              _argumentsOtopInstanceNmL :: ([HsName])
-              _functionIconNm :: Name
-              _functionIeh :: (EH.Expr)
-              _functionIerrSq :: ErrSq
-              _functionIgUniq :: UID
-              _functionIidUseOccGam :: IdUseOccGam
-              _functionIopChain :: (OpChain EH.Expr)
-              _functionIoperatorName :: MaybeName
-              _functionIpp :: PP_Doc
-              _functionIppWrap :: (PP_Doc -> PP_Doc)
-              _functionItopInstanceNmL :: ([HsName])
-              _functionIundefOccGam :: IdUseOccGam
-              _argumentsIeh :: ([EH.Expr])
-              _argumentsIerrSq :: ErrSq
-              _argumentsIgUniq :: UID
-              _argumentsIidUseOccGam :: IdUseOccGam
-              _argumentsIpp :: PP_Doc
-              _argumentsIppL :: ([PP_Doc])
-              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
-              _argumentsItopInstanceNmL :: ([HsName])
-              _argumentsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 224, column 9)
-              _pp =
-                  _functionIpp >#< "~" >|< _argumentsIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 505, column 9)
-              _eh =
-                  ehExpApp' (rngLift range_ EH.Expr_AppImpred) range_ _functionIeh _argumentsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _functionIerrSq `Seq.union` _argumentsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _functionIppWrap . _argumentsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _argumentsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _argumentsItopInstanceNmL
-              -- copy rule (down)
-              _functionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _functionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _functionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _functionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _functionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _functionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _functionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _functionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _functionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _functionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _functionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _argumentsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _argumentsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _argumentsOgUniq =
-                  _functionIgUniq
-              -- copy rule (down)
-              _argumentsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _argumentsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _argumentsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _argumentsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _argumentsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _argumentsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _argumentsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _argumentsOtopInstanceNmL =
-                  _functionItopInstanceNmL
-              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
-                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL
-              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
-                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_If :: Range ->
-                     T_Expression ->
-                     T_Expression ->
-                     T_Expression ->
-                     T_Expression
-sem_Expression_If range_ guardExpression_ thenExpression_ elseExpression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _guardExpressionOcaseId :: UID
-              _guardExpressionOfixityGam :: FixityGam
-              _guardExpressionOgUniq :: UID
-              _guardExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _guardExpressionOidGam :: IdDefOccGam
-              _guardExpressionOmoduleNm :: HsName
-              _guardExpressionOnmLev :: NmLev
-              _guardExpressionOopts :: EHCOpts
-              _guardExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _guardExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _guardExpressionOtopInstanceNmL :: ([HsName])
-              _thenExpressionOcaseId :: UID
-              _thenExpressionOfixityGam :: FixityGam
-              _thenExpressionOgUniq :: UID
-              _thenExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _thenExpressionOidGam :: IdDefOccGam
-              _thenExpressionOmoduleNm :: HsName
-              _thenExpressionOnmLev :: NmLev
-              _thenExpressionOopts :: EHCOpts
-              _thenExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _thenExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _thenExpressionOtopInstanceNmL :: ([HsName])
-              _elseExpressionOcaseId :: UID
-              _elseExpressionOfixityGam :: FixityGam
-              _elseExpressionOgUniq :: UID
-              _elseExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _elseExpressionOidGam :: IdDefOccGam
-              _elseExpressionOmoduleNm :: HsName
-              _elseExpressionOnmLev :: NmLev
-              _elseExpressionOopts :: EHCOpts
-              _elseExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _elseExpressionOpragmas :: (Set.Set Pragma.Pragma)
-              _elseExpressionOtopInstanceNmL :: ([HsName])
-              _guardExpressionIconNm :: Name
-              _guardExpressionIeh :: (EH.Expr)
-              _guardExpressionIerrSq :: ErrSq
-              _guardExpressionIgUniq :: UID
-              _guardExpressionIidUseOccGam :: IdUseOccGam
-              _guardExpressionIopChain :: (OpChain EH.Expr)
-              _guardExpressionIoperatorName :: MaybeName
-              _guardExpressionIpp :: PP_Doc
-              _guardExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _guardExpressionItopInstanceNmL :: ([HsName])
-              _guardExpressionIundefOccGam :: IdUseOccGam
-              _thenExpressionIconNm :: Name
-              _thenExpressionIeh :: (EH.Expr)
-              _thenExpressionIerrSq :: ErrSq
-              _thenExpressionIgUniq :: UID
-              _thenExpressionIidUseOccGam :: IdUseOccGam
-              _thenExpressionIopChain :: (OpChain EH.Expr)
-              _thenExpressionIoperatorName :: MaybeName
-              _thenExpressionIpp :: PP_Doc
-              _thenExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _thenExpressionItopInstanceNmL :: ([HsName])
-              _thenExpressionIundefOccGam :: IdUseOccGam
-              _elseExpressionIconNm :: Name
-              _elseExpressionIeh :: (EH.Expr)
-              _elseExpressionIerrSq :: ErrSq
-              _elseExpressionIgUniq :: UID
-              _elseExpressionIidUseOccGam :: IdUseOccGam
-              _elseExpressionIopChain :: (OpChain EH.Expr)
-              _elseExpressionIoperatorName :: MaybeName
-              _elseExpressionIpp :: PP_Doc
-              _elseExpressionIppWrap :: (PP_Doc -> PP_Doc)
-              _elseExpressionItopInstanceNmL :: ([HsName])
-              _elseExpressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 508, column 29)
-              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 510, column 29)
-              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 508, column 9)
-              _idUseOccGam =
-                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 513, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_guardExpressionIidUseOccGam,_thenExpressionIidUseOccGam,_elseExpressionIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 30, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardExpressionIerrSq, _thenExpressionIerrSq, _elseExpressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 226, column 9)
-              _pp =
-                  "if" >#< _guardExpressionIpp >-< "then" >#< _thenExpressionIpp >-< "else" >#< _elseExpressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 507, column 9)
-              _eh =
-                  EH.mkIf' (_typerefname : _valrefnames) range_ _guardExpressionIeh _thenExpressionIeh _elseExpressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _guardExpressionIppWrap . _thenExpressionIppWrap . _elseExpressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _guardExpressionIundefOccGam `gamUnion` _thenExpressionIundefOccGam `gamUnion` _elseExpressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _elseExpressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _elseExpressionItopInstanceNmL
-              -- copy rule (down)
-              _guardExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _guardExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _guardExpressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _guardExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _guardExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _guardExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _guardExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _guardExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _guardExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _guardExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _guardExpressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _thenExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _thenExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _thenExpressionOgUniq =
-                  _guardExpressionIgUniq
-              -- copy rule (down)
-              _thenExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _thenExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _thenExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _thenExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _thenExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _thenExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _thenExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _thenExpressionOtopInstanceNmL =
-                  _guardExpressionItopInstanceNmL
-              -- copy rule (down)
-              _elseExpressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _elseExpressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _elseExpressionOgUniq =
-                  _thenExpressionIgUniq
-              -- copy rule (down)
-              _elseExpressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _elseExpressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _elseExpressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _elseExpressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _elseExpressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _elseExpressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _elseExpressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _elseExpressionOtopInstanceNmL =
-                  _thenExpressionItopInstanceNmL
-              ( _guardExpressionIconNm,_guardExpressionIeh,_guardExpressionIerrSq,_guardExpressionIgUniq,_guardExpressionIidUseOccGam,_guardExpressionIopChain,_guardExpressionIoperatorName,_guardExpressionIpp,_guardExpressionIppWrap,_guardExpressionItopInstanceNmL,_guardExpressionIundefOccGam) =
-                  guardExpression_ _guardExpressionOcaseId _guardExpressionOfixityGam _guardExpressionOgUniq _guardExpressionOgenerDerivMp _guardExpressionOidGam _guardExpressionOmoduleNm _guardExpressionOnmLev _guardExpressionOopts _guardExpressionOpatchEhNmInInstance _guardExpressionOpragmas _guardExpressionOtopInstanceNmL
-              ( _thenExpressionIconNm,_thenExpressionIeh,_thenExpressionIerrSq,_thenExpressionIgUniq,_thenExpressionIidUseOccGam,_thenExpressionIopChain,_thenExpressionIoperatorName,_thenExpressionIpp,_thenExpressionIppWrap,_thenExpressionItopInstanceNmL,_thenExpressionIundefOccGam) =
-                  thenExpression_ _thenExpressionOcaseId _thenExpressionOfixityGam _thenExpressionOgUniq _thenExpressionOgenerDerivMp _thenExpressionOidGam _thenExpressionOmoduleNm _thenExpressionOnmLev _thenExpressionOopts _thenExpressionOpatchEhNmInInstance _thenExpressionOpragmas _thenExpressionOtopInstanceNmL
-              ( _elseExpressionIconNm,_elseExpressionIeh,_elseExpressionIerrSq,_elseExpressionIgUniq,_elseExpressionIidUseOccGam,_elseExpressionIopChain,_elseExpressionIoperatorName,_elseExpressionIpp,_elseExpressionIppWrap,_elseExpressionItopInstanceNmL,_elseExpressionIundefOccGam) =
-                  elseExpression_ _elseExpressionOcaseId _elseExpressionOfixityGam _elseExpressionOgUniq _elseExpressionOgenerDerivMp _elseExpressionOidGam _elseExpressionOmoduleNm _elseExpressionOnmLev _elseExpressionOopts _elseExpressionOpatchEhNmInInstance _elseExpressionOpragmas _elseExpressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Case :: Range ->
-                       T_Expression ->
-                       T_Alternatives ->
-                       T_Expression
-sem_Expression_Case range_ expression_ alternatives_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _expressionOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _alternativesOcaseId :: UID
-              _alternativesOfixityGam :: FixityGam
-              _alternativesOgUniq :: UID
-              _alternativesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _alternativesOidGam :: IdDefOccGam
-              _alternativesOmoduleNm :: HsName
-              _alternativesOnmLev :: NmLev
-              _alternativesOopts :: EHCOpts
-              _alternativesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _alternativesOpragmas :: (Set.Set Pragma.Pragma)
-              _alternativesOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _alternativesIeh :: ([EH.CaseAlt])
-              _alternativesIerrSq :: ErrSq
-              _alternativesIgUniq :: UID
-              _alternativesIidUseOccGam :: IdUseOccGam
-              _alternativesIpp :: PP_Doc
-              _alternativesIppWrap :: (PP_Doc -> PP_Doc)
-              _alternativesItopInstanceNmL :: ([HsName])
-              _alternativesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 228, column 9)
-              _pp =
-                  "case" >#< _expressionIpp >#< "of" >-< indent 2 _alternativesIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 509, column 9)
-              _eh =
-                  EH.mkCase' range_ _expressionIeh (Just $ Set.singleton _caseId) Set.empty False _alternativesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 868, column 9)
-              _caseId =
-                  _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_expressionOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq `Seq.union` _alternativesIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _alternativesIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _alternativesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _alternativesIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _alternativesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _alternativesItopInstanceNmL
-              -- copy rule (from local)
-              _expressionOcaseId =
-                  _caseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _alternativesOcaseId =
-                  _caseId
-              -- copy rule (down)
-              _alternativesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _alternativesOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _alternativesOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _alternativesOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _alternativesOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _alternativesOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _alternativesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _alternativesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _alternativesOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _alternativesOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _alternativesIeh,_alternativesIerrSq,_alternativesIgUniq,_alternativesIidUseOccGam,_alternativesIpp,_alternativesIppWrap,_alternativesItopInstanceNmL,_alternativesIundefOccGam) =
-                  alternatives_ _alternativesOcaseId _alternativesOfixityGam _alternativesOgUniq _alternativesOgenerDerivMp _alternativesOidGam _alternativesOmoduleNm _alternativesOnmLev _alternativesOopts _alternativesOpatchEhNmInInstance _alternativesOpragmas _alternativesOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_List :: Range ->
-                       T_Expressions ->
-                       T_Expression
-sem_Expression_List range_ expressions_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionsOcaseId :: UID
-              _expressionsOfixityGam :: FixityGam
-              _expressionsOgUniq :: UID
-              _expressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionsOidGam :: IdDefOccGam
-              _expressionsOmoduleNm :: HsName
-              _expressionsOnmLev :: NmLev
-              _expressionsOopts :: EHCOpts
-              _expressionsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionsOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionsOtopInstanceNmL :: ([HsName])
-              _expressionsIeh :: ([EH.Expr])
-              _expressionsIerrSq :: ErrSq
-              _expressionsIgUniq :: UID
-              _expressionsIidUseOccGam :: IdUseOccGam
-              _expressionsIpp :: PP_Doc
-              _expressionsIppL :: ([PP_Doc])
-              _expressionsIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionsItopInstanceNmL :: ([HsName])
-              _expressionsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 500, column 29)
-              (_,_refnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 502, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_expressionsIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 26, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _expressionsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 230, column 9)
-              _pp =
-                  ppBracketsCommas _expressionsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 511, column 9)
-              _eh =
-                  foldr (\l r -> ehExpConApp range_ (_refnames !! 0) [l,r]) (rngLift range_ EH.Expr_Con (_refnames !! 1)) _expressionsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionsItopInstanceNmL
-              -- copy rule (down)
-              _expressionsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionsIeh,_expressionsIerrSq,_expressionsIgUniq,_expressionsIidUseOccGam,_expressionsIpp,_expressionsIppL,_expressionsIppWrap,_expressionsItopInstanceNmL,_expressionsIundefOccGam) =
-                  expressions_ _expressionsOcaseId _expressionsOfixityGam _expressionsOgUniq _expressionsOgenerDerivMp _expressionsOidGam _expressionsOmoduleNm _expressionsOnmLev _expressionsOopts _expressionsOpatchEhNmInInstance _expressionsOpragmas _expressionsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Enum :: Range ->
-                       T_Expression ->
-                       T_MaybeExpression ->
-                       T_MaybeExpression ->
-                       T_Expression
-sem_Expression_Enum range_ from_ then_ to_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _fromOcaseId :: UID
-              _fromOfixityGam :: FixityGam
-              _fromOgUniq :: UID
-              _fromOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _fromOidGam :: IdDefOccGam
-              _fromOmoduleNm :: HsName
-              _fromOnmLev :: NmLev
-              _fromOopts :: EHCOpts
-              _fromOpatchEhNmInInstance :: PatchEhNmInInstance
-              _fromOpragmas :: (Set.Set Pragma.Pragma)
-              _fromOtopInstanceNmL :: ([HsName])
-              _thenOcaseId :: UID
-              _thenOfixityGam :: FixityGam
-              _thenOgUniq :: UID
-              _thenOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _thenOidGam :: IdDefOccGam
-              _thenOmoduleNm :: HsName
-              _thenOnmLev :: NmLev
-              _thenOopts :: EHCOpts
-              _thenOpatchEhNmInInstance :: PatchEhNmInInstance
-              _thenOpragmas :: (Set.Set Pragma.Pragma)
-              _thenOtopInstanceNmL :: ([HsName])
-              _toOcaseId :: UID
-              _toOfixityGam :: FixityGam
-              _toOgUniq :: UID
-              _toOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _toOidGam :: IdDefOccGam
-              _toOmoduleNm :: HsName
-              _toOnmLev :: NmLev
-              _toOopts :: EHCOpts
-              _toOpatchEhNmInInstance :: PatchEhNmInInstance
-              _toOpragmas :: (Set.Set Pragma.Pragma)
-              _toOtopInstanceNmL :: ([HsName])
-              _fromIconNm :: Name
-              _fromIeh :: (EH.Expr)
-              _fromIerrSq :: ErrSq
-              _fromIgUniq :: UID
-              _fromIidUseOccGam :: IdUseOccGam
-              _fromIopChain :: (OpChain EH.Expr)
-              _fromIoperatorName :: MaybeName
-              _fromIpp :: PP_Doc
-              _fromIppWrap :: (PP_Doc -> PP_Doc)
-              _fromItopInstanceNmL :: ([HsName])
-              _fromIundefOccGam :: IdUseOccGam
-              _thenIeh :: (Maybe EH.Expr)
-              _thenIerrSq :: ErrSq
-              _thenIgUniq :: UID
-              _thenIidUseOccGam :: IdUseOccGam
-              _thenIpp :: PP_Doc
-              _thenIppMb :: (Maybe PP_Doc)
-              _thenIppWrap :: (PP_Doc -> PP_Doc)
-              _thenItopInstanceNmL :: ([HsName])
-              _thenIundefOccGam :: IdUseOccGam
-              _toIeh :: (Maybe EH.Expr)
-              _toIerrSq :: ErrSq
-              _toIgUniq :: UID
-              _toIidUseOccGam :: IdUseOccGam
-              _toIpp :: PP_Doc
-              _toIppMb :: (Maybe PP_Doc)
-              _toIppWrap :: (PP_Doc -> PP_Doc)
-              _toItopInstanceNmL :: ([HsName])
-              _toIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 504, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [_enumNm] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 506, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_fromIidUseOccGam,_thenIidUseOccGam,_toIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 28, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _fromIerrSq, _thenIerrSq, _toIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 232, column 9)
-              _pp =
-                  case (_fromIpp,_thenIppMb,_toIppMb) of
-                    (fr,Just th,Just to) -> ppBrackets (fr >|< ","  >#< th >#< ".." >#< to)
-                    (fr,Just th,Nothing) -> ppBrackets (fr >|< ","  >#< th >#< ".."       )
-                    (fr,Nothing,Just to) -> ppBrackets (fr >#< ".." >#< to                )
-                    (fr,Nothing,Nothing) -> ppBrackets (fr >#< ".."                       )
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 513, column 9)
-              _enumNm =
-                  case (_fromIeh,_thenIeh,_toIeh) of
-                    (fr,Just th,Just to) -> hsnEnumFromThenTo
-                    (fr,Just th,Nothing) -> hsnEnumFromThen
-                    (fr,Nothing,Just to) -> hsnEnumFromTo
-                    (fr,Nothing,Nothing) -> hsnEnumFrom
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 513, column 9)
-              _eh =
-                  case (_fromIeh,_thenIeh,_toIeh) of
-                    (fr,Just th,Just to) -> ehExpVarApp range_ _refname [fr,th,to]
-                    (fr,Just th,Nothing) -> ehExpVarApp range_ _refname [fr,th   ]
-                    (fr,Nothing,Just to) -> ehExpVarApp range_ _refname [fr   ,to]
-                    (fr,Nothing,Nothing) -> ehExpVarApp range_ _refname [fr      ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _fromIppWrap . _thenIppWrap . _toIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _fromIundefOccGam `gamUnion` _thenIundefOccGam `gamUnion` _toIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _toIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _toItopInstanceNmL
-              -- copy rule (down)
-              _fromOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _fromOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _fromOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _fromOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _fromOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _fromOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _fromOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _fromOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _fromOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _fromOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _fromOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _thenOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _thenOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _thenOgUniq =
-                  _fromIgUniq
-              -- copy rule (down)
-              _thenOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _thenOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _thenOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _thenOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _thenOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _thenOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _thenOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _thenOtopInstanceNmL =
-                  _fromItopInstanceNmL
-              -- copy rule (down)
-              _toOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _toOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _toOgUniq =
-                  _thenIgUniq
-              -- copy rule (down)
-              _toOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _toOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _toOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _toOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _toOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _toOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _toOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _toOtopInstanceNmL =
-                  _thenItopInstanceNmL
-              ( _fromIconNm,_fromIeh,_fromIerrSq,_fromIgUniq,_fromIidUseOccGam,_fromIopChain,_fromIoperatorName,_fromIpp,_fromIppWrap,_fromItopInstanceNmL,_fromIundefOccGam) =
-                  from_ _fromOcaseId _fromOfixityGam _fromOgUniq _fromOgenerDerivMp _fromOidGam _fromOmoduleNm _fromOnmLev _fromOopts _fromOpatchEhNmInInstance _fromOpragmas _fromOtopInstanceNmL
-              ( _thenIeh,_thenIerrSq,_thenIgUniq,_thenIidUseOccGam,_thenIpp,_thenIppMb,_thenIppWrap,_thenItopInstanceNmL,_thenIundefOccGam) =
-                  then_ _thenOcaseId _thenOfixityGam _thenOgUniq _thenOgenerDerivMp _thenOidGam _thenOmoduleNm _thenOnmLev _thenOopts _thenOpatchEhNmInInstance _thenOpragmas _thenOtopInstanceNmL
-              ( _toIeh,_toIerrSq,_toIgUniq,_toIidUseOccGam,_toIpp,_toIppMb,_toIppWrap,_toItopInstanceNmL,_toIundefOccGam) =
-                  to_ _toOcaseId _toOfixityGam _toOgUniq _toOgenerDerivMp _toOidGam _toOmoduleNm _toOnmLev _toOopts _toOpatchEhNmInInstance _toOpragmas _toOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Comprehension :: Range ->
-                                T_Expression ->
-                                T_Qualifiers ->
-                                T_Expression
-sem_Expression_Comprehension range_ expression_ qualifiers_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _expressionOidGam :: IdDefOccGam
-              _qualifiersOidGam :: IdDefOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _qualifiersOcaseId :: UID
-              _qualifiersOfixityGam :: FixityGam
-              _qualifiersOgUniq :: UID
-              _qualifiersOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _qualifiersOmoduleNm :: HsName
-              _qualifiersOnmLev :: NmLev
-              _qualifiersOopts :: EHCOpts
-              _qualifiersOpatchEhNmInInstance :: PatchEhNmInInstance
-              _qualifiersOpragmas :: (Set.Set Pragma.Pragma)
-              _qualifiersOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _qualifiersIeh :: ([EH.Expr -> EH.Expr])
-              _qualifiersIerrSq :: ErrSq
-              _qualifiersIgUniq :: UID
-              _qualifiersIidGam :: IdDefOccGam
-              _qualifiersIidUseOccGam :: IdUseOccGam
-              _qualifiersIpp :: PP_Doc
-              _qualifiersIppL :: ([PP_Doc])
-              _qualifiersIppWrap :: (PP_Doc -> PP_Doc)
-              _qualifiersItopInstanceNmL :: ([HsName])
-              _qualifiersIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 348, column 9)
-              _expressionOidGam =
-                  _qualifiersIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 349, column 9)
-              _qualifiersOidGam =
-                  _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 238, column 9)
-              _pp =
-                  ppBrackets (_expressionIpp >#< "|" >#< ppCommas' _qualifiersIppL)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 524, column 9)
-              _eh =
-                  foldr ($) _expressionIeh _qualifiersIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq `Seq.union` _qualifiersIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _qualifiersIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _qualifiersIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _qualifiersIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _qualifiersIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _qualifiersItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _qualifiersOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _qualifiersOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _qualifiersOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _qualifiersOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _qualifiersOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _qualifiersOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _qualifiersOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _qualifiersOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _qualifiersOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _qualifiersOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _qualifiersIeh,_qualifiersIerrSq,_qualifiersIgUniq,_qualifiersIidGam,_qualifiersIidUseOccGam,_qualifiersIpp,_qualifiersIppL,_qualifiersIppWrap,_qualifiersItopInstanceNmL,_qualifiersIundefOccGam) =
-                  qualifiers_ _qualifiersOcaseId _qualifiersOfixityGam _qualifiersOgUniq _qualifiersOgenerDerivMp _qualifiersOidGam _qualifiersOmoduleNm _qualifiersOnmLev _qualifiersOopts _qualifiersOpatchEhNmInInstance _qualifiersOpragmas _qualifiersOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_RecordConstruction :: Range ->
-                                     Name ->
-                                     T_RecordExpressionBindings ->
-                                     T_Expression
-sem_Expression_RecordConstruction range_ name_ recordExpressionBindings_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _recordExpressionBindingsOcaseId :: UID
-              _recordExpressionBindingsOfixityGam :: FixityGam
-              _recordExpressionBindingsOgUniq :: UID
-              _recordExpressionBindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _recordExpressionBindingsOidGam :: IdDefOccGam
-              _recordExpressionBindingsOmoduleNm :: HsName
-              _recordExpressionBindingsOnmLev :: NmLev
-              _recordExpressionBindingsOopts :: EHCOpts
-              _recordExpressionBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _recordExpressionBindingsOpragmas :: (Set.Set Pragma.Pragma)
-              _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
-              _recordExpressionBindingsIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
-              _recordExpressionBindingsIerrSq :: ErrSq
-              _recordExpressionBindingsIgUniq :: UID
-              _recordExpressionBindingsIidUseOccGam :: IdUseOccGam
-              _recordExpressionBindingsIpp :: PP_Doc
-              _recordExpressionBindingsIppL :: ([PP_Doc])
-              _recordExpressionBindingsIppWrap :: (PP_Doc -> PP_Doc)
-              _recordExpressionBindingsItopInstanceNmL :: ([HsName])
-              _recordExpressionBindingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 483, column 9)
-              _idAsp =
-                  IdAsp_Val_Con
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 486, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
-                      dbgnm = mkHNm "putStrLn"
-                      dbgoc = IdOcc dbgnm IdOcc_Val
-                  in
-                              x
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 494, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_recordExpressionBindingsIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 32, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _recordExpressionBindingsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 240, column 9)
-              _pp =
-                  name_ >#< ppCurlysCommas' _recordExpressionBindingsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 526, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldExpr_Con _refname) _recordExpressionBindingsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _recordExpressionBindingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _recordExpressionBindingsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _recordExpressionBindingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _recordExpressionBindingsItopInstanceNmL
-              -- copy rule (down)
-              _recordExpressionBindingsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _recordExpressionBindingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _recordExpressionBindingsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _recordExpressionBindingsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _recordExpressionBindingsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _recordExpressionBindingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _recordExpressionBindingsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _recordExpressionBindingsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _recordExpressionBindingsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _recordExpressionBindingsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _recordExpressionBindingsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _recordExpressionBindingsIeh,_recordExpressionBindingsIerrSq,_recordExpressionBindingsIgUniq,_recordExpressionBindingsIidUseOccGam,_recordExpressionBindingsIpp,_recordExpressionBindingsIppL,_recordExpressionBindingsIppWrap,_recordExpressionBindingsItopInstanceNmL,_recordExpressionBindingsIundefOccGam) =
-                  recordExpressionBindings_ _recordExpressionBindingsOcaseId _recordExpressionBindingsOfixityGam _recordExpressionBindingsOgUniq _recordExpressionBindingsOgenerDerivMp _recordExpressionBindingsOidGam _recordExpressionBindingsOmoduleNm _recordExpressionBindingsOnmLev _recordExpressionBindingsOopts _recordExpressionBindingsOpatchEhNmInInstance _recordExpressionBindingsOpragmas _recordExpressionBindingsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_RecordUpdate :: Range ->
-                               T_Expression ->
-                               T_RecordExpressionBindings ->
-                               T_Expression
-sem_Expression_RecordUpdate range_ expression_ recordExpressionBindings_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _recordExpressionBindingsOcaseId :: UID
-              _recordExpressionBindingsOfixityGam :: FixityGam
-              _recordExpressionBindingsOgUniq :: UID
-              _recordExpressionBindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _recordExpressionBindingsOidGam :: IdDefOccGam
-              _recordExpressionBindingsOmoduleNm :: HsName
-              _recordExpressionBindingsOnmLev :: NmLev
-              _recordExpressionBindingsOopts :: EHCOpts
-              _recordExpressionBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _recordExpressionBindingsOpragmas :: (Set.Set Pragma.Pragma)
-              _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _recordExpressionBindingsIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
-              _recordExpressionBindingsIerrSq :: ErrSq
-              _recordExpressionBindingsIgUniq :: UID
-              _recordExpressionBindingsIidUseOccGam :: IdUseOccGam
-              _recordExpressionBindingsIpp :: PP_Doc
-              _recordExpressionBindingsIppL :: ([PP_Doc])
-              _recordExpressionBindingsIppWrap :: (PP_Doc -> PP_Doc)
-              _recordExpressionBindingsItopInstanceNmL :: ([HsName])
-              _recordExpressionBindingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 242, column 9)
-              _pp =
-                  _expressionIpp >#< ppCurlysCommas' _recordExpressionBindingsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 528, column 9)
-              _eh =
-                  case _recordExpressionBindingsIeh of
-                    b@(_:_) -> rngLift range_ EH.Expr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldExpr_Expr _expressionIeh) b
-                    _       -> _expressionIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq `Seq.union` _recordExpressionBindingsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _recordExpressionBindingsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _recordExpressionBindingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _recordExpressionBindingsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _recordExpressionBindingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _recordExpressionBindingsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _recordExpressionBindingsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _recordExpressionBindingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _recordExpressionBindingsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _recordExpressionBindingsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _recordExpressionBindingsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _recordExpressionBindingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _recordExpressionBindingsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _recordExpressionBindingsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _recordExpressionBindingsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _recordExpressionBindingsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _recordExpressionBindingsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _recordExpressionBindingsIeh,_recordExpressionBindingsIerrSq,_recordExpressionBindingsIgUniq,_recordExpressionBindingsIidUseOccGam,_recordExpressionBindingsIpp,_recordExpressionBindingsIppL,_recordExpressionBindingsIppWrap,_recordExpressionBindingsItopInstanceNmL,_recordExpressionBindingsIundefOccGam) =
-                  recordExpressionBindings_ _recordExpressionBindingsOcaseId _recordExpressionBindingsOfixityGam _recordExpressionBindingsOgUniq _recordExpressionBindingsOgenerDerivMp _recordExpressionBindingsOidGam _recordExpressionBindingsOmoduleNm _recordExpressionBindingsOnmLev _recordExpressionBindingsOopts _recordExpressionBindingsOpatchEhNmInInstance _recordExpressionBindingsOpragmas _recordExpressionBindingsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_RowRecordUpdate :: Range ->
-                                  T_Expression ->
-                                  T_RowRecordExpressionUpdates ->
-                                  T_Expression
-sem_Expression_RowRecordUpdate range_ expression_ rowRecordExpressionUpdates_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _rowRecordExpressionUpdatesOcaseId :: UID
-              _rowRecordExpressionUpdatesOfixityGam :: FixityGam
-              _rowRecordExpressionUpdatesOgUniq :: UID
-              _rowRecordExpressionUpdatesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _rowRecordExpressionUpdatesOidGam :: IdDefOccGam
-              _rowRecordExpressionUpdatesOmoduleNm :: HsName
-              _rowRecordExpressionUpdatesOnmLev :: NmLev
-              _rowRecordExpressionUpdatesOopts :: EHCOpts
-              _rowRecordExpressionUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rowRecordExpressionUpdatesOpragmas :: (Set.Set Pragma.Pragma)
-              _rowRecordExpressionUpdatesOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _rowRecordExpressionUpdatesIeh :: ([EH.Expr -> EH.Expr])
-              _rowRecordExpressionUpdatesIerrSq :: ErrSq
-              _rowRecordExpressionUpdatesIgUniq :: UID
-              _rowRecordExpressionUpdatesIidUseOccGam :: IdUseOccGam
-              _rowRecordExpressionUpdatesIpp :: PP_Doc
-              _rowRecordExpressionUpdatesIppL :: ([PP_Doc])
-              _rowRecordExpressionUpdatesIppWrap :: (PP_Doc -> PP_Doc)
-              _rowRecordExpressionUpdatesItopInstanceNmL :: ([HsName])
-              _rowRecordExpressionUpdatesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 244, column 9)
-              _pp =
-                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _expressionIpp)
-                            _rowRecordExpressionUpdatesIppL _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 532, column 9)
-              _eh =
-                  foldl (flip ($)) _expressionIeh _rowRecordExpressionUpdatesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq `Seq.union` _rowRecordExpressionUpdatesIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _rowRecordExpressionUpdatesIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _rowRecordExpressionUpdatesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _rowRecordExpressionUpdatesIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rowRecordExpressionUpdatesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rowRecordExpressionUpdatesItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rowRecordExpressionUpdatesOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _rowRecordExpressionUpdatesOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _rowRecordExpressionUpdatesOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _rowRecordExpressionUpdatesIeh,_rowRecordExpressionUpdatesIerrSq,_rowRecordExpressionUpdatesIgUniq,_rowRecordExpressionUpdatesIidUseOccGam,_rowRecordExpressionUpdatesIpp,_rowRecordExpressionUpdatesIppL,_rowRecordExpressionUpdatesIppWrap,_rowRecordExpressionUpdatesItopInstanceNmL,_rowRecordExpressionUpdatesIundefOccGam) =
-                  rowRecordExpressionUpdates_ _rowRecordExpressionUpdatesOcaseId _rowRecordExpressionUpdatesOfixityGam _rowRecordExpressionUpdatesOgUniq _rowRecordExpressionUpdatesOgenerDerivMp _rowRecordExpressionUpdatesOidGam _rowRecordExpressionUpdatesOmoduleNm _rowRecordExpressionUpdatesOnmLev _rowRecordExpressionUpdatesOopts _rowRecordExpressionUpdatesOpatchEhNmInInstance _rowRecordExpressionUpdatesOpragmas _rowRecordExpressionUpdatesOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_RowRecordEmpty :: Range ->
-                                 T_Expression
-sem_Expression_RowRecordEmpty range_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 247, column 9)
-              _pp =
-                  hsnORec >|< hsnCRec
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 534, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_Rec (rngLift range_ EH.RecExpr_Empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_RowRecordSelect :: Range ->
-                                  T_Expression ->
-                                  Name ->
-                                  T_Expression
-sem_Expression_RowRecordSelect range_ expression_ name_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 249, column 9)
-              _pp =
-                  _expressionIpp >|< "->" >|< name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 536, column 9)
-              _eh =
-                  rngLift range_ EH.Expr_Sel _expressionIeh name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_Do :: Range ->
-                     T_Statements ->
-                     T_Expression
-sem_Expression_Do range_ statements_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _statementsOcaseId :: UID
-              _statementsOfixityGam :: FixityGam
-              _statementsOgUniq :: UID
-              _statementsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _statementsOidGam :: IdDefOccGam
-              _statementsOmoduleNm :: HsName
-              _statementsOnmLev :: NmLev
-              _statementsOopts :: EHCOpts
-              _statementsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _statementsOpragmas :: (Set.Set Pragma.Pragma)
-              _statementsOtopInstanceNmL :: ([HsName])
-              _statementsIeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
-              _statementsIerrSq :: ErrSq
-              _statementsIgUniq :: UID
-              _statementsIidUseOccGam :: IdUseOccGam
-              _statementsIpp :: PP_Doc
-              _statementsIppL :: ([PP_Doc])
-              _statementsIppWrap :: (PP_Doc -> PP_Doc)
-              _statementsItopInstanceNmL :: ([HsName])
-              _statementsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 251, column 9)
-              _pp =
-                  "do" >#< vlist _statementsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 538, column 25)
-              (_eh,_) =
-                  foldr1 (\(_,s) (e,_) -> (s e,undefined)) _statementsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _statementsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _statementsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _statementsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _statementsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _statementsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _statementsItopInstanceNmL
-              -- copy rule (down)
-              _statementsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _statementsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _statementsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _statementsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _statementsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _statementsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _statementsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _statementsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _statementsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _statementsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _statementsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _statementsIeh,_statementsIerrSq,_statementsIgUniq,_statementsIidUseOccGam,_statementsIpp,_statementsIppL,_statementsIppWrap,_statementsItopInstanceNmL,_statementsIundefOccGam) =
-                  statements_ _statementsOcaseId _statementsOfixityGam _statementsOgUniq _statementsOgenerDerivMp _statementsOidGam _statementsOmoduleNm _statementsOnmLev _statementsOopts _statementsOpatchEhNmInInstance _statementsOpragmas _statementsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_ImplicitApplication :: Range ->
-                                      T_Expression ->
-                                      T_ContextedExpressions ->
-                                      T_Expression
-sem_Expression_ImplicitApplication range_ function_ arguments_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _functionOcaseId :: UID
-              _functionOfixityGam :: FixityGam
-              _functionOgUniq :: UID
-              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _functionOidGam :: IdDefOccGam
-              _functionOmoduleNm :: HsName
-              _functionOnmLev :: NmLev
-              _functionOopts :: EHCOpts
-              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _functionOpragmas :: (Set.Set Pragma.Pragma)
-              _functionOtopInstanceNmL :: ([HsName])
-              _argumentsOcaseId :: UID
-              _argumentsOfixityGam :: FixityGam
-              _argumentsOgUniq :: UID
-              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _argumentsOidGam :: IdDefOccGam
-              _argumentsOmoduleNm :: HsName
-              _argumentsOnmLev :: NmLev
-              _argumentsOopts :: EHCOpts
-              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
-              _argumentsOtopInstanceNmL :: ([HsName])
-              _functionIconNm :: Name
-              _functionIeh :: (EH.Expr)
-              _functionIerrSq :: ErrSq
-              _functionIgUniq :: UID
-              _functionIidUseOccGam :: IdUseOccGam
-              _functionIopChain :: (OpChain EH.Expr)
-              _functionIoperatorName :: MaybeName
-              _functionIpp :: PP_Doc
-              _functionIppWrap :: (PP_Doc -> PP_Doc)
-              _functionItopInstanceNmL :: ([HsName])
-              _functionIundefOccGam :: IdUseOccGam
-              _argumentsIeh :: ([(EH.Expr,EH.PrExpr)])
-              _argumentsIerrSq :: ErrSq
-              _argumentsIgUniq :: UID
-              _argumentsIidUseOccGam :: IdUseOccGam
-              _argumentsIpp :: PP_Doc
-              _argumentsIppL :: ([PP_Doc])
-              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
-              _argumentsItopInstanceNmL :: ([HsName])
-              _argumentsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 253, column 9)
-              _pp =
-                  _functionIpp >#< ppListSep hsnOImpl hsnCImpl ", " _argumentsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 540, column 9)
-              _eh =
-                  ehExpApp' (\f (e,p) -> rngLift range_ EH.Expr_AppImpl f p e) range_ _functionIeh _argumentsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _functionIerrSq `Seq.union` _argumentsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _functionIppWrap . _argumentsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _argumentsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _argumentsItopInstanceNmL
-              -- copy rule (down)
-              _functionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _functionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _functionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _functionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _functionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _functionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _functionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _functionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _functionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _functionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _functionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _argumentsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _argumentsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _argumentsOgUniq =
-                  _functionIgUniq
-              -- copy rule (down)
-              _argumentsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _argumentsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _argumentsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _argumentsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _argumentsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _argumentsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _argumentsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _argumentsOtopInstanceNmL =
-                  _functionItopInstanceNmL
-              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
-                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL
-              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
-                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expression_ImplicitLambda :: Range ->
-                                 T_ContextedPatterns ->
-                                 T_Expression ->
-                                 T_Expression
-sem_Expression_ImplicitLambda range_ patterns_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _expressionOidGam :: IdDefOccGam
-              _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([(EH.PatExpr,EH.PrExpr)])
-              _patternsIerrSq :: ErrSq
-              _patternsIfreeTvarS :: HsNameS
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 237, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_ _patternsIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 351, column 9)
-              _idGam =
-                  gamUnions [_idDefOccGamType, _lhsIidGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 352, column 9)
-              _expressionOidGam =
-                  gamUnions [_patternsIidDefOccGam, _idGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 104, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _patternsIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 20, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, _patternsIerrSq, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 255, column 9)
-              _pp =
-                  "\\" >|< ppListSep hsnOImpl hsnCImpl ", " _patternsIppL >#< "->" >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 542, column 9)
-              _eh =
-                  foldr (\(p,c) e -> rngLift range_ EH.Expr_LamImpl c p e) _expressionIeh _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _patternsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _patternsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIfreeTvarS,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ExpressionAnnotation ----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.ExprAnn
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Empty:
-         visit 0:
-            local eh          : _
--}
--- cata
-sem_ExpressionAnnotation :: ExpressionAnnotation ->
-                            T_ExpressionAnnotation
-sem_ExpressionAnnotation (ExpressionAnnotation_Empty) =
-    (sem_ExpressionAnnotation_Empty)
--- semantic domain
-type T_ExpressionAnnotation = UID ->
-                              FixityGam ->
-                              UID ->
-                              (Map.Map HsName [(HsName,HsName)]) ->
-                              IdDefOccGam ->
-                              HsName ->
-                              NmLev ->
-                              EHCOpts ->
-                              PatchEhNmInInstance ->
-                              (Set.Set Pragma.Pragma) ->
-                              ([HsName]) ->
-                              ( (EH.ExprAnn),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ExpressionAnnotation_Empty :: T_ExpressionAnnotation
-sem_ExpressionAnnotation_Empty =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.ExprAnn)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 908, column 17)
-              _eh =
-                  EH.ExprAnn_Empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Expressions -------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.Expr]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Expression 
-         child tl             : Expressions 
-      alternative Nil:
--}
--- cata
-sem_Expressions :: Expressions ->
-                   T_Expressions
-sem_Expressions list =
-    (Prelude.foldr sem_Expressions_Cons sem_Expressions_Nil (Prelude.map sem_Expression list))
--- semantic domain
-type T_Expressions = UID ->
-                     FixityGam ->
-                     UID ->
-                     (Map.Map HsName [(HsName,HsName)]) ->
-                     IdDefOccGam ->
-                     HsName ->
-                     NmLev ->
-                     EHCOpts ->
-                     PatchEhNmInInstance ->
-                     (Set.Set Pragma.Pragma) ->
-                     ([HsName]) ->
-                     ( ([EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Expressions_Cons :: T_Expression ->
-                        T_Expressions ->
-                        T_Expressions
-sem_Expressions_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIconNm :: Name
-              _hdIeh :: (EH.Expr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIopChain :: (OpChain EH.Expr)
-              _hdIoperatorName :: MaybeName
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.Expr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 420, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 454, column 27)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIconNm,_hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIopChain,_hdIoperatorName,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Expressions_Nil :: T_Expressions
-sem_Expressions_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 422, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 454, column 27)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- FieldDeclaration --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.DataField
-         errSq                : ErrSq
-         fldrefnames          : Names
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative FieldDeclaration:
-         child range          : {Range}
-         child names          : {Names}
-         child type           : Type 
-         visit 0:
-            local fldrefnames : _
-            local nmLev       : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
--}
--- cata
-sem_FieldDeclaration :: FieldDeclaration ->
-                        T_FieldDeclaration
-sem_FieldDeclaration (FieldDeclaration_FieldDeclaration _range _names _type) =
-    (sem_FieldDeclaration_FieldDeclaration _range _names (sem_Type _type))
--- semantic domain
-type T_FieldDeclaration = FixityGam ->
-                          UID ->
-                          IdDefOccGam ->
-                          HsName ->
-                          NmLev ->
-                          EHCOpts ->
-                          PatchEhNmInInstance ->
-                          ([HsName]) ->
-                          ( (EH.DataField),ErrSq,Names,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_FieldDeclaration_FieldDeclaration :: Range ->
-                                         Names ->
-                                         T_Type ->
-                                         T_FieldDeclaration
-sem_FieldDeclaration_FieldDeclaration range_ names_ type_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.DataField)
-              _lhsOerrSq :: ErrSq
-              _lhsOfldrefnames :: Names
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 83, column 9)
-              _fldrefnames =
-                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 42, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 190, column 9)
-              _pp =
-                  ppCommas' names_ >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 340, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.DataField_Field (Just _fldrefnames) _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 178, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 231, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
-              _lhsOfldrefnames =
-                  _fldrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- FieldDeclarations -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.DataField]
-         errSq                : ErrSq
-         fldrefnames          : Names
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : FieldDeclaration 
-         child tl             : FieldDeclarations 
-      alternative Nil:
--}
--- cata
-sem_FieldDeclarations :: FieldDeclarations ->
-                         T_FieldDeclarations
-sem_FieldDeclarations list =
-    (Prelude.foldr sem_FieldDeclarations_Cons sem_FieldDeclarations_Nil (Prelude.map sem_FieldDeclaration list))
--- semantic domain
-type T_FieldDeclarations = FixityGam ->
-                           UID ->
-                           IdDefOccGam ->
-                           HsName ->
-                           NmLev ->
-                           EHCOpts ->
-                           PatchEhNmInInstance ->
-                           ([HsName]) ->
-                           ( ([EH.DataField]),ErrSq,Names,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_FieldDeclarations_Cons :: T_FieldDeclaration ->
-                              T_FieldDeclarations ->
-                              T_FieldDeclarations
-sem_FieldDeclarations_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.DataField])
-              _lhsOerrSq :: ErrSq
-              _lhsOfldrefnames :: Names
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.DataField)
-              _hdIerrSq :: ErrSq
-              _hdIfldrefnames :: Names
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.DataField])
-              _tlIerrSq :: ErrSq
-              _tlIfldrefnames :: Names
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 478, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 334, column 33)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
-              _lhsOfldrefnames =
-                  _hdIfldrefnames ++ _tlIfldrefnames
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIfldrefnames,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIfldrefnames,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_FieldDeclarations_Nil :: T_FieldDeclarations
-sem_FieldDeclarations_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.DataField])
-              _lhsOerrSq :: ErrSq
-              _lhsOfldrefnames :: Names
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 480, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 334, column 33)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
-              _lhsOfldrefnames =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- FunctionBinding ---------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.Decl
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative FunctionBinding:
-         child range          : {Range}
-         child lefthandside   : LeftHandSide 
-         child righthandside  : RightHandSide 
-         visit 0:
-            local idDefOccGam : _
-            local idUseOccGam : _
-            local idUseHereOccL : _
-            local undefOccGam : _
-            local idDpdMp     : _
-            local idOccDef    : _
-            local idOccDefs   : _
-            local nmLev       : _
-            local nmLevFun    : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local caseId      : _
-            local lUniq       : {UID}
--}
--- cata
-sem_FunctionBinding :: FunctionBinding ->
-                       T_FunctionBinding
-sem_FunctionBinding (FunctionBinding_FunctionBinding _range _lefthandside _righthandside) =
-    (sem_FunctionBinding_FunctionBinding _range (sem_LeftHandSide _lefthandside) (sem_RightHandSide _righthandside))
--- semantic domain
-type T_FunctionBinding = UID ->
-                         FixityGam ->
-                         UID ->
-                         (Map.Map HsName [(HsName,HsName)]) ->
-                         IdDefOccGam ->
-                         HsName ->
-                         NmLev ->
-                         EHCOpts ->
-                         PatchEhNmInInstance ->
-                         (Set.Set Pragma.Pragma) ->
-                         ([HsName]) ->
-                         ( (EH.Decl),ErrSq,UID,IdDefOccGam,IdDpdMp,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_FunctionBinding_FunctionBinding :: Range ->
-                                       T_LeftHandSide ->
-                                       T_RightHandSide ->
-                                       T_FunctionBinding
-sem_FunctionBinding_FunctionBinding range_ lefthandside_ righthandside_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _righthandsideOidGam :: IdDefOccGam
-              _lhsOundefOccGam :: IdUseOccGam
-              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _righthandsideOsepPP :: PP_Doc
-              _lhsOeh :: (EH.Decl)
-              _righthandsideOmustBeMono :: Bool
-              _lefthandsideOgUniq :: UID
-              _lUniq :: UID
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lefthandsideOcaseId :: UID
-              _lefthandsideOfixityGam :: FixityGam
-              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _lefthandsideOidGam :: IdDefOccGam
-              _lefthandsideOmoduleNm :: HsName
-              _lefthandsideOnmLev :: NmLev
-              _lefthandsideOnmLevFun :: NmLev
-              _lefthandsideOopts :: EHCOpts
-              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
-              _lefthandsideOtopInstanceNmL :: ([HsName])
-              _righthandsideOcaseId :: UID
-              _righthandsideOfixityGam :: FixityGam
-              _righthandsideOgUniq :: UID
-              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _righthandsideOmoduleNm :: HsName
-              _righthandsideOnmLev :: NmLev
-              _righthandsideOopts :: EHCOpts
-              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
-              _righthandsideOtopInstanceNmL :: ([HsName])
-              _lefthandsideIeh :: ([EH.PatExpr])
-              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
-              _lefthandsideIerrSq :: ErrSq
-              _lefthandsideIgUniq :: UID
-              _lefthandsideIidDefOccGam :: IdDefOccGam
-              _lefthandsideIidOccDefs :: ([IdOcc])
-              _lefthandsideIidUseOccGam :: IdUseOccGam
-              _lefthandsideIpp :: PP_Doc
-              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _lefthandsideIrefname :: HsName
-              _lefthandsideItopInstanceNmL :: ([HsName])
-              _lefthandsideIundefOccGam :: IdUseOccGam
-              _righthandsideIeh :: (EH.Expr)
-              _righthandsideIerrSq :: ErrSq
-              _righthandsideIgUniq :: UID
-              _righthandsideIidUseOccGam :: IdUseOccGam
-              _righthandsideIpp :: PP_Doc
-              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _righthandsideItopInstanceNmL :: ([HsName])
-              _righthandsideIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 207, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_
-                    (IdAsp_Val_Fun _lefthandsideIeh
-                                   (_lefthandsideIehTyMk _righthandsideIeh)
-                                   _lUniq)
-                    _idOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 383, column 9)
-              _righthandsideOidGam =
-                  gamUnion _lefthandsideIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 733, column 29)
-              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
-                  splitIdUseOccGam _lhsInmLev
-                       (gamUnions [_lefthandsideIidUseOccGam,_righthandsideIidUseOccGam])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 733, column 9)
-              _idDpdMp =
-                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 737, column 9)
-              _lhsOundefOccGam =
-                  gamUnions [_undefOccGam,_lefthandsideIundefOccGam,_righthandsideIundefOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1082, column 9)
-              _righthandsideOpatchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 169, column 9)
-              _idOccDef =
-                  IdOcc _lefthandsideIrefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 169, column 9)
-              _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
-              _nmLevFun =
-                  _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 108, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _lefthandsideIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 40, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, _lefthandsideIerrSq, _righthandsideIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 311, column 9)
-              _pp =
-                  _lefthandsideIpp >#< _righthandsideIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 312, column 9)
-              _righthandsideOsepPP =
-                  pp "="
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 718, column 9)
-              _lhsOeh =
-                  let (h,t) = hdAndTl _lefthandsideIeh
-                  in  rngLift range_ EH.Decl_Val h
-                        (foldr (rngLift range_ EH.Expr_Lam)
-                               (_lefthandsideIehTyMk _righthandsideIeh)
-                               t)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 873, column 9)
-              _caseId =
-                  _lUniq
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 274, column 9)
-              _righthandsideOmustBeMono =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_lefthandsideOgUniq,_lUniq) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _idDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _lefthandsideIppWrap . _righthandsideIppWrap
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _righthandsideIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _righthandsideItopInstanceNmL
-              -- copy rule (from local)
-              _lefthandsideOcaseId =
-                  _caseId
-              -- copy rule (down)
-              _lefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _lefthandsideOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _lefthandsideOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _lefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _lefthandsideOnmLev =
-                  _nmLev
-              -- copy rule (from local)
-              _lefthandsideOnmLevFun =
-                  _nmLevFun
-              -- copy rule (down)
-              _lefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _lefthandsideOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _lefthandsideOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _lefthandsideOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _righthandsideOcaseId =
-                  _caseId
-              -- copy rule (down)
-              _righthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _righthandsideOgUniq =
-                  _lefthandsideIgUniq
-              -- copy rule (down)
-              _righthandsideOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _righthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _righthandsideOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _righthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _righthandsideOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _righthandsideOtopInstanceNmL =
-                  _lefthandsideItopInstanceNmL
-              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideIundefOccGam) =
-                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL
-              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideIundefOccGam) =
-                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- FunctionBindings --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.Decl]
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : FunctionBinding 
-         child tl             : FunctionBindings 
-      alternative Nil:
--}
--- cata
-sem_FunctionBindings :: FunctionBindings ->
-                        T_FunctionBindings
-sem_FunctionBindings list =
-    (Prelude.foldr sem_FunctionBindings_Cons sem_FunctionBindings_Nil (Prelude.map sem_FunctionBinding list))
--- semantic domain
-type T_FunctionBindings = UID ->
-                          FixityGam ->
-                          UID ->
-                          (Map.Map HsName [(HsName,HsName)]) ->
-                          IdDefOccGam ->
-                          HsName ->
-                          NmLev ->
-                          EHCOpts ->
-                          PatchEhNmInInstance ->
-                          (Set.Set Pragma.Pragma) ->
-                          ([HsName]) ->
-                          ( ([EH.Decl]),ErrSq,UID,IdDefOccGam,IdDpdMp,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_FunctionBindings_Cons :: T_FunctionBinding ->
-                             T_FunctionBindings ->
-                             T_FunctionBindings
-sem_FunctionBindings_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.Decl)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidDpdMp :: IdDpdMp
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.Decl])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidDpdMp :: IdDpdMp
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 712, column 32)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_FunctionBindings_Nil :: T_FunctionBindings
-sem_FunctionBindings_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 712, column 32)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- FunctionalDependencies --------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.FuncDep]
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : FunctionalDependency 
-         child tl             : FunctionalDependencies 
-      alternative Nil:
--}
--- cata
-sem_FunctionalDependencies :: FunctionalDependencies ->
-                              T_FunctionalDependencies
-sem_FunctionalDependencies list =
-    (Prelude.foldr sem_FunctionalDependencies_Cons sem_FunctionalDependencies_Nil (Prelude.map sem_FunctionalDependency list))
--- semantic domain
-type T_FunctionalDependencies = FixityGam ->
-                                UID ->
-                                (Map.Map HsName [(HsName,HsName)]) ->
-                                IdDefOccGam ->
-                                HsName ->
-                                NmLev ->
-                                EHCOpts ->
-                                PatchEhNmInInstance ->
-                                (Set.Set Pragma.Pragma) ->
-                                ([HsName]) ->
-                                ( ([EH.FuncDep]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_FunctionalDependencies_Cons :: T_FunctionalDependency ->
-                                   T_FunctionalDependencies ->
-                                   T_FunctionalDependencies
-sem_FunctionalDependencies_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.FuncDep])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.FuncDep)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidDpdMp :: IdDpdMp
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidTySigDefOccGam :: IdDefOccGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIneedsError :: Bool
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.FuncDep])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathFixityGam :: FixityGam
-              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidDpdMp :: IdDpdMp
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidTySigDefOccGam :: IdDefOccGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIneedsError :: Bool
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 150, column 38)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _hdIidTySigDefOccGam `gamAddGam` _tlIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _hdIneedsError || _tlIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidTySigDefOccGam,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidTySigDefOccGam,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_FunctionalDependencies_Nil :: T_FunctionalDependencies
-sem_FunctionalDependencies_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.FuncDep])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 150, column 38)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- FunctionalDependency ----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.FuncDep
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Dependency:
-         child range          : {Range}
-         child fromtypevariables : {Names}
-         child totypevariables : {Names}
-         visit 0:
-            local pp          : _
--}
--- cata
-sem_FunctionalDependency :: FunctionalDependency ->
-                            T_FunctionalDependency
-sem_FunctionalDependency (FunctionalDependency_Dependency _range _fromtypevariables _totypevariables) =
-    (sem_FunctionalDependency_Dependency _range _fromtypevariables _totypevariables)
--- semantic domain
-type T_FunctionalDependency = FixityGam ->
-                              UID ->
-                              (Map.Map HsName [(HsName,HsName)]) ->
-                              IdDefOccGam ->
-                              HsName ->
-                              NmLev ->
-                              EHCOpts ->
-                              PatchEhNmInInstance ->
-                              (Set.Set Pragma.Pragma) ->
-                              ([HsName]) ->
-                              ( (EH.FuncDep),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_FunctionalDependency_Dependency :: Range ->
-                                       Names ->
-                                       Names ->
-                                       T_FunctionalDependency
-sem_FunctionalDependency_Dependency range_ fromtypevariables_ totypevariables_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.FuncDep)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 79, column 9)
-              _pp =
-                  ppSpaces fromtypevariables_ >#< "->" >#< totypevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 156, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.FuncDep_Dep
-                    (map (rngLift range_ EH.TyVar_Var) fromtypevariables_)
-                    (map (rngLift range_ EH.TyVar_Var) totypevariables_)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- GuardedExpression -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         mustBeMono           : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-         sepPP                : PP_Doc
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : UIDS -> EH.Expr -> EH.Expr
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative GuardedExpression:
-         child range          : {Range}
-         child guard          : Expression 
-         child expression     : Expression 
-         visit 0:
-            local valrefnames : _
-            local idUseOccGamVal : _
-            local errIdUseVal : _
-            local typerefname : _
-            local idUseOccGamType : _
-            local errIdUseType : _
-            local idUseOccGam : _
-            local errSq       : _
-            local pp          : _
--}
--- cata
-sem_GuardedExpression :: GuardedExpression ->
-                         T_GuardedExpression
-sem_GuardedExpression (GuardedExpression_GuardedExpression _range _guard _expression) =
-    (sem_GuardedExpression_GuardedExpression _range (sem_Expression _guard) (sem_Expression _expression))
--- semantic domain
-type T_GuardedExpression = UID ->
-                           FixityGam ->
-                           UID ->
-                           (Map.Map HsName [(HsName,HsName)]) ->
-                           IdDefOccGam ->
-                           HsName ->
-                           Bool ->
-                           NmLev ->
-                           EHCOpts ->
-                           PatchEhNmInInstance ->
-                           (Set.Set Pragma.Pragma) ->
-                           PP_Doc ->
-                           ([HsName]) ->
-                           ( (UIDS -> EH.Expr -> EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_GuardedExpression_GuardedExpression :: Range ->
-                                           T_Expression ->
-                                           T_Expression ->
-                                           T_GuardedExpression
-sem_GuardedExpression_GuardedExpression range_ guard_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsImustBeMono
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsIsepPP
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: (UIDS -> EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _guardOcaseId :: UID
-              _guardOfixityGam :: FixityGam
-              _guardOgUniq :: UID
-              _guardOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _guardOidGam :: IdDefOccGam
-              _guardOmoduleNm :: HsName
-              _guardOnmLev :: NmLev
-              _guardOopts :: EHCOpts
-              _guardOpatchEhNmInInstance :: PatchEhNmInInstance
-              _guardOpragmas :: (Set.Set Pragma.Pragma)
-              _guardOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _guardIconNm :: Name
-              _guardIeh :: (EH.Expr)
-              _guardIerrSq :: ErrSq
-              _guardIgUniq :: UID
-              _guardIidUseOccGam :: IdUseOccGam
-              _guardIopChain :: (OpChain EH.Expr)
-              _guardIoperatorName :: MaybeName
-              _guardIpp :: PP_Doc
-              _guardIppWrap :: (PP_Doc -> PP_Doc)
-              _guardItopInstanceNmL :: ([HsName])
-              _guardIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 548, column 29)
-              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 29)
-              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 548, column 9)
-              _idUseOccGam =
-                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 553, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_guardIidUseOccGam,_expressionIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 89, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardIerrSq, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 281, column 9)
-              _pp =
-                  "|" >#< _guardIpp >#< _lhsIsepPP >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 634, column 9)
-              _lhsOeh =
-                  \failS e -> EH.mkIf'' (_typerefname : _valrefnames) range_ _guardIeh (ehMkEnforceMono range_ _lhsImustBeMono _expressionIeh) e Nothing failS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _guardIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _guardIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _guardOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _guardOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _guardOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _guardOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _guardOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _guardOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _guardOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _guardOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _guardOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _guardOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _guardOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _guardIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _guardItopInstanceNmL
-              ( _guardIconNm,_guardIeh,_guardIerrSq,_guardIgUniq,_guardIidUseOccGam,_guardIopChain,_guardIoperatorName,_guardIpp,_guardIppWrap,_guardItopInstanceNmL,_guardIundefOccGam) =
-                  guard_ _guardOcaseId _guardOfixityGam _guardOgUniq _guardOgenerDerivMp _guardOidGam _guardOmoduleNm _guardOnmLev _guardOopts _guardOpatchEhNmInInstance _guardOpragmas _guardOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- GuardedExpressions ------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         mustBeMono           : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-         sepPP                : PP_Doc
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [UIDS -> EH.Expr -> EH.Expr]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : GuardedExpression 
-         child tl             : GuardedExpressions 
-      alternative Nil:
--}
--- cata
-sem_GuardedExpressions :: GuardedExpressions ->
-                          T_GuardedExpressions
-sem_GuardedExpressions list =
-    (Prelude.foldr sem_GuardedExpressions_Cons sem_GuardedExpressions_Nil (Prelude.map sem_GuardedExpression list))
--- semantic domain
-type T_GuardedExpressions = UID ->
-                            FixityGam ->
-                            UID ->
-                            (Map.Map HsName [(HsName,HsName)]) ->
-                            IdDefOccGam ->
-                            HsName ->
-                            Bool ->
-                            NmLev ->
-                            EHCOpts ->
-                            PatchEhNmInInstance ->
-                            (Set.Set Pragma.Pragma) ->
-                            PP_Doc ->
-                            ([HsName]) ->
-                            ( ([UIDS -> EH.Expr -> EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_GuardedExpressions_Cons :: T_GuardedExpression ->
-                               T_GuardedExpressions ->
-                               T_GuardedExpressions
-sem_GuardedExpressions_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsImustBeMono
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsIsepPP
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([UIDS -> EH.Expr -> EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOmustBeMono :: Bool
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOsepPP :: PP_Doc
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOmustBeMono :: Bool
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOsepPP :: PP_Doc
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (UIDS -> EH.Expr -> EH.Expr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([UIDS -> EH.Expr -> EH.Expr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 629, column 34)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOmustBeMono =
-                  _lhsImustBeMono
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOsepPP =
-                  _lhsIsepPP
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOmustBeMono =
-                  _lhsImustBeMono
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _tlOsepPP =
-                  _lhsIsepPP
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOmustBeMono _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOsepPP _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOmustBeMono _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOsepPP _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_GuardedExpressions_Nil :: T_GuardedExpressions
-sem_GuardedExpressions_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsImustBeMono
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsIsepPP
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([UIDS -> EH.Expr -> EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 629, column 34)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Import ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-      alternative TypeOrClass:
-         child range          : {Range}
-         child name           : {Name}
-         child names          : {MaybeNames}
-      alternative TypeOrClassComplete:
-         child range          : {Range}
-         child name           : {Name}
--}
--- cata
-sem_Import :: Import ->
-              T_Import
-sem_Import (Import_Variable _range _name) =
-    (sem_Import_Variable _range _name)
-sem_Import (Import_TypeOrClass _range _name _names) =
-    (sem_Import_TypeOrClass _range _name _names)
-sem_Import (Import_TypeOrClassComplete _range _name) =
-    (sem_Import_TypeOrClassComplete _range _name)
--- semantic domain
-type T_Import = FixityGam ->
-                UID ->
-                IdDefOccGam ->
-                Bool ->
-                Bool ->
-                HsName ->
-                NmLev ->
-                EHCOpts ->
-                PatchEhNmInInstance ->
-                ([HsName]) ->
-                ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Import_Variable :: Range ->
-                       Name ->
-                       T_Import
-sem_Import_Variable range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Import_TypeOrClass :: Range ->
-                          Name ->
-                          MaybeNames ->
-                          T_Import
-sem_Import_TypeOrClass range_ name_ names_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Import_TypeOrClassComplete :: Range ->
-                                  Name ->
-                                  T_Import
-sem_Import_TypeOrClassComplete range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ImportDeclaration -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         modAsMp              : Map.Map HsName HsName
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Import:
-         child range          : {Range}
-         child qualified      : {Bool}
-         child name           : {Name}
-         child asname         : {MaybeName}
-         child importspecification : MaybeImportSpecification 
-      alternative Empty:
-         child range          : {Range}
--}
--- cata
-sem_ImportDeclaration :: ImportDeclaration ->
-                         T_ImportDeclaration
-sem_ImportDeclaration (ImportDeclaration_Import _range _qualified _name _asname _importspecification) =
-    (sem_ImportDeclaration_Import _range _qualified _name _asname (sem_MaybeImportSpecification _importspecification))
-sem_ImportDeclaration (ImportDeclaration_Empty _range) =
-    (sem_ImportDeclaration_Empty _range)
--- semantic domain
-type T_ImportDeclaration = FixityGam ->
-                           UID ->
-                           IdDefOccGam ->
-                           Bool ->
-                           Bool ->
-                           HsName ->
-                           NmLev ->
-                           EHCOpts ->
-                           PatchEhNmInInstance ->
-                           ([HsName]) ->
-                           ( ErrSq,UID,FixityGam,IdUseOccGam,(Map.Map HsName HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ImportDeclaration_Import :: Range ->
-                                Bool ->
-                                Name ->
-                                MaybeName ->
-                                T_MaybeImportSpecification ->
-                                T_ImportDeclaration
-sem_ImportDeclaration_Import range_ qualified_ name_ asname_ importspecification_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmodAsMp :: (Map.Map HsName HsName)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _importspecificationOfixityGam :: FixityGam
-              _importspecificationOgUniq :: UID
-              _importspecificationOidGam :: IdDefOccGam
-              _importspecificationOisMainMod :: Bool
-              _importspecificationOisTopMod :: Bool
-              _importspecificationOmoduleNm :: HsName
-              _importspecificationOnmLev :: NmLev
-              _importspecificationOopts :: EHCOpts
-              _importspecificationOpatchEhNmInInstance :: PatchEhNmInInstance
-              _importspecificationOtopInstanceNmL :: ([HsName])
-              _importspecificationIerrSq :: ErrSq
-              _importspecificationIgUniq :: UID
-              _importspecificationIgathFixityGam :: FixityGam
-              _importspecificationIidUseOccGam :: IdUseOccGam
-              _importspecificationIpp :: PP_Doc
-              _importspecificationIppWrap :: (PP_Doc -> PP_Doc)
-              _importspecificationItopInstanceNmL :: ([HsName])
-              _importspecificationIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1048, column 9)
-              _lhsOmodAsMp =
-                  maybe Map.empty (Map.singleton name_) asname_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _importspecificationIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _importspecificationIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _importspecificationIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _importspecificationIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _importspecificationIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _importspecificationIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _importspecificationIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _importspecificationItopInstanceNmL
-              -- copy rule (down)
-              _importspecificationOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _importspecificationOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _importspecificationOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _importspecificationOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _importspecificationOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _importspecificationOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _importspecificationOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _importspecificationOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _importspecificationOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _importspecificationOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _importspecificationIerrSq,_importspecificationIgUniq,_importspecificationIgathFixityGam,_importspecificationIidUseOccGam,_importspecificationIpp,_importspecificationIppWrap,_importspecificationItopInstanceNmL,_importspecificationIundefOccGam) =
-                  importspecification_ _importspecificationOfixityGam _importspecificationOgUniq _importspecificationOidGam _importspecificationOisMainMod _importspecificationOisTopMod _importspecificationOmoduleNm _importspecificationOnmLev _importspecificationOopts _importspecificationOpatchEhNmInInstance _importspecificationOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ImportDeclaration_Empty :: Range ->
-                               T_ImportDeclaration
-sem_ImportDeclaration_Empty range_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmodAsMp :: (Map.Map HsName HsName)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1050, column 9)
-              _lhsOmodAsMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ImportDeclarations ------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         modAsMp              : Map.Map HsName HsName
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : ImportDeclaration 
-         child tl             : ImportDeclarations 
-      alternative Nil:
--}
--- cata
-sem_ImportDeclarations :: ImportDeclarations ->
-                          T_ImportDeclarations
-sem_ImportDeclarations list =
-    (Prelude.foldr sem_ImportDeclarations_Cons sem_ImportDeclarations_Nil (Prelude.map sem_ImportDeclaration list))
--- semantic domain
-type T_ImportDeclarations = FixityGam ->
-                            UID ->
-                            IdDefOccGam ->
-                            Bool ->
-                            Bool ->
-                            HsName ->
-                            NmLev ->
-                            EHCOpts ->
-                            PatchEhNmInInstance ->
-                            ([HsName]) ->
-                            ( ErrSq,UID,FixityGam,IdUseOccGam,(Map.Map HsName HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ImportDeclarations_Cons :: T_ImportDeclaration ->
-                               T_ImportDeclarations ->
-                               T_ImportDeclarations
-sem_ImportDeclarations_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmodAsMp :: (Map.Map HsName HsName)
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOisMainMod :: Bool
-              _hdOisTopMod :: Bool
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOisMainMod :: Bool
-              _tlOisTopMod :: Bool
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdImodAsMp :: (Map.Map HsName HsName)
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathFixityGam :: FixityGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlImodAsMp :: (Map.Map HsName HsName)
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1044, column 41)
-              _lhsOmodAsMp =
-                  _hdImodAsMp `Map.union` _tlImodAsMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _hdOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _tlOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdImodAsMp,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlImodAsMp,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_ImportDeclarations_Nil :: T_ImportDeclarations
-sem_ImportDeclarations_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmodAsMp :: (Map.Map HsName HsName)
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1044, column 41)
-              _lhsOmodAsMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- ImportSpecification -----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Import:
-         child range          : {Range}
-         child hiding         : {Bool}
-         child imports        : Imports 
--}
--- cata
-sem_ImportSpecification :: ImportSpecification ->
-                           T_ImportSpecification
-sem_ImportSpecification (ImportSpecification_Import _range _hiding _imports) =
-    (sem_ImportSpecification_Import _range _hiding (sem_Imports _imports))
--- semantic domain
-type T_ImportSpecification = FixityGam ->
-                             UID ->
-                             IdDefOccGam ->
-                             Bool ->
-                             Bool ->
-                             HsName ->
-                             NmLev ->
-                             EHCOpts ->
-                             PatchEhNmInInstance ->
-                             ([HsName]) ->
-                             ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_ImportSpecification_Import :: Range ->
-                                  Bool ->
-                                  T_Imports ->
-                                  T_ImportSpecification
-sem_ImportSpecification_Import range_ hiding_ imports_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _importsOfixityGam :: FixityGam
-              _importsOgUniq :: UID
-              _importsOidGam :: IdDefOccGam
-              _importsOisMainMod :: Bool
-              _importsOisTopMod :: Bool
-              _importsOmoduleNm :: HsName
-              _importsOnmLev :: NmLev
-              _importsOopts :: EHCOpts
-              _importsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _importsOtopInstanceNmL :: ([HsName])
-              _importsIerrSq :: ErrSq
-              _importsIgUniq :: UID
-              _importsIgathFixityGam :: FixityGam
-              _importsIidUseOccGam :: IdUseOccGam
-              _importsIpp :: PP_Doc
-              _importsIppWrap :: (PP_Doc -> PP_Doc)
-              _importsItopInstanceNmL :: ([HsName])
-              _importsIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _importsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _importsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _importsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _importsIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _importsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _importsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _importsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _importsItopInstanceNmL
-              -- copy rule (down)
-              _importsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _importsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _importsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _importsOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _importsOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _importsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _importsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _importsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _importsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _importsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _importsIerrSq,_importsIgUniq,_importsIgathFixityGam,_importsIidUseOccGam,_importsIpp,_importsIppWrap,_importsItopInstanceNmL,_importsIundefOccGam) =
-                  imports_ _importsOfixityGam _importsOgUniq _importsOidGam _importsOisMainMod _importsOisTopMod _importsOmoduleNm _importsOnmLev _importsOopts _importsOpatchEhNmInInstance _importsOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Imports -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Import 
-         child tl             : Imports 
-      alternative Nil:
--}
--- cata
-sem_Imports :: Imports ->
-               T_Imports
-sem_Imports list =
-    (Prelude.foldr sem_Imports_Cons sem_Imports_Nil (Prelude.map sem_Import list))
--- semantic domain
-type T_Imports = FixityGam ->
-                 UID ->
-                 IdDefOccGam ->
-                 Bool ->
-                 Bool ->
-                 HsName ->
-                 NmLev ->
-                 EHCOpts ->
-                 PatchEhNmInInstance ->
-                 ([HsName]) ->
-                 ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Imports_Cons :: T_Import ->
-                    T_Imports ->
-                    T_Imports
-sem_Imports_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOisMainMod :: Bool
-              _hdOisTopMod :: Bool
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOisMainMod :: Bool
-              _tlOisTopMod :: Bool
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathFixityGam :: FixityGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _hdOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _tlOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Imports_Nil :: T_Imports
-sem_Imports_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Kind --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         conNm                : Name
-         eh                   : EH.KiExpr
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative NormalApplication:
-         child range          : {Range}
-         child function       : Kind 
-         child arguments      : Kinds 
-         visit 0:
-            local pp          : _
-      alternative InfixApplication:
-         child range          : {Range}
-         child leftKind       : Kind 
-         child operator       : Kind 
-         child rightKind      : Kind 
-         visit 0:
-            local pp          : _
-            local eh          : _
-      alternative Constructor:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idAsp       : _
-            local idOccKind   : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local pp          : _
-      alternative Parenthesized:
-         child range          : {Range}
-         child kind           : Kind 
-         visit 0:
-            local pp          : _
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idAsp       : _
-            local idOccKind   : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local pp          : _
-      alternative Forall:
-         child range          : {Range}
-         child kindvariables  : {Names}
-         child kind           : Kind 
-         visit 0:
-            local idDefOccGamInside : _
-            local idGam       : _
-            local pp          : _
-      alternative Annotate:
-         child range          : {Range}
-         child annotation     : KindAnnotation 
-         child kind           : Kind 
-         visit 0:
-            local eh          : _
--}
--- cata
-sem_Kind :: Kind ->
-            T_Kind
-sem_Kind (Kind_NormalApplication _range _function _arguments) =
-    (sem_Kind_NormalApplication _range (sem_Kind _function) (sem_Kinds _arguments))
-sem_Kind (Kind_InfixApplication _range _leftKind _operator _rightKind) =
-    (sem_Kind_InfixApplication _range (sem_Kind _leftKind) (sem_Kind _operator) (sem_Kind _rightKind))
-sem_Kind (Kind_Constructor _range _name) =
-    (sem_Kind_Constructor _range _name)
-sem_Kind (Kind_Parenthesized _range _kind) =
-    (sem_Kind_Parenthesized _range (sem_Kind _kind))
-sem_Kind (Kind_Variable _range _name) =
-    (sem_Kind_Variable _range _name)
-sem_Kind (Kind_Forall _range _kindvariables _kind) =
-    (sem_Kind_Forall _range _kindvariables (sem_Kind _kind))
-sem_Kind (Kind_Annotate _range _annotation _kind) =
-    (sem_Kind_Annotate _range (sem_KindAnnotation _annotation) (sem_Kind _kind))
--- semantic domain
-type T_Kind = UID ->
-              IdDefOccGam ->
-              NmLev ->
-              EHCOpts ->
-              PatchEhNmInInstance ->
-              ([HsName]) ->
-              ( Name,(EH.KiExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Kind_NormalApplication :: Range ->
-                              T_Kind ->
-                              T_Kinds ->
-                              T_Kind
-sem_Kind_NormalApplication range_ function_ arguments_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.KiExpr)
-              _lhsOconNm :: Name
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _functionOgUniq :: UID
-              _functionOidGam :: IdDefOccGam
-              _functionOnmLev :: NmLev
-              _functionOopts :: EHCOpts
-              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _functionOtopInstanceNmL :: ([HsName])
-              _argumentsOgUniq :: UID
-              _argumentsOidGam :: IdDefOccGam
-              _argumentsOnmLev :: NmLev
-              _argumentsOopts :: EHCOpts
-              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _argumentsOtopInstanceNmL :: ([HsName])
-              _functionIconNm :: Name
-              _functionIeh :: (EH.KiExpr)
-              _functionIerrSq :: ErrSq
-              _functionIfreeTvarS :: HsNameS
-              _functionIgUniq :: UID
-              _functionIidUseOccGam :: IdUseOccGam
-              _functionIpp :: PP_Doc
-              _functionIppWrap :: (PP_Doc -> PP_Doc)
-              _functionItopInstanceNmL :: ([HsName])
-              _functionIundefOccGam :: IdUseOccGam
-              _argumentsIeh :: ([EH.KiExpr])
-              _argumentsIerrSq :: ErrSq
-              _argumentsIfreeTvarS :: HsNameS
-              _argumentsIgUniq :: UID
-              _argumentsIidUseOccGam :: IdUseOccGam
-              _argumentsIpp :: PP_Doc
-              _argumentsIppL :: ([PP_Doc])
-              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
-              _argumentsItopInstanceNmL :: ([HsName])
-              _argumentsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 99, column 9)
-              _pp =
-                  ppAppTop  (_functionIconNm, _functionIpp)
-                            _argumentsIppL (_functionIpp >#< ppSpaces _argumentsIppL)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 178, column 9)
-              _lhsOeh =
-                  appTopApp (_functionIeh : _argumentsIeh)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _functionIerrSq `Seq.union` _argumentsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  _functionIfreeTvarS `Set.union` _argumentsIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _functionIppWrap . _argumentsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _argumentsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _argumentsItopInstanceNmL
-              -- copy rule (down)
-              _functionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _functionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _functionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _functionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _functionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _functionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _argumentsOgUniq =
-                  _functionIgUniq
-              -- copy rule (down)
-              _argumentsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _argumentsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _argumentsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _argumentsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _argumentsOtopInstanceNmL =
-                  _functionItopInstanceNmL
-              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIfreeTvarS,_functionIgUniq,_functionIidUseOccGam,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
-                  function_ _functionOgUniq _functionOidGam _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOtopInstanceNmL
-              ( _argumentsIeh,_argumentsIerrSq,_argumentsIfreeTvarS,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
-                  arguments_ _argumentsOgUniq _argumentsOidGam _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kind_InfixApplication :: Range ->
-                             T_Kind ->
-                             T_Kind ->
-                             T_Kind ->
-                             T_Kind
-sem_Kind_InfixApplication range_ leftKind_ operator_ rightKind_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.KiExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftKindOgUniq :: UID
-              _leftKindOidGam :: IdDefOccGam
-              _leftKindOnmLev :: NmLev
-              _leftKindOopts :: EHCOpts
-              _leftKindOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftKindOtopInstanceNmL :: ([HsName])
-              _operatorOgUniq :: UID
-              _operatorOidGam :: IdDefOccGam
-              _operatorOnmLev :: NmLev
-              _operatorOopts :: EHCOpts
-              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
-              _operatorOtopInstanceNmL :: ([HsName])
-              _rightKindOgUniq :: UID
-              _rightKindOidGam :: IdDefOccGam
-              _rightKindOnmLev :: NmLev
-              _rightKindOopts :: EHCOpts
-              _rightKindOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightKindOtopInstanceNmL :: ([HsName])
-              _leftKindIconNm :: Name
-              _leftKindIeh :: (EH.KiExpr)
-              _leftKindIerrSq :: ErrSq
-              _leftKindIfreeTvarS :: HsNameS
-              _leftKindIgUniq :: UID
-              _leftKindIidUseOccGam :: IdUseOccGam
-              _leftKindIpp :: PP_Doc
-              _leftKindIppWrap :: (PP_Doc -> PP_Doc)
-              _leftKindItopInstanceNmL :: ([HsName])
-              _leftKindIundefOccGam :: IdUseOccGam
-              _operatorIconNm :: Name
-              _operatorIeh :: (EH.KiExpr)
-              _operatorIerrSq :: ErrSq
-              _operatorIfreeTvarS :: HsNameS
-              _operatorIgUniq :: UID
-              _operatorIidUseOccGam :: IdUseOccGam
-              _operatorIpp :: PP_Doc
-              _operatorIppWrap :: (PP_Doc -> PP_Doc)
-              _operatorItopInstanceNmL :: ([HsName])
-              _operatorIundefOccGam :: IdUseOccGam
-              _rightKindIconNm :: Name
-              _rightKindIeh :: (EH.KiExpr)
-              _rightKindIerrSq :: ErrSq
-              _rightKindIfreeTvarS :: HsNameS
-              _rightKindIgUniq :: UID
-              _rightKindIidUseOccGam :: IdUseOccGam
-              _rightKindIpp :: PP_Doc
-              _rightKindIppWrap :: (PP_Doc -> PP_Doc)
-              _rightKindItopInstanceNmL :: ([HsName])
-              _rightKindIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 102, column 9)
-              _pp =
-                  let args = [_leftKindIpp,_rightKindIpp]
-                                                  in      ppAppTop  (_operatorIconNm, _operatorIpp)
-                                    args (_operatorIpp >#< ppSpaces args)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 180, column 9)
-              _eh =
-                  appRngParApp range_ [_operatorIeh,_leftKindIeh,_rightKindIeh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftKindIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightKindIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  _leftKindIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightKindIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftKindIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightKindIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftKindIppWrap . _operatorIppWrap . _rightKindIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftKindIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightKindIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightKindIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightKindItopInstanceNmL
-              -- copy rule (down)
-              _leftKindOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftKindOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftKindOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftKindOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftKindOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftKindOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _operatorOgUniq =
-                  _leftKindIgUniq
-              -- copy rule (down)
-              _operatorOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _operatorOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _operatorOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _operatorOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _operatorOtopInstanceNmL =
-                  _leftKindItopInstanceNmL
-              -- copy rule (chain)
-              _rightKindOgUniq =
-                  _operatorIgUniq
-              -- copy rule (down)
-              _rightKindOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightKindOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightKindOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightKindOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rightKindOtopInstanceNmL =
-                  _operatorItopInstanceNmL
-              ( _leftKindIconNm,_leftKindIeh,_leftKindIerrSq,_leftKindIfreeTvarS,_leftKindIgUniq,_leftKindIidUseOccGam,_leftKindIpp,_leftKindIppWrap,_leftKindItopInstanceNmL,_leftKindIundefOccGam) =
-                  leftKind_ _leftKindOgUniq _leftKindOidGam _leftKindOnmLev _leftKindOopts _leftKindOpatchEhNmInInstance _leftKindOtopInstanceNmL
-              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorIundefOccGam) =
-                  operator_ _operatorOgUniq _operatorOidGam _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL
-              ( _rightKindIconNm,_rightKindIeh,_rightKindIerrSq,_rightKindIfreeTvarS,_rightKindIgUniq,_rightKindIidUseOccGam,_rightKindIpp,_rightKindIppWrap,_rightKindItopInstanceNmL,_rightKindIundefOccGam) =
-                  rightKind_ _rightKindOgUniq _rightKindOidGam _rightKindOnmLev _rightKindOopts _rightKindOpatchEhNmInInstance _rightKindOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kind_Constructor :: Range ->
-                        Name ->
-                        T_Kind
-sem_Kind_Constructor range_ name_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.KiExpr)
-              _lhsOconNm :: Name
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 586, column 9)
-              _idAsp =
-                  IdAsp_Kind_Con
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 586, column 9)
-              _idOccKind =
-                  IdOcc_Kind
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 592, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 106, column 9)
-              _pp =
-                  ppCon name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 182, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.KiExpr_Con _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 102, column 9)
-              _lhsOconNm =
-                  name_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kind_Parenthesized :: Range ->
-                          T_Kind ->
-                          T_Kind
-sem_Kind_Parenthesized range_ kind_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.KiExpr)
-              _lhsOconNm :: Name
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _kindOgUniq :: UID
-              _kindOidGam :: IdDefOccGam
-              _kindOnmLev :: NmLev
-              _kindOopts :: EHCOpts
-              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
-              _kindOtopInstanceNmL :: ([HsName])
-              _kindIconNm :: Name
-              _kindIeh :: (EH.KiExpr)
-              _kindIerrSq :: ErrSq
-              _kindIfreeTvarS :: HsNameS
-              _kindIgUniq :: UID
-              _kindIidUseOccGam :: IdUseOccGam
-              _kindIpp :: PP_Doc
-              _kindIppWrap :: (PP_Doc -> PP_Doc)
-              _kindItopInstanceNmL :: ([HsName])
-              _kindIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 108, column 9)
-              _pp =
-                  ppParens _kindIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 184, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.KiExpr_Parens _kindIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _kindIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  _kindIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _kindIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _kindIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _kindIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _kindIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _kindItopInstanceNmL
-              -- copy rule (down)
-              _kindOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _kindOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _kindOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _kindOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _kindOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _kindOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
-                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kind_Variable :: Range ->
-                     Name ->
-                     T_Kind
-sem_Kind_Variable range_ name_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.KiExpr)
-              _lhsOconNm :: Name
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 589, column 9)
-              _idAsp =
-                  IdAsp_Kind_Var
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 589, column 9)
-              _idOccKind =
-                  IdOcc_Kind
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 592, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 110, column 9)
-              _pp =
-                  pp name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 186, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.KiExpr_Var name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 110, column 9)
-              _lhsOfreeTvarS =
-                  Set.singleton name_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kind_Forall :: Range ->
-                   Names ->
-                   T_Kind ->
-                   T_Kind
-sem_Kind_Forall range_ kindvariables_ kind_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.KiExpr)
-              _lhsOconNm :: Name
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _kindOgUniq :: UID
-              _kindOidGam :: IdDefOccGam
-              _kindOnmLev :: NmLev
-              _kindOopts :: EHCOpts
-              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
-              _kindOtopInstanceNmL :: ([HsName])
-              _kindIconNm :: Name
-              _kindIeh :: (EH.KiExpr)
-              _kindIerrSq :: ErrSq
-              _kindIfreeTvarS :: HsNameS
-              _kindIgUniq :: UID
-              _kindIidUseOccGam :: IdUseOccGam
-              _kindIpp :: PP_Doc
-              _kindIppWrap :: (PP_Doc -> PP_Doc)
-              _kindItopInstanceNmL :: ([HsName])
-              _kindIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 247, column 9)
-              _idDefOccGamInside =
-                  kvarL2IdDefOccGam _lhsInmLev range_ kindvariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 412, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamInside _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 112, column 9)
-              _pp =
-                  "forall" >#< ppSpaces kindvariables_ >#< "." >#< _kindIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 188, column 9)
-              _lhsOeh =
-                  _kindIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 112, column 9)
-              _lhsOfreeTvarS =
-                  _kindIfreeTvarS `Set.difference` Set.fromList kindvariables_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _kindIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _kindIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _kindIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _kindIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _kindIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _kindItopInstanceNmL
-              -- copy rule (down)
-              _kindOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _kindOidGam =
-                  _idGam
-              -- copy rule (down)
-              _kindOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _kindOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _kindOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _kindOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
-                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kind_Annotate :: Range ->
-                     T_KindAnnotation ->
-                     T_Kind ->
-                     T_Kind
-sem_Kind_Annotate range_ annotation_ kind_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.KiExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _annotationOgUniq :: UID
-              _annotationOidGam :: IdDefOccGam
-              _annotationOnmLev :: NmLev
-              _annotationOopts :: EHCOpts
-              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
-              _annotationOtopInstanceNmL :: ([HsName])
-              _kindOgUniq :: UID
-              _kindOidGam :: IdDefOccGam
-              _kindOnmLev :: NmLev
-              _kindOopts :: EHCOpts
-              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
-              _kindOtopInstanceNmL :: ([HsName])
-              _annotationIeh :: (EH.KiExprAnn)
-              _annotationIerrSq :: ErrSq
-              _annotationIfreeTvarS :: HsNameS
-              _annotationIgUniq :: UID
-              _annotationIidUseOccGam :: IdUseOccGam
-              _annotationIpp :: PP_Doc
-              _annotationIppWrap :: (PP_Doc -> PP_Doc)
-              _annotationItopInstanceNmL :: ([HsName])
-              _annotationIundefOccGam :: IdUseOccGam
-              _kindIconNm :: Name
-              _kindIeh :: (EH.KiExpr)
-              _kindIerrSq :: ErrSq
-              _kindIfreeTvarS :: HsNameS
-              _kindIgUniq :: UID
-              _kindIidUseOccGam :: IdUseOccGam
-              _kindIpp :: PP_Doc
-              _kindIppWrap :: (PP_Doc -> PP_Doc)
-              _kindItopInstanceNmL :: ([HsName])
-              _kindIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 190, column 17)
-              _eh =
-                  rngLift range_ EH.KiExpr_Ann _annotationIeh _kindIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _annotationIerrSq `Seq.union` _kindIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  _annotationIfreeTvarS `Set.union` _kindIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _annotationIidUseOccGam `gamAddGam` _kindIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _annotationIpp >-< _kindIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _annotationIppWrap . _kindIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _annotationIundefOccGam `gamUnion` _kindIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _kindIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _kindItopInstanceNmL
-              -- copy rule (down)
-              _annotationOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _annotationOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _annotationOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _annotationOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _annotationOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _annotationOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _kindOgUniq =
-                  _annotationIgUniq
-              -- copy rule (down)
-              _kindOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _kindOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _kindOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _kindOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _kindOtopInstanceNmL =
-                  _annotationItopInstanceNmL
-              ( _annotationIeh,_annotationIerrSq,_annotationIfreeTvarS,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
-                  annotation_ _annotationOgUniq _annotationOidGam _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL
-              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
-                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- KindAnnotation ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.KiExprAnn
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Empty:
-         visit 0:
-            local eh          : _
--}
--- cata
-sem_KindAnnotation :: KindAnnotation ->
-                      T_KindAnnotation
-sem_KindAnnotation (KindAnnotation_Empty) =
-    (sem_KindAnnotation_Empty)
--- semantic domain
-type T_KindAnnotation = UID ->
-                        IdDefOccGam ->
-                        NmLev ->
-                        EHCOpts ->
-                        PatchEhNmInInstance ->
-                        ([HsName]) ->
-                        ( (EH.KiExprAnn),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_KindAnnotation_Empty :: T_KindAnnotation
-sem_KindAnnotation_Empty =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.KiExprAnn)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 914, column 17)
-              _eh =
-                  EH.KiExprAnn_Empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Kinds -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.KiExpr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Kind 
-         child tl             : Kinds 
-      alternative Nil:
--}
--- cata
-sem_Kinds :: Kinds ->
-             T_Kinds
-sem_Kinds list =
-    (Prelude.foldr sem_Kinds_Cons sem_Kinds_Nil (Prelude.map sem_Kind list))
--- semantic domain
-type T_Kinds = UID ->
-               IdDefOccGam ->
-               NmLev ->
-               EHCOpts ->
-               PatchEhNmInInstance ->
-               ([HsName]) ->
-               ( ([EH.KiExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Kinds_Cons :: T_Kind ->
-                  T_Kinds ->
-                  T_Kinds
-sem_Kinds_Cons hd_ tl_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.KiExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIconNm :: Name
-              _hdIeh :: (EH.KiExpr)
-              _hdIerrSq :: ErrSq
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.KiExpr])
-              _tlIerrSq :: ErrSq
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 448, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 172, column 21)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIconNm,_hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Kinds_Nil :: T_Kinds
-sem_Kinds_Nil =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.KiExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 450, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 172, column 21)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- LeftHandSide ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         nmLevFun             : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.PatExpr]
-         ehTyMk               : EH.Expr -> EH.Expr
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         refname              : HsName
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Function:
-         child range          : {Range}
-         child name           : {Name}
-         child patterns       : Patterns 
-         visit 0:
-            local refname     : _
-            local pp          : _
-      alternative Infix:
-         child range          : {Range}
-         child leftPattern    : Pattern 
-         child operator       : {Name}
-         child rightPattern   : Pattern 
-         visit 0:
-            local patchEhNmInInstance : _
-            local refname     : _
-            local pp          : _
-      alternative Parenthesized:
-         child range          : {Range}
-         child lefthandside   : LeftHandSide 
-         child patterns       : Patterns 
-         visit 0:
-            local pp          : _
-      alternative Typed:
-         child range          : {Range}
-         child lefthandside   : LeftHandSide 
-         child type           : Type 
-         visit 0:
-            local idDefOccGamType : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
--}
--- cata
-sem_LeftHandSide :: LeftHandSide ->
-                    T_LeftHandSide
-sem_LeftHandSide (LeftHandSide_Function _range _name _patterns) =
-    (sem_LeftHandSide_Function _range _name (sem_Patterns _patterns))
-sem_LeftHandSide (LeftHandSide_Infix _range _leftPattern _operator _rightPattern) =
-    (sem_LeftHandSide_Infix _range (sem_Pattern _leftPattern) _operator (sem_Pattern _rightPattern))
-sem_LeftHandSide (LeftHandSide_Parenthesized _range _lefthandside _patterns) =
-    (sem_LeftHandSide_Parenthesized _range (sem_LeftHandSide _lefthandside) (sem_Patterns _patterns))
-sem_LeftHandSide (LeftHandSide_Typed _range _lefthandside _type) =
-    (sem_LeftHandSide_Typed _range (sem_LeftHandSide _lefthandside) (sem_Type _type))
--- semantic domain
-type T_LeftHandSide = UID ->
-                      FixityGam ->
-                      UID ->
-                      (Map.Map HsName [(HsName,HsName)]) ->
-                      IdDefOccGam ->
-                      HsName ->
-                      NmLev ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      (Set.Set Pragma.Pragma) ->
-                      ([HsName]) ->
-                      ( ([EH.PatExpr]),(EH.Expr -> EH.Expr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),HsName,([HsName]),IdUseOccGam)
-sem_LeftHandSide_Function :: Range ->
-                             Name ->
-                             T_Patterns ->
-                             T_LeftHandSide
-sem_LeftHandSide_Function range_ name_ patterns_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsInmLevFun
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _lhsOeh :: ([EH.PatExpr])
-              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOrefname :: HsName
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([EH.PatExpr])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1087, column 9)
-              _patternsOpatchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 47, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLevFun _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 317, column 9)
-              _pp =
-                  name_ >#< ppSpaces _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 735, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Var
-                          (_lhsIpatchEhNmInInstance _refname)
-                    : _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 755, column 9)
-              _lhsOehTyMk =
-                  id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (from local)
-              _lhsOrefname =
-                  _refname
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_LeftHandSide_Infix :: Range ->
-                          T_Pattern ->
-                          Name ->
-                          T_Pattern ->
-                          T_LeftHandSide
-sem_LeftHandSide_Infix range_ leftPattern_ operator_ rightPattern_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsInmLevFun
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.PatExpr])
-              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOrefname :: HsName
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftPatternOfixityGam :: FixityGam
-              _leftPatternOgUniq :: UID
-              _leftPatternOidGam :: IdDefOccGam
-              _leftPatternOmoduleNm :: HsName
-              _leftPatternOnmLev :: NmLev
-              _leftPatternOopts :: EHCOpts
-              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftPatternOtopInstanceNmL :: ([HsName])
-              _rightPatternOfixityGam :: FixityGam
-              _rightPatternOgUniq :: UID
-              _rightPatternOidGam :: IdDefOccGam
-              _rightPatternOmoduleNm :: HsName
-              _rightPatternOnmLev :: NmLev
-              _rightPatternOopts :: EHCOpts
-              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightPatternOtopInstanceNmL :: ([HsName])
-              _leftPatternIeh :: (EH.PatExpr)
-              _leftPatternIerrSq :: ErrSq
-              _leftPatternIgUniq :: UID
-              _leftPatternIidDefOccGam :: IdDefOccGam
-              _leftPatternIidOccDefs :: ([IdOcc])
-              _leftPatternIidUseOccGam :: IdUseOccGam
-              _leftPatternIisVar :: Bool
-              _leftPatternImbTopRefname :: (Maybe HsName)
-              _leftPatternIpp :: PP_Doc
-              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
-              _leftPatternItopInstanceNmL :: ([HsName])
-              _leftPatternIundefOccGam :: IdUseOccGam
-              _rightPatternIeh :: (EH.PatExpr)
-              _rightPatternIerrSq :: ErrSq
-              _rightPatternIgUniq :: UID
-              _rightPatternIidDefOccGam :: IdDefOccGam
-              _rightPatternIidOccDefs :: ([IdOcc])
-              _rightPatternIidUseOccGam :: IdUseOccGam
-              _rightPatternIisVar :: Bool
-              _rightPatternImbTopRefname :: (Maybe HsName)
-              _rightPatternIpp :: PP_Doc
-              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
-              _rightPatternItopInstanceNmL :: ([HsName])
-              _rightPatternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1090, column 9)
-              _patchEhNmInInstance =
-                  id
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 49, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLevFun _lhsImoduleNm operator_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 319, column 9)
-              _pp =
-                  _leftPatternIpp >#< operator_ >#< _rightPatternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 739, column 9)
-              _lhsOeh =
-                  [ rngLift range_ EH.PatExpr_Var
-                            (_lhsIpatchEhNmInInstance _refname)
-                  , _leftPatternIeh
-                  , _rightPatternIeh
-                  ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 755, column 9)
-              _lhsOehTyMk =
-                  id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftPatternIerrSq `Seq.union` _rightPatternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _leftPatternIidDefOccGam `gamAddGam` _rightPatternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftPatternIidUseOccGam `gamAddGam` _rightPatternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftPatternIppWrap . _rightPatternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightPatternIgUniq
-              -- copy rule (from local)
-              _lhsOrefname =
-                  _refname
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightPatternItopInstanceNmL
-              -- copy rule (down)
-              _leftPatternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftPatternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftPatternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftPatternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _leftPatternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftPatternOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _leftPatternOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (down)
-              _leftPatternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rightPatternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightPatternOgUniq =
-                  _leftPatternIgUniq
-              -- copy rule (down)
-              _rightPatternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightPatternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rightPatternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightPatternOopts =
-                  _lhsIopts
-              -- copy rule (from local)
-              _rightPatternOpatchEhNmInInstance =
-                  _patchEhNmInInstance
-              -- copy rule (chain)
-              _rightPatternOtopInstanceNmL =
-                  _leftPatternItopInstanceNmL
-              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidDefOccGam,_leftPatternIidOccDefs,_leftPatternIidUseOccGam,_leftPatternIisVar,_leftPatternImbTopRefname,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternIundefOccGam) =
-                  leftPattern_ _leftPatternOfixityGam _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL
-              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidDefOccGam,_rightPatternIidOccDefs,_rightPatternIidUseOccGam,_rightPatternIisVar,_rightPatternImbTopRefname,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternIundefOccGam) =
-                  rightPattern_ _rightPatternOfixityGam _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_LeftHandSide_Parenthesized :: Range ->
-                                  T_LeftHandSide ->
-                                  T_Patterns ->
-                                  T_LeftHandSide
-sem_LeftHandSide_Parenthesized range_ lefthandside_ patterns_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsInmLevFun
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.PatExpr])
-              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOrefname :: HsName
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lefthandsideOcaseId :: UID
-              _lefthandsideOfixityGam :: FixityGam
-              _lefthandsideOgUniq :: UID
-              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _lefthandsideOidGam :: IdDefOccGam
-              _lefthandsideOmoduleNm :: HsName
-              _lefthandsideOnmLev :: NmLev
-              _lefthandsideOnmLevFun :: NmLev
-              _lefthandsideOopts :: EHCOpts
-              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
-              _lefthandsideOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _lefthandsideIeh :: ([EH.PatExpr])
-              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
-              _lefthandsideIerrSq :: ErrSq
-              _lefthandsideIgUniq :: UID
-              _lefthandsideIidDefOccGam :: IdDefOccGam
-              _lefthandsideIidOccDefs :: ([IdOcc])
-              _lefthandsideIidUseOccGam :: IdUseOccGam
-              _lefthandsideIpp :: PP_Doc
-              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _lefthandsideIrefname :: HsName
-              _lefthandsideItopInstanceNmL :: ([HsName])
-              _lefthandsideIundefOccGam :: IdUseOccGam
-              _patternsIeh :: ([EH.PatExpr])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 321, column 9)
-              _pp =
-                  ppParens _lefthandsideIpp >#< ppSpaces _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 745, column 9)
-              _lhsOeh =
-                  _lefthandsideIeh ++ _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 755, column 9)
-              _lhsOehTyMk =
-                  id
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _lefthandsideIerrSq `Seq.union` _patternsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _lefthandsideIidDefOccGam `gamAddGam` _patternsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _lefthandsideIidOccDefs ++ _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _lefthandsideIidUseOccGam `gamAddGam` _patternsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _lefthandsideIppWrap . _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _lefthandsideIundefOccGam `gamUnion` _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (up)
-              _lhsOrefname =
-                  _lefthandsideIrefname
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _lefthandsideOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _lefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _lefthandsideOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _lefthandsideOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _lefthandsideOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _lefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _lefthandsideOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _lefthandsideOnmLevFun =
-                  _lhsInmLevFun
-              -- copy rule (down)
-              _lefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _lefthandsideOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _lefthandsideOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _lefthandsideOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _patternsOgUniq =
-                  _lefthandsideIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _patternsOtopInstanceNmL =
-                  _lefthandsideItopInstanceNmL
-              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideIundefOccGam) =
-                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_LeftHandSide_Typed :: Range ->
-                          T_LeftHandSide ->
-                          T_Type ->
-                          T_LeftHandSide
-sem_LeftHandSide_Typed range_ lefthandside_ type_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsInmLevFun
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _typeOidGam :: IdDefOccGam
-              _typeOnmLev :: NmLev
-              _lhsOeh :: ([EH.PatExpr])
-              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOrefname :: HsName
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lefthandsideOcaseId :: UID
-              _lefthandsideOfixityGam :: FixityGam
-              _lefthandsideOgUniq :: UID
-              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _lefthandsideOidGam :: IdDefOccGam
-              _lefthandsideOmoduleNm :: HsName
-              _lefthandsideOnmLev :: NmLev
-              _lefthandsideOnmLevFun :: NmLev
-              _lefthandsideOopts :: EHCOpts
-              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
-              _lefthandsideOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOisAsPred :: Bool
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _lefthandsideIeh :: ([EH.PatExpr])
-              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
-              _lefthandsideIerrSq :: ErrSq
-              _lefthandsideIgUniq :: UID
-              _lefthandsideIidDefOccGam :: IdDefOccGam
-              _lefthandsideIidOccDefs :: ([IdOcc])
-              _lefthandsideIidUseOccGam :: IdUseOccGam
-              _lefthandsideIpp :: PP_Doc
-              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _lefthandsideIrefname :: HsName
-              _lefthandsideItopInstanceNmL :: ([HsName])
-              _lefthandsideIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 225, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 360, column 9)
-              _typeOidGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 60, column 9)
-              _typeOnmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 323, column 9)
-              _pp =
-                  _lefthandsideIpp >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 747, column 9)
-              _lhsOeh =
-                  _lefthandsideIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 753, column 9)
-              _lhsOehTyMk =
-                  rngLift range_ EH.Expr_TypeAs True _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 197, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 206, column 9)
-              _doGenVarWild =
-                  True
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _lefthandsideIerrSq `Seq.union` _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _lefthandsideIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _lefthandsideIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _lefthandsideIidUseOccGam `gamAddGam` _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _lefthandsideIppWrap . _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _lefthandsideIundefOccGam `gamUnion` _typeIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOrefname =
-                  _lefthandsideIrefname
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _lefthandsideOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _lefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _lefthandsideOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _lefthandsideOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _lefthandsideOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _lefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _lefthandsideOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _lefthandsideOnmLevFun =
-                  _lhsInmLevFun
-              -- copy rule (down)
-              _lefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _lefthandsideOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _lefthandsideOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _lefthandsideOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _lefthandsideIgUniq
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _lefthandsideItopInstanceNmL
-              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideIundefOccGam) =
-                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Literal -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : Literal 
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Int:
-         child range          : {Range}
-         child base           : {Int}
-         child value          : {String}
-         visit 0:
-            local pp          : _
-            local eh          : _
-      alternative Char:
-         child range          : {Range}
-         child value          : {String}
-         visit 0:
-            local pp          : _
-            local eh          : _
-      alternative String:
-         child range          : {Range}
-         child value          : {String}
-         visit 0:
-            local pp          : _
-            local eh          : _
-      alternative Float:
-         child range          : {Range}
-         child value          : {String}
-         visit 0:
-            local pp          : _
-            local eh          : _
--}
--- cata
-sem_Literal :: Literal ->
-               T_Literal
-sem_Literal (Literal_Int _range _base _value) =
-    (sem_Literal_Int _range _base _value)
-sem_Literal (Literal_Char _range _value) =
-    (sem_Literal_Char _range _value)
-sem_Literal (Literal_String _range _value) =
-    (sem_Literal_String _range _value)
-sem_Literal (Literal_Float _range _value) =
-    (sem_Literal_Float _range _value)
--- semantic domain
-type T_Literal = UID ->
-                 IdDefOccGam ->
-                 NmLev ->
-                 EHCOpts ->
-                 PatchEhNmInInstance ->
-                 ([HsName]) ->
-                 ( Literal,ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Literal_Int :: Range ->
-                   Int ->
-                   String ->
-                   T_Literal
-sem_Literal_Int range_ base_ value_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: Literal
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 384, column 9)
-              _pp =
-                  pp value_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- self rule
-              _eh =
-                  Literal_Int range_ base_ value_
-              -- self rule
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Literal_Char :: Range ->
-                    String ->
-                    T_Literal
-sem_Literal_Char range_ value_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: Literal
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 386, column 9)
-              _pp =
-                  pp ("'" ++ value_ ++ "'")
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- self rule
-              _eh =
-                  Literal_Char range_ value_
-              -- self rule
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Literal_String :: Range ->
-                      String ->
-                      T_Literal
-sem_Literal_String range_ value_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: Literal
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 388, column 9)
-              _pp =
-                  pp (show value_)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- self rule
-              _eh =
-                  Literal_String range_ value_
-              -- self rule
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Literal_Float :: Range ->
-                     String ->
-                     T_Literal
-sem_Literal_Float range_ value_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: Literal
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 390, column 9)
-              _pp =
-                  pp value_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- self rule
-              _eh =
-                  Literal_Float range_ value_
-              -- self rule
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- MaybeDeclarations -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : Maybe [EH.Decl]
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         gathPragmas          : Set.Set Pragma.Pragma
-         idDefOccGam          : IdDefOccGam
-         idDpdMp              : IdDpdMp
-         idOccDefs            : [IdOcc]
-         idTySigDefOccGam     : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         needsError           : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Just:
-         child just           : Declarations 
-         visit 0:
-            local pp          : _
-      alternative Nothing:
--}
--- cata
-sem_MaybeDeclarations :: MaybeDeclarations ->
-                         T_MaybeDeclarations
-sem_MaybeDeclarations (Prelude.Just x) =
-    (sem_MaybeDeclarations_Just (sem_Declarations x))
-sem_MaybeDeclarations Prelude.Nothing =
-    sem_MaybeDeclarations_Nothing
--- semantic domain
-type T_MaybeDeclarations = UID ->
-                           FixityGam ->
-                           UID ->
-                           (Map.Map HsName [(HsName,HsName)]) ->
-                           IdDefOccGam ->
-                           HsName ->
-                           NmLev ->
-                           EHCOpts ->
-                           PatchEhNmInInstance ->
-                           (Set.Set Pragma.Pragma) ->
-                           ([HsName]) ->
-                           ( (Maybe [EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_MaybeDeclarations_Just :: T_Declarations ->
-                              T_MaybeDeclarations
-sem_MaybeDeclarations_Just just_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (Maybe [EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _justOcaseId :: UID
-              _justOfixityGam :: FixityGam
-              _justOgUniq :: UID
-              _justOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _justOidGam :: IdDefOccGam
-              _justOmoduleNm :: HsName
-              _justOnmLev :: NmLev
-              _justOopts :: EHCOpts
-              _justOpatchEhNmInInstance :: PatchEhNmInInstance
-              _justOpragmas :: (Set.Set Pragma.Pragma)
-              _justOtopInstanceNmL :: ([HsName])
-              _justIeh :: ([EH.Decl])
-              _justIerrSq :: ErrSq
-              _justIgUniq :: UID
-              _justIgathFixityGam :: FixityGam
-              _justIgathPragmas :: (Set.Set Pragma.Pragma)
-              _justIidDefOccGam :: IdDefOccGam
-              _justIidDpdMp :: IdDpdMp
-              _justIidOccDefs :: ([IdOcc])
-              _justIidTySigDefOccGam :: IdDefOccGam
-              _justIidUseOccGam :: IdUseOccGam
-              _justIneedsError :: Bool
-              _justIpp :: PP_Doc
-              _justIppWrap :: (PP_Doc -> PP_Doc)
-              _justItopInstanceNmL :: ([HsName])
-              _justIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 25, column 9)
-              _pp =
-                  "where" >#< _justIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 72, column 9)
-              _lhsOeh =
-                  Just _justIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _justIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _justIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _justIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _justIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  _justIidDpdMp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _justIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  _justIidTySigDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _justIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  _justIneedsError
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _justIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _justIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _justIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _justItopInstanceNmL
-              -- copy rule (down)
-              _justOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _justOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _justOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _justOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _justOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _justOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _justOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _justOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _justOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _justOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _justOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _justIeh,_justIerrSq,_justIgUniq,_justIgathFixityGam,_justIgathPragmas,_justIidDefOccGam,_justIidDpdMp,_justIidOccDefs,_justIidTySigDefOccGam,_justIidUseOccGam,_justIneedsError,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
-                  just_ _justOcaseId _justOfixityGam _justOgUniq _justOgenerDerivMp _justOidGam _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOpragmas _justOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_MaybeDeclarations_Nothing :: T_MaybeDeclarations
-sem_MaybeDeclarations_Nothing =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (Maybe [EH.Decl])
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidDpdMp :: IdDpdMp
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidTySigDefOccGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOneedsError :: Bool
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 64, column 33)
-              _lhsOeh =
-                  Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
-              _lhsOidDpdMp =
-                  Map.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
-              _lhsOidTySigDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
-              _lhsOneedsError =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- MaybeExports ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Just:
-         child just           : Exports 
-      alternative Nothing:
--}
--- cata
-sem_MaybeExports :: MaybeExports ->
-                    T_MaybeExports
-sem_MaybeExports (Prelude.Just x) =
-    (sem_MaybeExports_Just (sem_Exports x))
-sem_MaybeExports Prelude.Nothing =
-    sem_MaybeExports_Nothing
--- semantic domain
-type T_MaybeExports = FixityGam ->
-                      UID ->
-                      IdDefOccGam ->
-                      Bool ->
-                      Bool ->
-                      HsName ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      ([HsName]) ->
-                      ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_MaybeExports_Just :: T_Exports ->
-                         T_MaybeExports
-sem_MaybeExports_Just just_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _justOfixityGam :: FixityGam
-              _justOgUniq :: UID
-              _justOidGam :: IdDefOccGam
-              _justOisMainMod :: Bool
-              _justOisTopMod :: Bool
-              _justOmoduleNm :: HsName
-              _justOnmLev :: NmLev
-              _justOopts :: EHCOpts
-              _justOpatchEhNmInInstance :: PatchEhNmInInstance
-              _justOtopInstanceNmL :: ([HsName])
-              _justIerrSq :: ErrSq
-              _justIgUniq :: UID
-              _justIgathFixityGam :: FixityGam
-              _justIidUseOccGam :: IdUseOccGam
-              _justIpp :: PP_Doc
-              _justIppWrap :: (PP_Doc -> PP_Doc)
-              _justItopInstanceNmL :: ([HsName])
-              _justIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _justIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _justIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _justIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _justIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _justIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _justIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _justIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _justItopInstanceNmL
-              -- copy rule (down)
-              _justOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _justOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _justOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _justOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _justOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _justOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _justOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _justOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _justOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _justOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _justIerrSq,_justIgUniq,_justIgathFixityGam,_justIidUseOccGam,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
-                  just_ _justOfixityGam _justOgUniq _justOidGam _justOisMainMod _justOisTopMod _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_MaybeExports_Nothing :: T_MaybeExports
-sem_MaybeExports_Nothing =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- MaybeExpression ---------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : Maybe EH.Expr
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppMb                 : Maybe PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Just:
-         child just           : Expression 
-      alternative Nothing:
--}
--- cata
-sem_MaybeExpression :: MaybeExpression ->
-                       T_MaybeExpression
-sem_MaybeExpression (Prelude.Just x) =
-    (sem_MaybeExpression_Just (sem_Expression x))
-sem_MaybeExpression Prelude.Nothing =
-    sem_MaybeExpression_Nothing
--- semantic domain
-type T_MaybeExpression = UID ->
-                         FixityGam ->
-                         UID ->
-                         (Map.Map HsName [(HsName,HsName)]) ->
-                         IdDefOccGam ->
-                         HsName ->
-                         NmLev ->
-                         EHCOpts ->
-                         PatchEhNmInInstance ->
-                         (Set.Set Pragma.Pragma) ->
-                         ([HsName]) ->
-                         ( (Maybe EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(Maybe PP_Doc),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_MaybeExpression_Just :: T_Expression ->
-                            T_MaybeExpression
-sem_MaybeExpression_Just just_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppMb :: (Maybe PP_Doc)
-              _lhsOeh :: (Maybe EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _justOcaseId :: UID
-              _justOfixityGam :: FixityGam
-              _justOgUniq :: UID
-              _justOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _justOidGam :: IdDefOccGam
-              _justOmoduleNm :: HsName
-              _justOnmLev :: NmLev
-              _justOopts :: EHCOpts
-              _justOpatchEhNmInInstance :: PatchEhNmInInstance
-              _justOpragmas :: (Set.Set Pragma.Pragma)
-              _justOtopInstanceNmL :: ([HsName])
-              _justIconNm :: Name
-              _justIeh :: (EH.Expr)
-              _justIerrSq :: ErrSq
-              _justIgUniq :: UID
-              _justIidUseOccGam :: IdUseOccGam
-              _justIopChain :: (OpChain EH.Expr)
-              _justIoperatorName :: MaybeName
-              _justIpp :: PP_Doc
-              _justIppWrap :: (PP_Doc -> PP_Doc)
-              _justItopInstanceNmL :: ([HsName])
-              _justIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 400, column 9)
-              _lhsOppMb =
-                  Just _justIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 462, column 9)
-              _lhsOeh =
-                  Just _justIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _justIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _justIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _justIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _justIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _justIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _justIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _justItopInstanceNmL
-              -- copy rule (down)
-              _justOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _justOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _justOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _justOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _justOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _justOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _justOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _justOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _justOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _justOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _justOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _justIconNm,_justIeh,_justIerrSq,_justIgUniq,_justIidUseOccGam,_justIopChain,_justIoperatorName,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
-                  just_ _justOcaseId _justOfixityGam _justOgUniq _justOgenerDerivMp _justOidGam _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOpragmas _justOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_MaybeExpression_Nothing :: T_MaybeExpression
-sem_MaybeExpression_Nothing =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppMb :: (Maybe PP_Doc)
-              _lhsOeh :: (Maybe EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 402, column 9)
-              _lhsOppMb =
-                  Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 456, column 31)
-              _lhsOeh =
-                  Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- MaybeImportSpecification ------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Just:
-         child just           : ImportSpecification 
-      alternative Nothing:
--}
--- cata
-sem_MaybeImportSpecification :: MaybeImportSpecification ->
-                                T_MaybeImportSpecification
-sem_MaybeImportSpecification (Prelude.Just x) =
-    (sem_MaybeImportSpecification_Just (sem_ImportSpecification x))
-sem_MaybeImportSpecification Prelude.Nothing =
-    sem_MaybeImportSpecification_Nothing
--- semantic domain
-type T_MaybeImportSpecification = FixityGam ->
-                                  UID ->
-                                  IdDefOccGam ->
-                                  Bool ->
-                                  Bool ->
-                                  HsName ->
-                                  NmLev ->
-                                  EHCOpts ->
-                                  PatchEhNmInInstance ->
-                                  ([HsName]) ->
-                                  ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_MaybeImportSpecification_Just :: T_ImportSpecification ->
-                                     T_MaybeImportSpecification
-sem_MaybeImportSpecification_Just just_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _justOfixityGam :: FixityGam
-              _justOgUniq :: UID
-              _justOidGam :: IdDefOccGam
-              _justOisMainMod :: Bool
-              _justOisTopMod :: Bool
-              _justOmoduleNm :: HsName
-              _justOnmLev :: NmLev
-              _justOopts :: EHCOpts
-              _justOpatchEhNmInInstance :: PatchEhNmInInstance
-              _justOtopInstanceNmL :: ([HsName])
-              _justIerrSq :: ErrSq
-              _justIgUniq :: UID
-              _justIgathFixityGam :: FixityGam
-              _justIidUseOccGam :: IdUseOccGam
-              _justIpp :: PP_Doc
-              _justIppWrap :: (PP_Doc -> PP_Doc)
-              _justItopInstanceNmL :: ([HsName])
-              _justIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _justIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _justIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _justIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _justIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _justIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _justIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _justIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _justItopInstanceNmL
-              -- copy rule (down)
-              _justOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _justOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _justOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _justOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _justOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _justOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _justOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _justOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _justOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _justOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _justIerrSq,_justIgUniq,_justIgathFixityGam,_justIidUseOccGam,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
-                  just_ _justOfixityGam _justOgUniq _justOidGam _justOisMainMod _justOisTopMod _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_MaybeImportSpecification_Nothing :: T_MaybeImportSpecification
-sem_MaybeImportSpecification_Nothing =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- MaybeType ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         doGenVarWild         : Bool
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : Maybe EH.TyExpr
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppMb                 : Maybe PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Just:
-         child just           : Type 
-         visit 0:
-            local isAsPred    : _
-      alternative Nothing:
-         visit 0:
-            local isAsPred    : _
--}
--- cata
-sem_MaybeType :: MaybeType ->
-                 T_MaybeType
-sem_MaybeType (Prelude.Just x) =
-    (sem_MaybeType_Just (sem_Type x))
-sem_MaybeType Prelude.Nothing =
-    sem_MaybeType_Nothing
--- semantic domain
-type T_MaybeType = Bool ->
-                   FixityGam ->
-                   UID ->
-                   IdDefOccGam ->
-                   NmLev ->
-                   EHCOpts ->
-                   PatchEhNmInInstance ->
-                   ([HsName]) ->
-                   ( (Maybe EH.TyExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(Maybe PP_Doc),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_MaybeType_Just :: T_Type ->
-                      T_MaybeType
-sem_MaybeType_Just just_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppMb :: (Maybe PP_Doc)
-              _lhsOeh :: (Maybe EH.TyExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _justOdoGenVarWild :: Bool
-              _justOfixityGam :: FixityGam
-              _justOgUniq :: UID
-              _justOidGam :: IdDefOccGam
-              _justOisAsPred :: Bool
-              _justOnmLev :: NmLev
-              _justOopts :: EHCOpts
-              _justOpatchEhNmInInstance :: PatchEhNmInInstance
-              _justOtopInstanceNmL :: ([HsName])
-              _justIconNm :: Name
-              _justIeh :: (EH.TyExpr)
-              _justIehMbAsPr :: (Maybe EH.PrExpr)
-              _justIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _justIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _justIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _justIerrSq :: ErrSq
-              _justIfreeTvarS :: HsNameS
-              _justIgUniq :: UID
-              _justIidUseOccGam :: IdUseOccGam
-              _justImbRefConNm :: (Maybe Name)
-              _justIopChain :: (OpChain EH.TyExpr)
-              _justIoperatorName :: MaybeName
-              _justIpp :: PP_Doc
-              _justIppWrap :: (PP_Doc -> PP_Doc)
-              _justItopInstanceNmL :: ([HsName])
-              _justItyConIs :: TypeConFixedMeaning
-              _justIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 406, column 9)
-              _lhsOppMb =
-                  Just _justIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 205, column 9)
-              _lhsOeh =
-                  Just _justIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _justIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _justIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _justIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _justIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _justIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _justIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _justIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _justItopInstanceNmL
-              -- copy rule (down)
-              _justOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _justOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _justOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _justOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _justOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _justOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _justOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _justOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _justOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _justIconNm,_justIeh,_justIehMbAsPr,_justIehMbAsPrL,_justIehMbAsTyPr,_justIehMbAsTyPrL,_justIerrSq,_justIfreeTvarS,_justIgUniq,_justIidUseOccGam,_justImbRefConNm,_justIopChain,_justIoperatorName,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItyConIs,_justIundefOccGam) =
-                  just_ _justOdoGenVarWild _justOfixityGam _justOgUniq _justOidGam _justOisAsPred _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_MaybeType_Nothing :: T_MaybeType
-sem_MaybeType_Nothing =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppMb :: (Maybe PP_Doc)
-              _lhsOeh :: (Maybe EH.TyExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 408, column 9)
-              _lhsOppMb =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 201, column 25)
-              _lhsOeh =
-                  Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Module ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isMainMod            : Bool
-         isTopMod             : Bool
-         modEntToOrig         : ModEntRngMp
-         modInScope           : ModEntDomMp
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.Expr
-         errSq                : ErrSq
-         fileHeaderPragmas    : Set.Set Pragma.Pragma
-         gathFixityGam        : FixityGam
-         gathIdGam            : IdDefOccGam
-         idUseOccGam          : IdUseOccGam
-         mainValExists        : Bool
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Module:
-         child range          : {Range}
-         child name           : {MaybeName}
-         child fileheaderpragmas : Pragmas 
-         child exports        : MaybeExports 
-         child body           : Body 
-         visit 0:
-            local fileHeaderPragmas : _
-            local opts        : _
-            local errUndef    : _
-            local errModName  : _
--}
--- cata
-sem_Module :: Module ->
-              T_Module
-sem_Module (Module_Module _range _name _fileheaderpragmas _exports _body) =
-    (sem_Module_Module _range _name (sem_Pragmas _fileheaderpragmas) (sem_MaybeExports _exports) (sem_Body _body))
--- semantic domain
-type T_Module = FixityGam ->
-                UID ->
-                IdDefOccGam ->
-                Bool ->
-                Bool ->
-                ModEntRngMp ->
-                ModEntDomMp ->
-                HsName ->
-                NmLev ->
-                EHCOpts ->
-                PatchEhNmInInstance ->
-                ([HsName]) ->
-                ( (EH.Expr),ErrSq,(Set.Set Pragma.Pragma),UID,FixityGam,IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Module_Module :: Range ->
-                     MaybeName ->
-                     T_Pragmas ->
-                     T_MaybeExports ->
-                     T_Body ->
-                     T_Module
-sem_Module_Module range_ name_ fileheaderpragmas_ exports_ body_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisMainMod
-       _lhsIisTopMod
-       _lhsImodEntToOrig
-       _lhsImodInScope
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _bodyOpragmas :: (Set.Set Pragma.Pragma)
-              _lhsOfileHeaderPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr)
-              _lhsOgUniq :: UID
-              _lhsOgathIdGam :: IdDefOccGam
-              _lhsOmainValExists :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _fileheaderpragmasOgUniq :: UID
-              _fileheaderpragmasOidGam :: IdDefOccGam
-              _fileheaderpragmasOnmLev :: NmLev
-              _fileheaderpragmasOopts :: EHCOpts
-              _fileheaderpragmasOpatchEhNmInInstance :: PatchEhNmInInstance
-              _fileheaderpragmasOtopInstanceNmL :: ([HsName])
-              _exportsOfixityGam :: FixityGam
-              _exportsOgUniq :: UID
-              _exportsOidGam :: IdDefOccGam
-              _exportsOisMainMod :: Bool
-              _exportsOisTopMod :: Bool
-              _exportsOmoduleNm :: HsName
-              _exportsOnmLev :: NmLev
-              _exportsOopts :: EHCOpts
-              _exportsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _exportsOtopInstanceNmL :: ([HsName])
-              _bodyOfixityGam :: FixityGam
-              _bodyOgUniq :: UID
-              _bodyOidGam :: IdDefOccGam
-              _bodyOisMainMod :: Bool
-              _bodyOisTopMod :: Bool
-              _bodyOmodEntToOrig :: ModEntRngMp
-              _bodyOmodInScope :: ModEntDomMp
-              _bodyOmoduleNm :: HsName
-              _bodyOnmLev :: NmLev
-              _bodyOopts :: EHCOpts
-              _bodyOpatchEhNmInInstance :: PatchEhNmInInstance
-              _bodyOtopInstanceNmL :: ([HsName])
-              _fileheaderpragmasIerrSq :: ErrSq
-              _fileheaderpragmasIgUniq :: UID
-              _fileheaderpragmasIgathPragmas :: (Set.Set Pragma.Pragma)
-              _fileheaderpragmasIidUseOccGam :: IdUseOccGam
-              _fileheaderpragmasIpp :: PP_Doc
-              _fileheaderpragmasIppWrap :: (PP_Doc -> PP_Doc)
-              _fileheaderpragmasItopInstanceNmL :: ([HsName])
-              _fileheaderpragmasIundefOccGam :: IdUseOccGam
-              _exportsIerrSq :: ErrSq
-              _exportsIgUniq :: UID
-              _exportsIgathFixityGam :: FixityGam
-              _exportsIidUseOccGam :: IdUseOccGam
-              _exportsIpp :: PP_Doc
-              _exportsIppWrap :: (PP_Doc -> PP_Doc)
-              _exportsItopInstanceNmL :: ([HsName])
-              _exportsIundefOccGam :: IdUseOccGam
-              _bodyIeh :: (EH.Expr)
-              _bodyIerrSq :: ErrSq
-              _bodyIextraModImpL :: ([ModImp])
-              _bodyIgUniq :: UID
-              _bodyIgathFixityGam :: FixityGam
-              _bodyIgathIdGam :: IdDefOccGam
-              _bodyIidUseOccGam :: IdUseOccGam
-              _bodyImainValExists :: Bool
-              _bodyIpp :: PP_Doc
-              _bodyIppWrap :: (PP_Doc -> PP_Doc)
-              _bodyItopInstanceNmL :: ([HsName])
-              _bodyIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 23, column 9)
-              _fileHeaderPragmas =
-                  _fileheaderpragmasIgathPragmas
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 23, column 9)
-              _opts =
-                  fst $ ehcOptUpdateWithPragmas _fileHeaderPragmas _lhsIopts
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 3, column 9)
-              _errUndef =
-                  let ns = [ (ioccNm o >#< ppParens (ioccKind o),Just (map (\o -> (uoccRange o,Nothing)) os))
-                           | (o,os) <- gamToAssocDupL _bodyIundefOccGam, not $ hsnIsProd $ ioccNm $ o
-                           ]
-                  in  (if null ns then [] else [rngLift range_ mkErr_NamesNotIntrod' "" ns])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 16, column 9)
-              _errModName =
-                  case name_ of
-                    Just n | n /= _lhsImoduleNm && not _lhsIisTopMod
-                      -> [rngLift range_ Err_ModNameMismatch _lhsImoduleNm n]
-                    _ -> []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 5, column 9)
-              _lhsOerrSq =
-                  Seq.firstNotEmpty [Seq.fromList _errUndef,Seq.fromList _errModName,_bodyIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 305, column 9)
-              _bodyOpragmas =
-                  _fileHeaderPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
-              _lhsOfileHeaderPragmas =
-                  _fileHeaderPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _exportsIgathFixityGam `gamAddGam` _bodyIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _fileheaderpragmasIidUseOccGam `gamAddGam` _exportsIidUseOccGam `gamAddGam` _bodyIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _fileheaderpragmasIpp >-< _exportsIpp >-< _bodyIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _fileheaderpragmasIppWrap . _exportsIppWrap . _bodyIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _fileheaderpragmasIundefOccGam `gamUnion` _exportsIundefOccGam `gamUnion` _bodyIundefOccGam
-              -- copy rule (up)
-              _lhsOeh =
-                  _bodyIeh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _bodyIgUniq
-              -- copy rule (up)
-              _lhsOgathIdGam =
-                  _bodyIgathIdGam
-              -- copy rule (up)
-              _lhsOmainValExists =
-                  _bodyImainValExists
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _bodyItopInstanceNmL
-              -- copy rule (down)
-              _fileheaderpragmasOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _fileheaderpragmasOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _fileheaderpragmasOnmLev =
-                  _lhsInmLev
-              -- copy rule (from local)
-              _fileheaderpragmasOopts =
-                  _opts
-              -- copy rule (down)
-              _fileheaderpragmasOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _fileheaderpragmasOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _exportsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _exportsOgUniq =
-                  _fileheaderpragmasIgUniq
-              -- copy rule (down)
-              _exportsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _exportsOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _exportsOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _exportsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _exportsOnmLev =
-                  _lhsInmLev
-              -- copy rule (from local)
-              _exportsOopts =
-                  _opts
-              -- copy rule (down)
-              _exportsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _exportsOtopInstanceNmL =
-                  _fileheaderpragmasItopInstanceNmL
-              -- copy rule (down)
-              _bodyOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _bodyOgUniq =
-                  _exportsIgUniq
-              -- copy rule (down)
-              _bodyOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _bodyOisMainMod =
-                  _lhsIisMainMod
-              -- copy rule (down)
-              _bodyOisTopMod =
-                  _lhsIisTopMod
-              -- copy rule (down)
-              _bodyOmodEntToOrig =
-                  _lhsImodEntToOrig
-              -- copy rule (down)
-              _bodyOmodInScope =
-                  _lhsImodInScope
-              -- copy rule (down)
-              _bodyOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _bodyOnmLev =
-                  _lhsInmLev
-              -- copy rule (from local)
-              _bodyOopts =
-                  _opts
-              -- copy rule (down)
-              _bodyOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _bodyOtopInstanceNmL =
-                  _exportsItopInstanceNmL
-              ( _fileheaderpragmasIerrSq,_fileheaderpragmasIgUniq,_fileheaderpragmasIgathPragmas,_fileheaderpragmasIidUseOccGam,_fileheaderpragmasIpp,_fileheaderpragmasIppWrap,_fileheaderpragmasItopInstanceNmL,_fileheaderpragmasIundefOccGam) =
-                  fileheaderpragmas_ _fileheaderpragmasOgUniq _fileheaderpragmasOidGam _fileheaderpragmasOnmLev _fileheaderpragmasOopts _fileheaderpragmasOpatchEhNmInInstance _fileheaderpragmasOtopInstanceNmL
-              ( _exportsIerrSq,_exportsIgUniq,_exportsIgathFixityGam,_exportsIidUseOccGam,_exportsIpp,_exportsIppWrap,_exportsItopInstanceNmL,_exportsIundefOccGam) =
-                  exports_ _exportsOfixityGam _exportsOgUniq _exportsOidGam _exportsOisMainMod _exportsOisTopMod _exportsOmoduleNm _exportsOnmLev _exportsOopts _exportsOpatchEhNmInInstance _exportsOtopInstanceNmL
-              ( _bodyIeh,_bodyIerrSq,_bodyIextraModImpL,_bodyIgUniq,_bodyIgathFixityGam,_bodyIgathIdGam,_bodyIidUseOccGam,_bodyImainValExists,_bodyIpp,_bodyIppWrap,_bodyItopInstanceNmL,_bodyIundefOccGam) =
-                  body_ _bodyOfixityGam _bodyOgUniq _bodyOidGam _bodyOisMainMod _bodyOisTopMod _bodyOmodEntToOrig _bodyOmodInScope _bodyOmoduleNm _bodyOnmLev _bodyOopts _bodyOpatchEhNmInInstance _bodyOpragmas _bodyOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOidUseOccGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Pattern -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.PatExpr
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         isVar                : Bool
-         mbTopRefname         : Maybe HsName
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Literal:
-         child range          : {Range}
-         child sign           : {Int}
-         child literal        : Literal 
-         visit 0:
-            local eqrefname   : _
-            local idUseOccGamEq : _
-            local errIdUseEq  : _
-            local litnames    : _
-            local litrefname  : _
-            local litrefnames : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local eqclassrefname : _
-            local idUseOccGamCls : _
-            local errIdUseCls : _
-            local errSq       : _
-            local isAsPred    : _
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idDefOccGam : _
-            local refname     : _
-            local isWildcard  : _
-            local idOccDef    : _
-            local idOccDefsNoWildcard : _
-            local idOccDefs   : _
-            local pp          : _
-            local isAsPred    : _
-      alternative Constructor:
-         child range          : {Range}
-         child name           : {Name}
-         child patterns       : Patterns 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local conNm       : _
-            local errSq       : _
-            local pp          : _
-            local isAsPred    : _
-      alternative Parenthesized:
-         child range          : {Range}
-         child pattern        : Pattern 
-         visit 0:
-            local pp          : _
-            local isAsPred    : _
-      alternative As:
-         child range          : {Range}
-         child name           : {Name}
-         child pattern        : Pattern 
-         visit 0:
-            local idDefOccGam : _
-            local refname     : _
-            local isWildcard  : _
-            local idOccDef    : _
-            local idOccDefsNoWildcard : _
-            local idOccDefs   : _
-            local pp          : _
-            local isAsPred    : _
-      alternative Wildcard:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local isAsPred    : _
-      alternative Tuple:
-         child range          : {Range}
-         child arity          : {Int}
-         child patterns       : Patterns 
-         visit 0:
-            local errArity    : _
-            local errSq       : _
-            local pp          : _
-            local isAsPred    : _
-      alternative Annotate:
-         child range          : {Range}
-         child annotation     : PatternAnnotation 
-         child pattern        : Pattern 
-         visit 0:
-            local eh          : _
-            local isAsPred    : _
-      alternative Typed:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child type           : Type 
-         visit 0:
-            local idDefOccGamType : _
-            local pp          : _
-            local isAsPred    : _
-            local doGenVarWild : _
-      alternative InfixConstructor:
-         child range          : {Range}
-         child leftPattern    : Pattern 
-         child constructorOperator : {Name}
-         child rightPattern   : Pattern 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local conNm       : _
-            local errSq       : _
-            local pp          : _
-            local isAsPred    : _
-      alternative List:
-         child range          : {Range}
-         child patterns       : Patterns 
-         visit 0:
-            local refnames    : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local isAsPred    : _
-      alternative Record:
-         child range          : {Range}
-         child name           : {Name}
-         child recordPatternBindings : RecordPatternBindings 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local conNm       : _
-            local errSq       : _
-            local pp          : _
-            local isAsPred    : _
-      alternative RowRecordBinding:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child rowRecordPattternBindings : RowRecordPatternBindings 
-         visit 0:
-            local pp          : _
-            local isAsPred    : _
-      alternative RowRecordEmpty:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local isAsPred    : _
-      alternative Irrefutable:
-         child range          : {Range}
-         child pattern        : Pattern 
-         visit 0:
-            local pp          : _
-            local isAsPred    : _
-      alternative Bang:
-         child range          : {Range}
-         child pattern        : Pattern 
-         visit 0:
-            local pp          : _
-            local isAsPred    : _
--}
--- cata
-sem_Pattern :: Pattern ->
-               T_Pattern
-sem_Pattern (Pattern_Literal _range _sign _literal) =
-    (sem_Pattern_Literal _range _sign (sem_Literal _literal))
-sem_Pattern (Pattern_Variable _range _name) =
-    (sem_Pattern_Variable _range _name)
-sem_Pattern (Pattern_Constructor _range _name _patterns) =
-    (sem_Pattern_Constructor _range _name (sem_Patterns _patterns))
-sem_Pattern (Pattern_Parenthesized _range _pattern) =
-    (sem_Pattern_Parenthesized _range (sem_Pattern _pattern))
-sem_Pattern (Pattern_As _range _name _pattern) =
-    (sem_Pattern_As _range _name (sem_Pattern _pattern))
-sem_Pattern (Pattern_Wildcard _range) =
-    (sem_Pattern_Wildcard _range)
-sem_Pattern (Pattern_Tuple _range _arity _patterns) =
-    (sem_Pattern_Tuple _range _arity (sem_Patterns _patterns))
-sem_Pattern (Pattern_Annotate _range _annotation _pattern) =
-    (sem_Pattern_Annotate _range (sem_PatternAnnotation _annotation) (sem_Pattern _pattern))
-sem_Pattern (Pattern_Typed _range _pattern _type) =
-    (sem_Pattern_Typed _range (sem_Pattern _pattern) (sem_Type _type))
-sem_Pattern (Pattern_InfixConstructor _range _leftPattern _constructorOperator _rightPattern) =
-    (sem_Pattern_InfixConstructor _range (sem_Pattern _leftPattern) _constructorOperator (sem_Pattern _rightPattern))
-sem_Pattern (Pattern_List _range _patterns) =
-    (sem_Pattern_List _range (sem_Patterns _patterns))
-sem_Pattern (Pattern_Record _range _name _recordPatternBindings) =
-    (sem_Pattern_Record _range _name (sem_RecordPatternBindings _recordPatternBindings))
-sem_Pattern (Pattern_RowRecordBinding _range _pattern _rowRecordPattternBindings) =
-    (sem_Pattern_RowRecordBinding _range (sem_Pattern _pattern) (sem_RowRecordPatternBindings _rowRecordPattternBindings))
-sem_Pattern (Pattern_RowRecordEmpty _range) =
-    (sem_Pattern_RowRecordEmpty _range)
-sem_Pattern (Pattern_Irrefutable _range _pattern) =
-    (sem_Pattern_Irrefutable _range (sem_Pattern _pattern))
-sem_Pattern (Pattern_Bang _range _pattern) =
-    (sem_Pattern_Bang _range (sem_Pattern _pattern))
--- semantic domain
-type T_Pattern = FixityGam ->
-                 UID ->
-                 IdDefOccGam ->
-                 HsName ->
-                 NmLev ->
-                 EHCOpts ->
-                 PatchEhNmInInstance ->
-                 ([HsName]) ->
-                 ( (EH.PatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,(Maybe HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Pattern_Literal :: Range ->
-                       Int ->
-                       T_Literal ->
-                       T_Pattern
-sem_Pattern_Literal range_ sign_ literal_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _literalOgUniq :: UID
-              _literalOidGam :: IdDefOccGam
-              _literalOnmLev :: NmLev
-              _literalOopts :: EHCOpts
-              _literalOpatchEhNmInInstance :: PatchEhNmInInstance
-              _literalOtopInstanceNmL :: ([HsName])
-              _literalIeh :: Literal
-              _literalIerrSq :: ErrSq
-              _literalIgUniq :: UID
-              _literalIidUseOccGam :: IdUseOccGam
-              _literalIpp :: PP_Doc
-              _literalIppWrap :: (PP_Doc -> PP_Doc)
-              _literalItopInstanceNmL :: ([HsName])
-              _literalIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 517, column 29)
-              (_eqrefname,_,_idUseOccGamEq,_errIdUseEq) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnClassEqFldEq] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 517, column 9)
-              _litnames =
-                  litNames _lhsIopts _literalIeh True sign_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 520, column 29)
-              (_litrefname,_litrefnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam' _lhsIopts _lhsIidGam _litnames range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 522, column 29)
-              (_eqclassrefname,_,_idUseOccGamCls,_errIdUseCls) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnClassEq] IdOcc_Class IdAsp_Class_Class range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 524, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions
-                      [ _idUseOccGam, _idUseOccGamEq
-                      , _idUseOccGamCls
-                      , _literalIidUseOccGam
-                      ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 49, column 9)
-              _errSq =
-                  Seq.unions [ Seq.fromList _errIdUse, Seq.fromList _errIdUseEq
-                             , Seq.fromList _errIdUseCls
-                             , _literalIerrSq
-                             ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 801, column 9)
-              _lhsOeh =
-                  let
-                      mkc r = \c -> mke r (rngLift r EH.Expr_CConst c, Just $ SrcConst_Char c)
-                      mke r = uncurry (rngLift r EH.PatExpr_Expr)
-                  in  case _literalIeh of
-                        Literal_Char   r   s -> mkc r $ head s
-                        Literal_Int    r b s -> mke r (ehExpLitInt r b s sign_ _litrefnames)
-                        Literal_String r   s
-                          | ehcOptOverloadedStrings _lhsIopts -> mke r (ehExpLitString _lhsIopts r s _litrefnames)
-                          | otherwise                         -> foldr (\c p -> ehPatConApp r (_litrefnames !! 0) [mkc r c,p]) (ehPatConApp r (_litrefnames !! 1) []) s
-                        Literal_Float  r   s -> mke r (ehExpLitFloat r s sign_ _litrefnames)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _literalIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _literalIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _literalIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _literalIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _literalItopInstanceNmL
-              -- copy rule (down)
-              _literalOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _literalOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _literalOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _literalOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _literalOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _literalOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _literalIeh,_literalIerrSq,_literalIgUniq,_literalIidUseOccGam,_literalIpp,_literalIppWrap,_literalItopInstanceNmL,_literalIundefOccGam) =
-                  literal_ _literalOgUniq _literalOidGam _literalOnmLev _literalOopts _literalOpatchEhNmInInstance _literalOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Variable :: Range ->
-                        Name ->
-                        T_Pattern
-sem_Pattern_Variable range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 216, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var _idOccDefsNoWildcard
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 100, column 9)
-              _isWildcard =
-                  hsnIsWild name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
-              _idOccDef =
-                  IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
-              _idOccDefsNoWildcard =
-                  if _isWildcard then [] else [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 178, column 9)
-              _idOccDefs =
-                  _idOccDefsNoWildcard
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 227, column 9)
-              _lhsOmbTopRefname =
-                  if _isWildcard then Just _refname else Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 341, column 9)
-              _pp =
-                  pp name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 812, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Var
-                          (_lhsIpatchEhNmInInstance _refname)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 260, column 9)
-              _lhsOisVar =
-                  True
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Constructor :: Range ->
-                           Name ->
-                           T_Patterns ->
-                           T_Pattern
-sem_Pattern_Constructor range_ name_ patterns_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([EH.PatExpr])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 562, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_patternsIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 219, column 9)
-              _conNm =
-                  name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 45, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _patternsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 343, column 9)
-              _pp =
-                  name_ >#< ppSpaces _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 815, column 9)
-              _lhsOeh =
-                  ehPatConApp range_ _refname _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Parenthesized :: Range ->
-                             T_Pattern ->
-                             T_Pattern
-sem_Pattern_Parenthesized range_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOisVar :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 345, column 9)
-              _pp =
-                  ppParens _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 817, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Parens _patternIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOisVar =
-                  _patternIisVar
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_As :: Range ->
-                  Name ->
-                  T_Pattern ->
-                  T_Pattern
-sem_Pattern_As range_ name_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOisVar :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 216, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var _idOccDefsNoWildcard
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 218, column 9)
-              _lhsOidDefOccGam =
-                  _idDefOccGam `gamAddGam` _patternIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 100, column 9)
-              _isWildcard =
-                  hsnIsWild name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
-              _idOccDef =
-                  IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
-              _idOccDefsNoWildcard =
-                  if _isWildcard then [] else [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 180, column 9)
-              _idOccDefs =
-                  _idOccDefsNoWildcard ++ _patternIidOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 227, column 9)
-              _lhsOmbTopRefname =
-                  if _isWildcard then Just _refname else Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 349, column 9)
-              _pp =
-                  name_ >|< "@" >|< _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 823, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_VarAs
-                          (_lhsIpatchEhNmInInstance _refname)
-                          _patternIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOisVar =
-                  _patternIisVar
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Wildcard :: Range ->
-                        T_Pattern
-sem_Pattern_Wildcard range_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 351, column 9)
-              _pp =
-                  pp hsnWild
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 827, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Var hsnWild
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Tuple :: Range ->
-                     Int ->
-                     T_Patterns ->
-                     T_Pattern
-sem_Pattern_Tuple range_ arity_ patterns_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([EH.PatExpr])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 10, column 9)
-              _errArity =
-                  if arity_ == length _patternsIeh
-                  then []
-                  else [rngLift range_ Err_PatArity2 "pat " _pp arity_]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 56, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errArity, _patternsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 347, column 9)
-              _pp =
-                  ppParensCommas' $ _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 819, column 9)
-              _lhsOeh =
-                  foldl (\eh (n,p) -> ehRowRecPatExprUpd range_ (Just n) (rngLift range_ EH.RecPatExpr_Ext) p eh)
-                        (rngLift range_ EH.PatExpr_Rec $ rngLift range_ EH.RecPatExpr_Empty)
-                  $ zip positionalFldNames _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Annotate :: Range ->
-                        T_PatternAnnotation ->
-                        T_Pattern ->
-                        T_Pattern
-sem_Pattern_Annotate range_ annotation_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOgUniq :: UID
-              _lhsOisVar :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _annotationOfixityGam :: FixityGam
-              _annotationOgUniq :: UID
-              _annotationOidGam :: IdDefOccGam
-              _annotationOmoduleNm :: HsName
-              _annotationOnmLev :: NmLev
-              _annotationOopts :: EHCOpts
-              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
-              _annotationOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _annotationIeh :: (EH.PatExprAnn)
-              _annotationIerrSq :: ErrSq
-              _annotationIgUniq :: UID
-              _annotationIidDefOccGam :: IdDefOccGam
-              _annotationIidOccDefs :: ([IdOcc])
-              _annotationIidUseOccGam :: IdUseOccGam
-              _annotationIpp :: PP_Doc
-              _annotationIppWrap :: (PP_Doc -> PP_Doc)
-              _annotationItopInstanceNmL :: ([HsName])
-              _annotationIundefOccGam :: IdUseOccGam
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 829, column 17)
-              _eh =
-                  rngLift range_ EH.PatExpr_Ann _annotationIeh _patternIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _annotationIerrSq `Seq.union` _patternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _annotationIidDefOccGam `gamAddGam` _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _annotationIidOccDefs ++ _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _annotationIidUseOccGam `gamAddGam` _patternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _annotationIpp >-< _patternIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _annotationIppWrap . _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _annotationIundefOccGam `gamUnion` _patternIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOisVar =
-                  _patternIisVar
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _annotationOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _annotationOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _annotationOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _annotationOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _annotationOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _annotationOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _annotationOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _annotationOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _patternOgUniq =
-                  _annotationIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _patternOtopInstanceNmL =
-                  _annotationItopInstanceNmL
-              ( _annotationIeh,_annotationIerrSq,_annotationIgUniq,_annotationIidDefOccGam,_annotationIidOccDefs,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
-                  annotation_ _annotationOfixityGam _annotationOgUniq _annotationOidGam _annotationOmoduleNm _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Typed :: Range ->
-                     T_Pattern ->
-                     T_Type ->
-                     T_Pattern
-sem_Pattern_Typed range_ pattern_ type_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _typeOidGam :: IdDefOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _typeOnmLev :: NmLev
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOisVar :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOisAsPred :: Bool
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 220, column 9)
-              _idDefOccGamType =
-                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 356, column 9)
-              _typeOidGam =
-                  gamUnion _idDefOccGamType _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 56, column 9)
-              _typeOnmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 354, column 9)
-              _pp =
-                  _patternIpp >#< "::" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 831, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_TypeAs _typeIeh _patternIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 214, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq `Seq.union` _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam `gamAddGam` _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam `gamUnion` _typeIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOisVar =
-                  _patternIisVar
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _typeOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _patternIgUniq
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_InfixConstructor :: Range ->
-                                T_Pattern ->
-                                Name ->
-                                T_Pattern ->
-                                T_Pattern
-sem_Pattern_InfixConstructor range_ leftPattern_ constructorOperator_ rightPattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftPatternOfixityGam :: FixityGam
-              _leftPatternOgUniq :: UID
-              _leftPatternOidGam :: IdDefOccGam
-              _leftPatternOmoduleNm :: HsName
-              _leftPatternOnmLev :: NmLev
-              _leftPatternOopts :: EHCOpts
-              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftPatternOtopInstanceNmL :: ([HsName])
-              _rightPatternOfixityGam :: FixityGam
-              _rightPatternOgUniq :: UID
-              _rightPatternOidGam :: IdDefOccGam
-              _rightPatternOmoduleNm :: HsName
-              _rightPatternOnmLev :: NmLev
-              _rightPatternOopts :: EHCOpts
-              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightPatternOtopInstanceNmL :: ([HsName])
-              _leftPatternIeh :: (EH.PatExpr)
-              _leftPatternIerrSq :: ErrSq
-              _leftPatternIgUniq :: UID
-              _leftPatternIidDefOccGam :: IdDefOccGam
-              _leftPatternIidOccDefs :: ([IdOcc])
-              _leftPatternIidUseOccGam :: IdUseOccGam
-              _leftPatternIisVar :: Bool
-              _leftPatternImbTopRefname :: (Maybe HsName)
-              _leftPatternIpp :: PP_Doc
-              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
-              _leftPatternItopInstanceNmL :: ([HsName])
-              _leftPatternIundefOccGam :: IdUseOccGam
-              _rightPatternIeh :: (EH.PatExpr)
-              _rightPatternIerrSq :: ErrSq
-              _rightPatternIgUniq :: UID
-              _rightPatternIidDefOccGam :: IdDefOccGam
-              _rightPatternIidOccDefs :: ([IdOcc])
-              _rightPatternIidUseOccGam :: IdUseOccGam
-              _rightPatternIisVar :: Bool
-              _rightPatternImbTopRefname :: (Maybe HsName)
-              _rightPatternIpp :: PP_Doc
-              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
-              _rightPatternItopInstanceNmL :: ([HsName])
-              _rightPatternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 564, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_leftPatternIidUseOccGam,_rightPatternIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 221, column 9)
-              _conNm =
-                  constructorOperator_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 47, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _leftPatternIerrSq, _rightPatternIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 356, column 9)
-              _pp =
-                  _leftPatternIpp >#< constructorOperator_ >#< _rightPatternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 833, column 9)
-              _lhsOeh =
-                  ehPatConApp range_ _refname [_leftPatternIeh,_rightPatternIeh]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _leftPatternIidDefOccGam `gamAddGam` _rightPatternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftPatternIppWrap . _rightPatternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightPatternIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightPatternItopInstanceNmL
-              -- copy rule (down)
-              _leftPatternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftPatternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftPatternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftPatternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _leftPatternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftPatternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftPatternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftPatternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rightPatternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightPatternOgUniq =
-                  _leftPatternIgUniq
-              -- copy rule (down)
-              _rightPatternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightPatternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rightPatternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightPatternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightPatternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rightPatternOtopInstanceNmL =
-                  _leftPatternItopInstanceNmL
-              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidDefOccGam,_leftPatternIidOccDefs,_leftPatternIidUseOccGam,_leftPatternIisVar,_leftPatternImbTopRefname,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternIundefOccGam) =
-                  leftPattern_ _leftPatternOfixityGam _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL
-              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidDefOccGam,_rightPatternIidOccDefs,_rightPatternIidUseOccGam,_rightPatternIisVar,_rightPatternImbTopRefname,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternIundefOccGam) =
-                  rightPattern_ _rightPatternOfixityGam _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_List :: Range ->
-                    T_Patterns ->
-                    T_Pattern
-sem_Pattern_List range_ patterns_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOfixityGam :: FixityGam
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([EH.PatExpr])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidDefOccGam :: IdDefOccGam
-              _patternsIidOccDefs :: ([IdOcc])
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 566, column 29)
-              (_,_refnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 568, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_patternsIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 45, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _patternsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 358, column 9)
-              _pp =
-                  ppBracketsCommas _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 835, column 9)
-              _lhsOeh =
-                  foldr (\l r -> ehPatConApp range_ (_refnames !! 0) [l,r]) (appCon (_refnames !! 1)) _patternsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _patternsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
-                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Record :: Range ->
-                      Name ->
-                      T_RecordPatternBindings ->
-                      T_Pattern
-sem_Pattern_Record range_ name_ recordPatternBindings_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _recordPatternBindingsOfixityGam :: FixityGam
-              _recordPatternBindingsOgUniq :: UID
-              _recordPatternBindingsOidGam :: IdDefOccGam
-              _recordPatternBindingsOmoduleNm :: HsName
-              _recordPatternBindingsOnmLev :: NmLev
-              _recordPatternBindingsOopts :: EHCOpts
-              _recordPatternBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _recordPatternBindingsOtopInstanceNmL :: ([HsName])
-              _recordPatternBindingsIeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
-              _recordPatternBindingsIerrSq :: ErrSq
-              _recordPatternBindingsIgUniq :: UID
-              _recordPatternBindingsIidDefOccGam :: IdDefOccGam
-              _recordPatternBindingsIidOccDefs :: ([IdOcc])
-              _recordPatternBindingsIidUseOccGam :: IdUseOccGam
-              _recordPatternBindingsIpp :: PP_Doc
-              _recordPatternBindingsIppL :: ([PP_Doc])
-              _recordPatternBindingsIppWrap :: (PP_Doc -> PP_Doc)
-              _recordPatternBindingsItopInstanceNmL :: ([HsName])
-              _recordPatternBindingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 570, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_recordPatternBindingsIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 219, column 9)
-              _conNm =
-                  name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 54, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _recordPatternBindingsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 360, column 9)
-              _pp =
-                  name_ >#< ppCurlysCommas' _recordPatternBindingsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 837, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldPatExpr_Con _refname) _recordPatternBindingsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _recordPatternBindingsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _recordPatternBindingsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _recordPatternBindingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _recordPatternBindingsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _recordPatternBindingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _recordPatternBindingsItopInstanceNmL
-              -- copy rule (down)
-              _recordPatternBindingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _recordPatternBindingsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _recordPatternBindingsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _recordPatternBindingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _recordPatternBindingsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _recordPatternBindingsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _recordPatternBindingsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _recordPatternBindingsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _recordPatternBindingsIeh,_recordPatternBindingsIerrSq,_recordPatternBindingsIgUniq,_recordPatternBindingsIidDefOccGam,_recordPatternBindingsIidOccDefs,_recordPatternBindingsIidUseOccGam,_recordPatternBindingsIpp,_recordPatternBindingsIppL,_recordPatternBindingsIppWrap,_recordPatternBindingsItopInstanceNmL,_recordPatternBindingsIundefOccGam) =
-                  recordPatternBindings_ _recordPatternBindingsOfixityGam _recordPatternBindingsOgUniq _recordPatternBindingsOidGam _recordPatternBindingsOmoduleNm _recordPatternBindingsOnmLev _recordPatternBindingsOopts _recordPatternBindingsOpatchEhNmInInstance _recordPatternBindingsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_RowRecordBinding :: Range ->
-                                T_Pattern ->
-                                T_RowRecordPatternBindings ->
-                                T_Pattern
-sem_Pattern_RowRecordBinding range_ pattern_ rowRecordPattternBindings_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _rowRecordPattternBindingsOfixityGam :: FixityGam
-              _rowRecordPattternBindingsOgUniq :: UID
-              _rowRecordPattternBindingsOidGam :: IdDefOccGam
-              _rowRecordPattternBindingsOmoduleNm :: HsName
-              _rowRecordPattternBindingsOnmLev :: NmLev
-              _rowRecordPattternBindingsOopts :: EHCOpts
-              _rowRecordPattternBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rowRecordPattternBindingsOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _rowRecordPattternBindingsIeh :: ([EH.PatExpr -> EH.PatExpr])
-              _rowRecordPattternBindingsIerrSq :: ErrSq
-              _rowRecordPattternBindingsIgUniq :: UID
-              _rowRecordPattternBindingsIidDefOccGam :: IdDefOccGam
-              _rowRecordPattternBindingsIidOccDefs :: ([IdOcc])
-              _rowRecordPattternBindingsIidUseOccGam :: IdUseOccGam
-              _rowRecordPattternBindingsIpp :: PP_Doc
-              _rowRecordPattternBindingsIppL :: ([PP_Doc])
-              _rowRecordPattternBindingsIppWrap :: (PP_Doc -> PP_Doc)
-              _rowRecordPattternBindingsItopInstanceNmL :: ([HsName])
-              _rowRecordPattternBindingsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 362, column 9)
-              _pp =
-                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _patternIpp)
-                            _rowRecordPattternBindingsIppL _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 839, column 9)
-              _lhsOeh =
-                  foldl (flip ($)) _patternIeh _rowRecordPattternBindingsIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq `Seq.union` _rowRecordPattternBindingsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam `gamAddGam` _rowRecordPattternBindingsIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs ++ _rowRecordPattternBindingsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam `gamAddGam` _rowRecordPattternBindingsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _rowRecordPattternBindingsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam `gamUnion` _rowRecordPattternBindingsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rowRecordPattternBindingsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rowRecordPattternBindingsItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rowRecordPattternBindingsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rowRecordPattternBindingsOgUniq =
-                  _patternIgUniq
-              -- copy rule (down)
-              _rowRecordPattternBindingsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rowRecordPattternBindingsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rowRecordPattternBindingsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rowRecordPattternBindingsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rowRecordPattternBindingsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rowRecordPattternBindingsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _rowRecordPattternBindingsIeh,_rowRecordPattternBindingsIerrSq,_rowRecordPattternBindingsIgUniq,_rowRecordPattternBindingsIidDefOccGam,_rowRecordPattternBindingsIidOccDefs,_rowRecordPattternBindingsIidUseOccGam,_rowRecordPattternBindingsIpp,_rowRecordPattternBindingsIppL,_rowRecordPattternBindingsIppWrap,_rowRecordPattternBindingsItopInstanceNmL,_rowRecordPattternBindingsIundefOccGam) =
-                  rowRecordPattternBindings_ _rowRecordPattternBindingsOfixityGam _rowRecordPattternBindingsOgUniq _rowRecordPattternBindingsOidGam _rowRecordPattternBindingsOmoduleNm _rowRecordPattternBindingsOnmLev _rowRecordPattternBindingsOopts _rowRecordPattternBindingsOpatchEhNmInInstance _rowRecordPattternBindingsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_RowRecordEmpty :: Range ->
-                              T_Pattern
-sem_Pattern_RowRecordEmpty range_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOisVar :: Bool
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 365, column 9)
-              _pp =
-                  hsnORec >|< hsnCRec
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 841, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Rec (rngLift range_ EH.RecPatExpr_Empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
-              _lhsOisVar =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Irrefutable :: Range ->
-                           T_Pattern ->
-                           T_Pattern
-sem_Pattern_Irrefutable range_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOisVar :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 367, column 9)
-              _pp =
-                  "~" >|< _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 843, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Irrefutable _patternIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOisVar =
-                  _patternIisVar
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pattern_Bang :: Range ->
-                    T_Pattern ->
-                    T_Pattern
-sem_Pattern_Bang range_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOmbTopRefname :: (Maybe HsName)
-              _lhsOeh :: (EH.PatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOisVar :: Bool
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
-              _lhsOmbTopRefname =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 369, column 9)
-              _pp =
-                  "!" >|< _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 845, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.PatExpr_Bang        _patternIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOisVar =
-                  _patternIisVar
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- PatternAnnotation -------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.PatExprAnn
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Empty:
-         visit 0:
-            local eh          : _
--}
--- cata
-sem_PatternAnnotation :: PatternAnnotation ->
-                         T_PatternAnnotation
-sem_PatternAnnotation (PatternAnnotation_Empty) =
-    (sem_PatternAnnotation_Empty)
--- semantic domain
-type T_PatternAnnotation = FixityGam ->
-                           UID ->
-                           IdDefOccGam ->
-                           HsName ->
-                           NmLev ->
-                           EHCOpts ->
-                           PatchEhNmInInstance ->
-                           ([HsName]) ->
-                           ( (EH.PatExprAnn),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_PatternAnnotation_Empty :: T_PatternAnnotation
-sem_PatternAnnotation_Empty =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.PatExprAnn)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 902, column 17)
-              _eh =
-                  EH.PatExprAnn_Empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Patterns ----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.PatExpr]
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Pattern 
-         child tl             : Patterns 
-      alternative Nil:
--}
--- cata
-sem_Patterns :: Patterns ->
-                T_Patterns
-sem_Patterns list =
-    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))
--- semantic domain
-type T_Patterns = FixityGam ->
-                  UID ->
-                  IdDefOccGam ->
-                  HsName ->
-                  NmLev ->
-                  EHCOpts ->
-                  PatchEhNmInInstance ->
-                  ([HsName]) ->
-                  ( ([EH.PatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Patterns_Cons :: T_Pattern ->
-                     T_Patterns ->
-                     T_Patterns
-sem_Patterns_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.PatExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.PatExpr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIisVar :: Bool
-              _hdImbTopRefname :: (Maybe HsName)
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.PatExpr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 426, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 795, column 24)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIisVar,_hdImbTopRefname,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Patterns_Nil :: T_Patterns
-sem_Patterns_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.PatExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 428, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 795, column 24)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Pragma ------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathPragmas          : Set.Set Pragma.Pragma
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Language:
-         child range          : {Range}
-         child pragmas        : {Names}
-         visit 0:
-            local pragmaNames : _
-            local pp          : _
-      alternative OptionsUHC:
-         child range          : {Range}
-         child options        : {String}
-         visit 0:
-            local pragmaNames : _
-      alternative Derivable:
-         child range          : {Range}
-         child className      : {Name}
-         child fieldName      : {Name}
-         child defaultName    : {Name}
-         visit 0:
-            local pp          : _
-      alternative ExcludeIfTarget:
-         child range          : {Range}
-         child targetNames    : {[String]}
-         visit 0:
-            local targets     : _
-            local pp          : _
--}
--- cata
-sem_Pragma :: Pragma ->
-              T_Pragma
-sem_Pragma (Pragma_Language _range _pragmas) =
-    (sem_Pragma_Language _range _pragmas)
-sem_Pragma (Pragma_OptionsUHC _range _options) =
-    (sem_Pragma_OptionsUHC _range _options)
-sem_Pragma (Pragma_Derivable _range _className _fieldName _defaultName) =
-    (sem_Pragma_Derivable _range _className _fieldName _defaultName)
-sem_Pragma (Pragma_ExcludeIfTarget _range _targetNames) =
-    (sem_Pragma_ExcludeIfTarget _range _targetNames)
--- semantic domain
-type T_Pragma = UID ->
-                IdDefOccGam ->
-                NmLev ->
-                EHCOpts ->
-                PatchEhNmInInstance ->
-                ([HsName]) ->
-                ( ErrSq,UID,(Set.Set Pragma.Pragma),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Pragma_Language :: Range ->
-                       Names ->
-                       T_Pragma
-sem_Pragma_Language range_ pragmas_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 6, column 9)
-              _pragmaNames =
-                  [ p |      p  <- map show pragmas_ ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 12, column 9)
-              _lhsOgathPragmas =
-                  Set.fromList $ catMaybes [ Map.lookup p Pragma.allSimplePragmaMp | p <- _pragmaNames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 91, column 17)
-              _pp =
-                  "LANGUAGE" >#< ppCommas pragmas_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pragma_OptionsUHC :: Range ->
-                         String ->
-                         T_Pragma
-sem_Pragma_OptionsUHC range_ options_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 8, column 9)
-              _pragmaNames =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 16, column 9)
-              _lhsOgathPragmas =
-                  Set.singleton (Pragma.Pragma_OptionsUHC options_)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pragma_Derivable :: Range ->
-                        Name ->
-                        Name ->
-                        Name ->
-                        T_Pragma
-sem_Pragma_Derivable range_ className_ fieldName_ defaultName_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 14, column 9)
-              _lhsOgathPragmas =
-                  Set.singleton (Pragma.Pragma_Derivable className_ fieldName_ defaultName_)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 93, column 17)
-              _pp =
-                  "DERIVABLE" >#< className_ >#< fieldName_ >#< defaultName_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pragma_ExcludeIfTarget :: Range ->
-                              ([String]) ->
-                              T_Pragma
-sem_Pragma_ExcludeIfTarget range_ targetNames_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 18, column 9)
-              _targets =
-                  catMaybes $ map (\t -> Map.lookup t supportedTargetMp) targetNames_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 19, column 9)
-              _lhsOgathPragmas =
-                  Set.singleton (Pragma.Pragma_ExcludeIfTarget _targets)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 95, column 17)
-              _pp =
-                  "EXCLUDE_IF_TARGET" >#< ppCommas targetNames_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Pragmas -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         errSq                : ErrSq
-         gathPragmas          : Set.Set Pragma.Pragma
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Pragma 
-         child tl             : Pragmas 
-      alternative Nil:
--}
--- cata
-sem_Pragmas :: Pragmas ->
-               T_Pragmas
-sem_Pragmas list =
-    (Prelude.foldr sem_Pragmas_Cons sem_Pragmas_Nil (Prelude.map sem_Pragma list))
--- semantic domain
-type T_Pragmas = UID ->
-                 IdDefOccGam ->
-                 NmLev ->
-                 EHCOpts ->
-                 PatchEhNmInInstance ->
-                 ([HsName]) ->
-                 ( ErrSq,UID,(Set.Set Pragma.Pragma),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Pragmas_Cons :: T_Pragma ->
-                    T_Pragmas ->
-                    T_Pragmas
-sem_Pragmas_Cons hd_ tl_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIerrSq,_hdIgUniq,_hdIgathPragmas,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIerrSq,_tlIgUniq,_tlIgathPragmas,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Pragmas_Nil :: T_Pragmas
-sem_Pragmas_Nil =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
-              _lhsOgathPragmas =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Qualifier ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         moduleNm             : HsName
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.Expr -> EH.Expr
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Guard:
-         child range          : {Range}
-         child guard          : Expression 
-         visit 0:
-            local valrefnames : _
-            local idUseOccGamVal : _
-            local errIdUseVal : _
-            local typerefname : _
-            local idUseOccGamType : _
-            local errIdUseType : _
-            local idUseOccGam : _
-            local errSq       : _
-      alternative Let:
-         child range          : {Range}
-         child declarations   : Declarations 
-         visit 0:
-            local idGam       : _
-            local sccOrder    : _
-            local mkSccLet    : _
-            local errReorder  : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-      alternative Generator:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child expression     : Expression 
-         visit 0:
-            local refnames    : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-      alternative Empty:
-         child range          : {Range}
-         visit 0:
-            local refnames    : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
--}
--- cata
-sem_Qualifier :: Qualifier ->
-                 T_Qualifier
-sem_Qualifier (Qualifier_Guard _range _guard) =
-    (sem_Qualifier_Guard _range (sem_Expression _guard))
-sem_Qualifier (Qualifier_Let _range _declarations) =
-    (sem_Qualifier_Let _range (sem_Declarations _declarations))
-sem_Qualifier (Qualifier_Generator _range _pattern _expression) =
-    (sem_Qualifier_Generator _range (sem_Pattern _pattern) (sem_Expression _expression))
-sem_Qualifier (Qualifier_Empty _range) =
-    (sem_Qualifier_Empty _range)
--- semantic domain
-type T_Qualifier = UID ->
-                   FixityGam ->
-                   UID ->
-                   (Map.Map HsName [(HsName,HsName)]) ->
-                   IdDefOccGam ->
-                   HsName ->
-                   NmLev ->
-                   EHCOpts ->
-                   PatchEhNmInInstance ->
-                   (Set.Set Pragma.Pragma) ->
-                   ([HsName]) ->
-                   ( (EH.Expr -> EH.Expr),ErrSq,UID,FixityGam,IdDefOccGam,IdUseOccGam,NmLev,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Qualifier_Guard :: Range ->
-                       T_Expression ->
-                       T_Qualifier
-sem_Qualifier_Guard range_ guard_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              _guardOcaseId :: UID
-              _guardOfixityGam :: FixityGam
-              _guardOgUniq :: UID
-              _guardOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _guardOidGam :: IdDefOccGam
-              _guardOmoduleNm :: HsName
-              _guardOnmLev :: NmLev
-              _guardOopts :: EHCOpts
-              _guardOpatchEhNmInInstance :: PatchEhNmInInstance
-              _guardOpragmas :: (Set.Set Pragma.Pragma)
-              _guardOtopInstanceNmL :: ([HsName])
-              _guardIconNm :: Name
-              _guardIeh :: (EH.Expr)
-              _guardIerrSq :: ErrSq
-              _guardIgUniq :: UID
-              _guardIidUseOccGam :: IdUseOccGam
-              _guardIopChain :: (OpChain EH.Expr)
-              _guardIoperatorName :: MaybeName
-              _guardIpp :: PP_Doc
-              _guardIppWrap :: (PP_Doc -> PP_Doc)
-              _guardItopInstanceNmL :: ([HsName])
-              _guardIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 532, column 29)
-              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 534, column 29)
-              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 532, column 9)
-              _idUseOccGam =
-                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 537, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_guardIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 99, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 608, column 9)
-              _lhsOeh =
-                  \e -> EH.mkIf' (_typerefname : _valrefnames) range_ _guardIeh e (appCon (_valrefnames !! 2))
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _guardIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _guardIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _guardIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _guardIgUniq
-              -- copy rule (chain)
-              _lhsOidGam =
-                  _lhsIidGam
-              -- copy rule (chain)
-              _lhsOnmLev =
-                  _lhsInmLev
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _guardItopInstanceNmL
-              -- copy rule (down)
-              _guardOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _guardOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _guardOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _guardOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _guardOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _guardOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _guardOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _guardOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _guardOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _guardOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _guardOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _guardIconNm,_guardIeh,_guardIerrSq,_guardIgUniq,_guardIidUseOccGam,_guardIopChain,_guardIoperatorName,_guardIpp,_guardIppWrap,_guardItopInstanceNmL,_guardIundefOccGam) =
-                  guard_ _guardOcaseId _guardOfixityGam _guardOgUniq _guardOgenerDerivMp _guardOidGam _guardOmoduleNm _guardOnmLev _guardOopts _guardOpatchEhNmInInstance _guardOpragmas _guardOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Qualifier_Let :: Range ->
-                     T_Declarations ->
-                     T_Qualifier
-sem_Qualifier_Let range_ declarations_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              _declarationsOcaseId :: UID
-              _declarationsOfixityGam :: FixityGam
-              _declarationsOgUniq :: UID
-              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _declarationsOidGam :: IdDefOccGam
-              _declarationsOmoduleNm :: HsName
-              _declarationsOnmLev :: NmLev
-              _declarationsOopts :: EHCOpts
-              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
-              _declarationsOtopInstanceNmL :: ([HsName])
-              _declarationsIeh :: ([EH.Decl])
-              _declarationsIerrSq :: ErrSq
-              _declarationsIgUniq :: UID
-              _declarationsIgathFixityGam :: FixityGam
-              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _declarationsIidDefOccGam :: IdDefOccGam
-              _declarationsIidDpdMp :: IdDpdMp
-              _declarationsIidOccDefs :: ([IdOcc])
-              _declarationsIidTySigDefOccGam :: IdDefOccGam
-              _declarationsIidUseOccGam :: IdUseOccGam
-              _declarationsIneedsError :: Bool
-              _declarationsIpp :: PP_Doc
-              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
-              _declarationsItopInstanceNmL :: ([HsName])
-              _declarationsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 396, column 9)
-              _idGam =
-                  gamUnion _declarationsIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 899, column 9)
-              _sccOrder =
-                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1031, column 29)
-              (_mkSccLet,_,_errReorder) =
-                  mkIdOccSccEH range_ False _declarationsIidDefOccGam (Just _sccOrder)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 77, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 127, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 97, column 9)
-              _errSq =
-                  Seq.firstNotEmpty [Seq.fromList _errDupIntro, _declarationsIerrSq, Seq.fromList _errReorder]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 269, column 9)
-              _pp =
-                  "let" >#< _declarationsIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 610, column 9)
-              _lhsOeh =
-                  _mkSccLet
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _declarationsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _declarationsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _declarationsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _declarationsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _declarationsIgUniq
-              -- copy rule (from local)
-              _lhsOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _lhsOnmLev =
-                  _nmLev
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _declarationsItopInstanceNmL
-              -- copy rule (down)
-              _declarationsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _declarationsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _declarationsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _declarationsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _declarationsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _declarationsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _declarationsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _declarationsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _declarationsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _declarationsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _declarationsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
-                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Qualifier_Generator :: Range ->
-                           T_Pattern ->
-                           T_Expression ->
-                           T_Qualifier
-sem_Qualifier_Generator range_ pattern_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 398, column 9)
-              _lhsOidGam =
-                  gamUnion _patternIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 539, column 29)
-              (_,_refnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnPrelConcatMap,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 541, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_patternIidUseOccGam,_expressionIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 77, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 125, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _patternIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 101, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errIdUse, _patternIerrSq, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 271, column 9)
-              _pp =
-                  _patternIpp >#< "<-" >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 612, column 9)
-              _lhsOeh =
-                  ehGenerator
-                     range_ _patternIeh
-                     (\e -> ehExpVarApp range_ (_refnames !! 0) [e,_expressionIeh])
-                     (appCon (_refnames !! 1))
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (from local)
-              _lhsOnmLev =
-                  _nmLev
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _patternOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _patternIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _expressionOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Qualifier_Empty :: Range ->
-                       T_Qualifier
-sem_Qualifier_Empty range_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 543, column 29)
-              (_,_refnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 103, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 617, column 9)
-              _lhsOeh =
-                  \e -> ehExpConApp range_ (_refnames !! 0) [e,appCon (_refnames !! 1)]
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOidGam =
-                  _lhsIidGam
-              -- copy rule (chain)
-              _lhsOnmLev =
-                  _lhsInmLev
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Qualifiers --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         idGam                : IdDefOccGam
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.Expr -> EH.Expr]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Qualifier 
-         child tl             : Qualifiers 
-         visit 0:
-            local fixityGam   : _
-      alternative Nil:
--}
--- cata
-sem_Qualifiers :: Qualifiers ->
-                  T_Qualifiers
-sem_Qualifiers list =
-    (Prelude.foldr sem_Qualifiers_Cons sem_Qualifiers_Nil (Prelude.map sem_Qualifier list))
--- semantic domain
-type T_Qualifiers = UID ->
-                    FixityGam ->
-                    UID ->
-                    (Map.Map HsName [(HsName,HsName)]) ->
-                    IdDefOccGam ->
-                    HsName ->
-                    NmLev ->
-                    EHCOpts ->
-                    PatchEhNmInInstance ->
-                    (Set.Set Pragma.Pragma) ->
-                    ([HsName]) ->
-                    ( ([EH.Expr -> EH.Expr]),ErrSq,UID,IdDefOccGam,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Qualifiers_Cons :: T_Qualifier ->
-                       T_Qualifiers ->
-                       T_Qualifiers
-sem_Qualifiers_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.Expr -> EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.Expr -> EH.Expr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIidGam :: IdDefOccGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdInmLev :: NmLev
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.Expr -> EH.Expr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidGam :: IdDefOccGam
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 434, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 35, column 9)
-              _fixityGam =
-                  _hdIgathFixityGam `gamUnion` _lhsIfixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 602, column 26)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOidGam =
-                  _tlIidGam
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _hdOfixityGam =
-                  _fixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _tlOfixityGam =
-                  _fixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (chain)
-              _tlOidGam =
-                  _hdIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (chain)
-              _tlOnmLev =
-                  _hdInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidGam,_hdIidUseOccGam,_hdInmLev,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidGam,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Qualifiers_Nil :: T_Qualifiers
-sem_Qualifiers_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.Expr -> EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 436, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 602, column 26)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOidGam =
-                  _lhsIidGam
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RecordExpressionBinding -------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.DataFieldExpr -> EH.DataFieldExpr
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Binding:
-         child range          : {Range}
-         child name           : {Name}
-         child expression     : Expression 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
--}
--- cata
-sem_RecordExpressionBinding :: RecordExpressionBinding ->
-                               T_RecordExpressionBinding
-sem_RecordExpressionBinding (RecordExpressionBinding_Binding _range _name _expression) =
-    (sem_RecordExpressionBinding_Binding _range _name (sem_Expression _expression))
--- semantic domain
-type T_RecordExpressionBinding = UID ->
-                                 FixityGam ->
-                                 UID ->
-                                 (Map.Map HsName [(HsName,HsName)]) ->
-                                 IdDefOccGam ->
-                                 HsName ->
-                                 NmLev ->
-                                 EHCOpts ->
-                                 PatchEhNmInInstance ->
-                                 (Set.Set Pragma.Pragma) ->
-                                 ([HsName]) ->
-                                 ( (EH.DataFieldExpr -> EH.DataFieldExpr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RecordExpressionBinding_Binding :: Range ->
-                                       Name ->
-                                       T_Expression ->
-                                       T_RecordExpressionBinding
-sem_RecordExpressionBinding_Binding range_ name_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.DataFieldExpr -> EH.DataFieldExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 604, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 606, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_expressionIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 107, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 285, column 9)
-              _pp =
-                  name_ >|< "=" >|< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 642, column 9)
-              _lhsOeh =
-                  \df -> rngLift range_ EH.DataFieldExpr_Upd df _refname _expressionIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RecordExpressionBindings ------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.DataFieldExpr -> EH.DataFieldExpr]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : RecordExpressionBinding 
-         child tl             : RecordExpressionBindings 
-      alternative Nil:
--}
--- cata
-sem_RecordExpressionBindings :: RecordExpressionBindings ->
-                                T_RecordExpressionBindings
-sem_RecordExpressionBindings list =
-    (Prelude.foldr sem_RecordExpressionBindings_Cons sem_RecordExpressionBindings_Nil (Prelude.map sem_RecordExpressionBinding list))
--- semantic domain
-type T_RecordExpressionBindings = UID ->
-                                  FixityGam ->
-                                  UID ->
-                                  (Map.Map HsName [(HsName,HsName)]) ->
-                                  IdDefOccGam ->
-                                  HsName ->
-                                  NmLev ->
-                                  EHCOpts ->
-                                  PatchEhNmInInstance ->
-                                  (Set.Set Pragma.Pragma) ->
-                                  ([HsName]) ->
-                                  ( ([EH.DataFieldExpr -> EH.DataFieldExpr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RecordExpressionBindings_Cons :: T_RecordExpressionBinding ->
-                                     T_RecordExpressionBindings ->
-                                     T_RecordExpressionBindings
-sem_RecordExpressionBindings_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.DataFieldExpr -> EH.DataFieldExpr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 466, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 636, column 40)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RecordExpressionBindings_Nil :: T_RecordExpressionBindings
-sem_RecordExpressionBindings_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 468, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 636, column 40)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RecordPatternBinding ----------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.DataFieldPatExpr -> EH.DataFieldPatExpr
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Binding:
-         child range          : {Range}
-         child name           : {Name}
-         child pattern        : Pattern 
-         visit 0:
-            local fldrefname  : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-      alternative Pun:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idDefOccGam : _
-            local fldrefname  : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local refname     : _
-            local idOccDef    : _
-            local errSq       : _
-            local pp          : _
--}
--- cata
-sem_RecordPatternBinding :: RecordPatternBinding ->
-                            T_RecordPatternBinding
-sem_RecordPatternBinding (RecordPatternBinding_Binding _range _name _pattern) =
-    (sem_RecordPatternBinding_Binding _range _name (sem_Pattern _pattern))
-sem_RecordPatternBinding (RecordPatternBinding_Pun _range _name) =
-    (sem_RecordPatternBinding_Pun _range _name)
--- semantic domain
-type T_RecordPatternBinding = FixityGam ->
-                              UID ->
-                              IdDefOccGam ->
-                              HsName ->
-                              NmLev ->
-                              EHCOpts ->
-                              PatchEhNmInInstance ->
-                              ([HsName]) ->
-                              ( (EH.DataFieldPatExpr -> EH.DataFieldPatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RecordPatternBinding_Binding :: Range ->
-                                    Name ->
-                                    T_Pattern ->
-                                    T_RecordPatternBinding
-sem_RecordPatternBinding_Binding range_ name_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 610, column 29)
-              (_fldrefname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 613, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_patternIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 111, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _patternIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 305, column 9)
-              _pp =
-                  name_ >|< "=" >|< _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 708, column 9)
-              _lhsOeh =
-                  \df -> rngLift range_ EH.DataFieldPatExpr_Ext df _fldrefname _patternIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RecordPatternBinding_Pun :: Range ->
-                                Name ->
-                                T_RecordPatternBinding
-sem_RecordPatternBinding_Pun range_ name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 230, column 9)
-              _idDefOccGam =
-                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 610, column 29)
-              (_fldrefname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 92, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 184, column 9)
-              _idOccDef =
-                  IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 113, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 307, column 9)
-              _pp =
-                  pp name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 710, column 9)
-              _lhsOeh =
-                  \df -> rngLift range_ EH.DataFieldPatExpr_Ext df _fldrefname (rngLift range_ EH.PatExpr_Var _refname)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _idDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RecordPatternBindings ---------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.DataFieldPatExpr -> EH.DataFieldPatExpr]
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : RecordPatternBinding 
-         child tl             : RecordPatternBindings 
-      alternative Nil:
--}
--- cata
-sem_RecordPatternBindings :: RecordPatternBindings ->
-                             T_RecordPatternBindings
-sem_RecordPatternBindings list =
-    (Prelude.foldr sem_RecordPatternBindings_Cons sem_RecordPatternBindings_Nil (Prelude.map sem_RecordPatternBinding list))
--- semantic domain
-type T_RecordPatternBindings = FixityGam ->
-                               UID ->
-                               IdDefOccGam ->
-                               HsName ->
-                               NmLev ->
-                               EHCOpts ->
-                               PatchEhNmInInstance ->
-                               ([HsName]) ->
-                               ( ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RecordPatternBindings_Cons :: T_RecordPatternBinding ->
-                                  T_RecordPatternBindings ->
-                                  T_RecordPatternBindings
-sem_RecordPatternBindings_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 472, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 702, column 37)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RecordPatternBindings_Nil :: T_RecordPatternBindings
-sem_RecordPatternBindings_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 474, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 702, column 37)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RightHandSide -----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         mustBeMono           : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-         sepPP                : PP_Doc
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.Expr
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Expression:
-         child range          : {Range}
-         child expression     : Expression 
-         child where          : MaybeDeclarations 
-         visit 0:
-            local idGam       : _
-            local sccOrder    : _
-            local mkSccLet    : _
-            local errReorder  : _
-            local nmLev       : _
-            local errSq       : _
-            local pp          : _
-            local fixityGam   : _
-      alternative Guarded:
-         child range          : {Range}
-         child guardedexpressions : GuardedExpressions 
-         child where          : MaybeDeclarations 
-         visit 0:
-            local idGam       : _
-            local sccOrder    : _
-            local mkSccLet    : _
-            local errReorder  : _
-            local nmLev       : _
-            local pp          : _
-            local fixityGam   : _
--}
--- cata
-sem_RightHandSide :: RightHandSide ->
-                     T_RightHandSide
-sem_RightHandSide (RightHandSide_Expression _range _expression _where) =
-    (sem_RightHandSide_Expression _range (sem_Expression _expression) (sem_MaybeDeclarations _where))
-sem_RightHandSide (RightHandSide_Guarded _range _guardedexpressions _where) =
-    (sem_RightHandSide_Guarded _range (sem_GuardedExpressions _guardedexpressions) (sem_MaybeDeclarations _where))
--- semantic domain
-type T_RightHandSide = UID ->
-                       FixityGam ->
-                       UID ->
-                       (Map.Map HsName [(HsName,HsName)]) ->
-                       IdDefOccGam ->
-                       HsName ->
-                       Bool ->
-                       NmLev ->
-                       EHCOpts ->
-                       PatchEhNmInInstance ->
-                       (Set.Set Pragma.Pragma) ->
-                       PP_Doc ->
-                       ([HsName]) ->
-                       ( (EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RightHandSide_Expression :: Range ->
-                                T_Expression ->
-                                T_MaybeDeclarations ->
-                                T_RightHandSide
-sem_RightHandSide_Expression range_ expression_ where_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsImustBeMono
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsIsepPP
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _whereOcaseId :: UID
-              _whereOfixityGam :: FixityGam
-              _whereOgUniq :: UID
-              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _whereOidGam :: IdDefOccGam
-              _whereOmoduleNm :: HsName
-              _whereOnmLev :: NmLev
-              _whereOopts :: EHCOpts
-              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
-              _whereOpragmas :: (Set.Set Pragma.Pragma)
-              _whereOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              _whereIeh :: (Maybe [EH.Decl])
-              _whereIerrSq :: ErrSq
-              _whereIgUniq :: UID
-              _whereIgathFixityGam :: FixityGam
-              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
-              _whereIidDefOccGam :: IdDefOccGam
-              _whereIidDpdMp :: IdDpdMp
-              _whereIidOccDefs :: ([IdOcc])
-              _whereIidTySigDefOccGam :: IdDefOccGam
-              _whereIidUseOccGam :: IdUseOccGam
-              _whereIneedsError :: Bool
-              _whereIpp :: PP_Doc
-              _whereIppWrap :: (PP_Doc -> PP_Doc)
-              _whereItopInstanceNmL :: ([HsName])
-              _whereIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 388, column 9)
-              _idGam =
-                  gamUnion _whereIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 895, column 9)
-              _sccOrder =
-                  idDpdMp2SccOrder _whereIidDefOccGam _whereIidDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1026, column 29)
-              (_mkSccLet,_,_errReorder) =
-                  mkIdOccSccEH range_ False _whereIidDefOccGam (Just _sccOrder)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 69, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 36, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errReorder, _expressionIerrSq, _whereIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 327, column 9)
-              _pp =
-                  _lhsIsepPP >#< _expressionIpp >-< _whereIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 31, column 9)
-              _fixityGam =
-                  _whereIgathFixityGam `gamUnion` _lhsIfixityGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 761, column 9)
-              _lhsOeh =
-                  _mkSccLet
-                  $ ehMkEnforceMono range_ _lhsImustBeMono
-                    _expressionIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam `gamAddGam` _whereIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap . _whereIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam `gamUnion` _whereIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _whereIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _whereItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _expressionOfixityGam =
-                  _fixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _expressionOidGam =
-                  _idGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _expressionOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _whereOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _whereOfixityGam =
-                  _fixityGam
-              -- copy rule (chain)
-              _whereOgUniq =
-                  _expressionIgUniq
-              -- copy rule (down)
-              _whereOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _whereOidGam =
-                  _idGam
-              -- copy rule (down)
-              _whereOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _whereOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _whereOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _whereOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _whereOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _whereOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
-                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RightHandSide_Guarded :: Range ->
-                             T_GuardedExpressions ->
-                             T_MaybeDeclarations ->
-                             T_RightHandSide
-sem_RightHandSide_Guarded range_ guardedexpressions_ where_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsImustBeMono
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsIsepPP
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _guardedexpressionsOcaseId :: UID
-              _guardedexpressionsOfixityGam :: FixityGam
-              _guardedexpressionsOgUniq :: UID
-              _guardedexpressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _guardedexpressionsOidGam :: IdDefOccGam
-              _guardedexpressionsOmoduleNm :: HsName
-              _guardedexpressionsOmustBeMono :: Bool
-              _guardedexpressionsOnmLev :: NmLev
-              _guardedexpressionsOopts :: EHCOpts
-              _guardedexpressionsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _guardedexpressionsOpragmas :: (Set.Set Pragma.Pragma)
-              _guardedexpressionsOsepPP :: PP_Doc
-              _guardedexpressionsOtopInstanceNmL :: ([HsName])
-              _whereOcaseId :: UID
-              _whereOfixityGam :: FixityGam
-              _whereOgUniq :: UID
-              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _whereOidGam :: IdDefOccGam
-              _whereOmoduleNm :: HsName
-              _whereOnmLev :: NmLev
-              _whereOopts :: EHCOpts
-              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
-              _whereOpragmas :: (Set.Set Pragma.Pragma)
-              _whereOtopInstanceNmL :: ([HsName])
-              _guardedexpressionsIeh :: ([UIDS -> EH.Expr -> EH.Expr])
-              _guardedexpressionsIerrSq :: ErrSq
-              _guardedexpressionsIgUniq :: UID
-              _guardedexpressionsIidUseOccGam :: IdUseOccGam
-              _guardedexpressionsIpp :: PP_Doc
-              _guardedexpressionsIppWrap :: (PP_Doc -> PP_Doc)
-              _guardedexpressionsItopInstanceNmL :: ([HsName])
-              _guardedexpressionsIundefOccGam :: IdUseOccGam
-              _whereIeh :: (Maybe [EH.Decl])
-              _whereIerrSq :: ErrSq
-              _whereIgUniq :: UID
-              _whereIgathFixityGam :: FixityGam
-              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
-              _whereIidDefOccGam :: IdDefOccGam
-              _whereIidDpdMp :: IdDpdMp
-              _whereIidOccDefs :: ([IdOcc])
-              _whereIidTySigDefOccGam :: IdDefOccGam
-              _whereIidUseOccGam :: IdUseOccGam
-              _whereIneedsError :: Bool
-              _whereIpp :: PP_Doc
-              _whereIppWrap :: (PP_Doc -> PP_Doc)
-              _whereItopInstanceNmL :: ([HsName])
-              _whereIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 388, column 9)
-              _idGam =
-                  gamUnion _whereIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 895, column 9)
-              _sccOrder =
-                  idDpdMp2SccOrder _whereIidDefOccGam _whereIidDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1026, column 29)
-              (_mkSccLet,_,_errReorder) =
-                  mkIdOccSccEH range_ False _whereIidDefOccGam (Just _sccOrder)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 69, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 329, column 9)
-              _pp =
-                  _guardedexpressionsIpp >-< _whereIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 31, column 9)
-              _fixityGam =
-                  _whereIgathFixityGam `gamUnion` _lhsIfixityGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 765, column 9)
-              _lhsOeh =
-                  _mkSccLet (foldr (\(mk,failS) e -> mk failS e)
-                                   (rngLift range_ EH.Expr_CaseAltFail _lhsIcaseId)
-                                   (zip _guardedexpressionsIeh (Set.singleton _lhsIcaseId : repeat Set.empty)))
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _guardedexpressionsIerrSq `Seq.union` _whereIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _guardedexpressionsIidUseOccGam `gamAddGam` _whereIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _guardedexpressionsIppWrap . _whereIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _guardedexpressionsIundefOccGam `gamUnion` _whereIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _whereIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _whereItopInstanceNmL
-              -- copy rule (down)
-              _guardedexpressionsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _guardedexpressionsOfixityGam =
-                  _fixityGam
-              -- copy rule (down)
-              _guardedexpressionsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _guardedexpressionsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _guardedexpressionsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _guardedexpressionsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _guardedexpressionsOmustBeMono =
-                  _lhsImustBeMono
-              -- copy rule (from local)
-              _guardedexpressionsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _guardedexpressionsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _guardedexpressionsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _guardedexpressionsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _guardedexpressionsOsepPP =
-                  _lhsIsepPP
-              -- copy rule (down)
-              _guardedexpressionsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _whereOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _whereOfixityGam =
-                  _fixityGam
-              -- copy rule (chain)
-              _whereOgUniq =
-                  _guardedexpressionsIgUniq
-              -- copy rule (down)
-              _whereOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _whereOidGam =
-                  _idGam
-              -- copy rule (down)
-              _whereOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _whereOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _whereOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _whereOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _whereOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _whereOtopInstanceNmL =
-                  _guardedexpressionsItopInstanceNmL
-              ( _guardedexpressionsIeh,_guardedexpressionsIerrSq,_guardedexpressionsIgUniq,_guardedexpressionsIidUseOccGam,_guardedexpressionsIpp,_guardedexpressionsIppWrap,_guardedexpressionsItopInstanceNmL,_guardedexpressionsIundefOccGam) =
-                  guardedexpressions_ _guardedexpressionsOcaseId _guardedexpressionsOfixityGam _guardedexpressionsOgUniq _guardedexpressionsOgenerDerivMp _guardedexpressionsOidGam _guardedexpressionsOmoduleNm _guardedexpressionsOmustBeMono _guardedexpressionsOnmLev _guardedexpressionsOopts _guardedexpressionsOpatchEhNmInInstance _guardedexpressionsOpragmas _guardedexpressionsOsepPP _guardedexpressionsOtopInstanceNmL
-              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
-                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RowRecordExpressionUpdate -----------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.Expr -> EH.Expr
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Update:
-         child range          : {Range}
-         child name           : {Name}
-         child expression     : Expression 
-         visit 0:
-            local pp          : _
-      alternative Extends:
-         child range          : {Range}
-         child name           : {MaybeName}
-         child expression     : Expression 
-         visit 0:
-            local pp          : _
--}
--- cata
-sem_RowRecordExpressionUpdate :: RowRecordExpressionUpdate ->
-                                 T_RowRecordExpressionUpdate
-sem_RowRecordExpressionUpdate (RowRecordExpressionUpdate_Update _range _name _expression) =
-    (sem_RowRecordExpressionUpdate_Update _range _name (sem_Expression _expression))
-sem_RowRecordExpressionUpdate (RowRecordExpressionUpdate_Extends _range _name _expression) =
-    (sem_RowRecordExpressionUpdate_Extends _range _name (sem_Expression _expression))
--- semantic domain
-type T_RowRecordExpressionUpdate = UID ->
-                                   FixityGam ->
-                                   UID ->
-                                   (Map.Map HsName [(HsName,HsName)]) ->
-                                   IdDefOccGam ->
-                                   HsName ->
-                                   NmLev ->
-                                   EHCOpts ->
-                                   PatchEhNmInInstance ->
-                                   (Set.Set Pragma.Pragma) ->
-                                   ([HsName]) ->
-                                   ( (EH.Expr -> EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RowRecordExpressionUpdate_Update :: Range ->
-                                        Name ->
-                                        T_Expression ->
-                                        T_RowRecordExpressionUpdate
-sem_RowRecordExpressionUpdate_Update range_ name_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 291, column 9)
-              _pp =
-                  name_ >|< ":=" >|< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 684, column 9)
-              _lhsOeh =
-                  ehRowRecExprUpd range_ name_ (rngLift range_ EH.RecExpr_Upd) _expressionIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RowRecordExpressionUpdate_Extends :: Range ->
-                                         MaybeName ->
-                                         T_Expression ->
-                                         T_RowRecordExpressionUpdate
-sem_RowRecordExpressionUpdate_Extends range_ name_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.Expr -> EH.Expr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 289, column 9)
-              _pp =
-                  name_ >|< "=" >|< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 682, column 9)
-              _lhsOeh =
-                  ehRowRecExprUpd range_ name_ (rngLift range_ EH.RecExpr_Ext) _expressionIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _expressionIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _expressionIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RowRecordExpressionUpdates ----------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.Expr -> EH.Expr]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : RowRecordExpressionUpdate 
-         child tl             : RowRecordExpressionUpdates 
-      alternative Nil:
--}
--- cata
-sem_RowRecordExpressionUpdates :: RowRecordExpressionUpdates ->
-                                  T_RowRecordExpressionUpdates
-sem_RowRecordExpressionUpdates list =
-    (Prelude.foldr sem_RowRecordExpressionUpdates_Cons sem_RowRecordExpressionUpdates_Nil (Prelude.map sem_RowRecordExpressionUpdate list))
--- semantic domain
-type T_RowRecordExpressionUpdates = UID ->
-                                    FixityGam ->
-                                    UID ->
-                                    (Map.Map HsName [(HsName,HsName)]) ->
-                                    IdDefOccGam ->
-                                    HsName ->
-                                    NmLev ->
-                                    EHCOpts ->
-                                    PatchEhNmInInstance ->
-                                    (Set.Set Pragma.Pragma) ->
-                                    ([HsName]) ->
-                                    ( ([EH.Expr -> EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RowRecordExpressionUpdates_Cons :: T_RowRecordExpressionUpdate ->
-                                       T_RowRecordExpressionUpdates ->
-                                       T_RowRecordExpressionUpdates
-sem_RowRecordExpressionUpdates_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.Expr -> EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.Expr -> EH.Expr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.Expr -> EH.Expr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 484, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 676, column 42)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RowRecordExpressionUpdates_Nil :: T_RowRecordExpressionUpdates
-sem_RowRecordExpressionUpdates_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.Expr -> EH.Expr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 486, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 676, column 42)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RowRecordPatternBinding -------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.PatExpr -> EH.PatExpr
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Binding:
-         child range          : {Range}
-         child name           : {MaybeName}
-         child pattern        : Pattern 
-         visit 0:
-            local pp          : _
--}
--- cata
-sem_RowRecordPatternBinding :: RowRecordPatternBinding ->
-                               T_RowRecordPatternBinding
-sem_RowRecordPatternBinding (RowRecordPatternBinding_Binding _range _name _pattern) =
-    (sem_RowRecordPatternBinding_Binding _range _name (sem_Pattern _pattern))
--- semantic domain
-type T_RowRecordPatternBinding = FixityGam ->
-                                 UID ->
-                                 IdDefOccGam ->
-                                 HsName ->
-                                 NmLev ->
-                                 EHCOpts ->
-                                 PatchEhNmInInstance ->
-                                 ([HsName]) ->
-                                 ( (EH.PatExpr -> EH.PatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RowRecordPatternBinding_Binding :: Range ->
-                                       MaybeName ->
-                                       T_Pattern ->
-                                       T_RowRecordPatternBinding
-sem_RowRecordPatternBinding_Binding range_ name_ pattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.PatExpr -> EH.PatExpr)
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 295, column 9)
-              _pp =
-                  case name_ of
-                    Just n  -> n >|< "=" >|< _patternIpp
-                    Nothing -> _patternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 692, column 9)
-              _lhsOeh =
-                  ehRowRecPatExprUpd range_ name_ (rngLift range_ EH.RecPatExpr_Ext) _patternIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _patternIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RowRecordPatternBindings ------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.PatExpr -> EH.PatExpr]
-         errSq                : ErrSq
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : RowRecordPatternBinding 
-         child tl             : RowRecordPatternBindings 
-      alternative Nil:
--}
--- cata
-sem_RowRecordPatternBindings :: RowRecordPatternBindings ->
-                                T_RowRecordPatternBindings
-sem_RowRecordPatternBindings list =
-    (Prelude.foldr sem_RowRecordPatternBindings_Cons sem_RowRecordPatternBindings_Nil (Prelude.map sem_RowRecordPatternBinding list))
--- semantic domain
-type T_RowRecordPatternBindings = FixityGam ->
-                                  UID ->
-                                  IdDefOccGam ->
-                                  HsName ->
-                                  NmLev ->
-                                  EHCOpts ->
-                                  PatchEhNmInInstance ->
-                                  ([HsName]) ->
-                                  ( ([EH.PatExpr -> EH.PatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RowRecordPatternBindings_Cons :: T_RowRecordPatternBinding ->
-                                     T_RowRecordPatternBindings ->
-                                     T_RowRecordPatternBindings
-sem_RowRecordPatternBindings_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.PatExpr -> EH.PatExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.PatExpr -> EH.PatExpr)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidDefOccGam :: IdDefOccGam
-              _hdIidOccDefs :: ([IdOcc])
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.PatExpr -> EH.PatExpr])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidDefOccGam :: IdDefOccGam
-              _tlIidOccDefs :: ([IdOcc])
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 490, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 686, column 40)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RowRecordPatternBindings_Nil :: T_RowRecordPatternBindings
-sem_RowRecordPatternBindings_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.PatExpr -> EH.PatExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 492, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 686, column 40)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RowTypeUpdate -----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         doGenVarWild         : Bool
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isAsPred             : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.TyExpr -> EH.TyExpr
-         ehMbAsPrL            : [Maybe EH.PrExpr]
-         ehMbAsTyPrL          : [Maybe EH.TyExpr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Extends:
-         child range          : {Range}
-         child name           : {MaybeName}
-         child type           : Type 
-         visit 0:
-            local pp          : _
-            local ehMbAsPrL   : _
--}
--- cata
-sem_RowTypeUpdate :: RowTypeUpdate ->
-                     T_RowTypeUpdate
-sem_RowTypeUpdate (RowTypeUpdate_Extends _range _name _type) =
-    (sem_RowTypeUpdate_Extends _range _name (sem_Type _type))
--- semantic domain
-type T_RowTypeUpdate = Bool ->
-                       FixityGam ->
-                       UID ->
-                       IdDefOccGam ->
-                       Bool ->
-                       NmLev ->
-                       EHCOpts ->
-                       PatchEhNmInInstance ->
-                       ([HsName]) ->
-                       ( (EH.TyExpr -> EH.TyExpr),([Maybe EH.PrExpr]),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RowTypeUpdate_Extends :: Range ->
-                             MaybeName ->
-                             T_Type ->
-                             T_RowTypeUpdate
-sem_RowTypeUpdate_Extends range_ name_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: (EH.TyExpr -> EH.TyExpr)
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 301, column 9)
-              _pp =
-                  name_ >|< "::" >|< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 379, column 9)
-              _ehMbAsPrL =
-                  [_typeIehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 700, column 9)
-              _lhsOeh =
-                  ehRowRowTyExprUpd range_ name_ (rngLift range_ EH.RowTyExpr_Ext) _typeIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _typeIehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _typeOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- RowTypeUpdates ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         doGenVarWild         : Bool
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isAsPred             : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.TyExpr -> EH.TyExpr]
-         ehMbAsPrL            : [Maybe EH.PrExpr]
-         ehMbAsTyPrL          : [Maybe EH.TyExpr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : RowTypeUpdate 
-         child tl             : RowTypeUpdates 
-      alternative Nil:
--}
--- cata
-sem_RowTypeUpdates :: RowTypeUpdates ->
-                      T_RowTypeUpdates
-sem_RowTypeUpdates list =
-    (Prelude.foldr sem_RowTypeUpdates_Cons sem_RowTypeUpdates_Nil (Prelude.map sem_RowTypeUpdate list))
--- semantic domain
-type T_RowTypeUpdates = Bool ->
-                        FixityGam ->
-                        UID ->
-                        IdDefOccGam ->
-                        Bool ->
-                        NmLev ->
-                        EHCOpts ->
-                        PatchEhNmInInstance ->
-                        ([HsName]) ->
-                        ( ([EH.TyExpr -> EH.TyExpr]),([Maybe EH.PrExpr]),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_RowTypeUpdates_Cons :: T_RowTypeUpdate ->
-                           T_RowTypeUpdates ->
-                           T_RowTypeUpdates
-sem_RowTypeUpdates_Cons hd_ tl_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.TyExpr -> EH.TyExpr])
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOdoGenVarWild :: Bool
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOisAsPred :: Bool
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOdoGenVarWild :: Bool
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOisAsPred :: Bool
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.TyExpr -> EH.TyExpr)
-              _hdIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _hdIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _hdIerrSq :: ErrSq
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.TyExpr -> EH.TyExpr])
-              _tlIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _tlIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _tlIerrSq :: ErrSq
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 460, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 694, column 30)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _hdIehMbAsPrL ++ _tlIehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _hdIehMbAsTyPrL ++ _tlIehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIehMbAsPrL,_hdIehMbAsTyPrL,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOdoGenVarWild _hdOfixityGam _hdOgUniq _hdOidGam _hdOisAsPred _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIehMbAsPrL,_tlIehMbAsTyPrL,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOdoGenVarWild _tlOfixityGam _tlOgUniq _tlOidGam _tlOisAsPred _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_RowTypeUpdates_Nil :: T_RowTypeUpdates
-sem_RowTypeUpdates_Nil =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.TyExpr -> EH.TyExpr])
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 462, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 694, column 30)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Statement ---------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         moduleNm             : HsName
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : (EH.Expr,EH.Expr -> EH.Expr)
-         errSq                : ErrSq
-         gathFixityGam        : FixityGam
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Expression:
-         child range          : {Range}
-         child expression     : Expression 
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-      alternative Let:
-         child range          : {Range}
-         child declarations   : Declarations 
-         visit 0:
-            local idGam       : _
-            local sccOrder    : _
-            local mkSccLet    : _
-            local errReorder  : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-      alternative Generator:
-         child range          : {Range}
-         child pattern        : Pattern 
-         child expression     : Expression 
-         visit 0:
-            local refnames    : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-      alternative Empty:
-         child range          : {Range}
--}
--- cata
-sem_Statement :: Statement ->
-                 T_Statement
-sem_Statement (Statement_Expression _range _expression) =
-    (sem_Statement_Expression _range (sem_Expression _expression))
-sem_Statement (Statement_Let _range _declarations) =
-    (sem_Statement_Let _range (sem_Declarations _declarations))
-sem_Statement (Statement_Generator _range _pattern _expression) =
-    (sem_Statement_Generator _range (sem_Pattern _pattern) (sem_Expression _expression))
-sem_Statement (Statement_Empty _range) =
-    (sem_Statement_Empty _range)
--- semantic domain
-type T_Statement = UID ->
-                   FixityGam ->
-                   UID ->
-                   (Map.Map HsName [(HsName,HsName)]) ->
-                   IdDefOccGam ->
-                   HsName ->
-                   NmLev ->
-                   EHCOpts ->
-                   PatchEhNmInInstance ->
-                   (Set.Set Pragma.Pragma) ->
-                   ([HsName]) ->
-                   ( ((EH.Expr,EH.Expr -> EH.Expr)),ErrSq,UID,FixityGam,IdDefOccGam,IdUseOccGam,NmLev,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Statement_Expression :: Range ->
-                            T_Expression ->
-                            T_Statement
-sem_Statement_Expression range_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 640, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnMonadSeq] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 642, column 9)
-              _lhsOidUseOccGam =
-                  _idUseOccGam `gamUnion` _expressionIidUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 119, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 589, column 9)
-              _lhsOeh =
-                  (_expressionIeh,\e -> ehExpVarApp range_ _refname [_expressionIeh,e])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _expressionIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (chain)
-              _lhsOidGam =
-                  _lhsIidGam
-              -- copy rule (chain)
-              _lhsOnmLev =
-                  _lhsInmLev
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _expressionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _expressionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _expressionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Statement_Let :: Range ->
-                     T_Declarations ->
-                     T_Statement
-sem_Statement_Let range_ declarations_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              _declarationsOcaseId :: UID
-              _declarationsOfixityGam :: FixityGam
-              _declarationsOgUniq :: UID
-              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _declarationsOidGam :: IdDefOccGam
-              _declarationsOmoduleNm :: HsName
-              _declarationsOnmLev :: NmLev
-              _declarationsOopts :: EHCOpts
-              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
-              _declarationsOtopInstanceNmL :: ([HsName])
-              _declarationsIeh :: ([EH.Decl])
-              _declarationsIerrSq :: ErrSq
-              _declarationsIgUniq :: UID
-              _declarationsIgathFixityGam :: FixityGam
-              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
-              _declarationsIidDefOccGam :: IdDefOccGam
-              _declarationsIidDpdMp :: IdDpdMp
-              _declarationsIidOccDefs :: ([IdOcc])
-              _declarationsIidTySigDefOccGam :: IdDefOccGam
-              _declarationsIidUseOccGam :: IdUseOccGam
-              _declarationsIneedsError :: Bool
-              _declarationsIpp :: PP_Doc
-              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
-              _declarationsItopInstanceNmL :: ([HsName])
-              _declarationsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 402, column 9)
-              _idGam =
-                  gamUnion _declarationsIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 903, column 9)
-              _sccOrder =
-                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1041, column 29)
-              (_mkSccLet,_,_errReorder) =
-                  mkIdOccSccEH range_ False _declarationsIidDefOccGam (Just _sccOrder)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 81, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 137, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 117, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errReorder, _declarationsIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 263, column 9)
-              _pp =
-                  "let" >#< _declarationsIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 591, column 9)
-              _lhsOeh =
-                  (EH.mkUnit range_,_mkSccLet)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  _declarationsIgathFixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _declarationsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _declarationsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _declarationsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _declarationsIgUniq
-              -- copy rule (from local)
-              _lhsOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _lhsOnmLev =
-                  _nmLev
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _declarationsItopInstanceNmL
-              -- copy rule (down)
-              _declarationsOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _declarationsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _declarationsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _declarationsOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (from local)
-              _declarationsOidGam =
-                  _idGam
-              -- copy rule (down)
-              _declarationsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _declarationsOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _declarationsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _declarationsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _declarationsOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _declarationsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
-                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Statement_Generator :: Range ->
-                           T_Pattern ->
-                           T_Expression ->
-                           T_Statement
-sem_Statement_Generator range_ pattern_ expression_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOidGam :: IdDefOccGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternOfixityGam :: FixityGam
-              _patternOgUniq :: UID
-              _patternOidGam :: IdDefOccGam
-              _patternOmoduleNm :: HsName
-              _patternOnmLev :: NmLev
-              _patternOopts :: EHCOpts
-              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternOtopInstanceNmL :: ([HsName])
-              _expressionOcaseId :: UID
-              _expressionOfixityGam :: FixityGam
-              _expressionOgUniq :: UID
-              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _expressionOidGam :: IdDefOccGam
-              _expressionOmoduleNm :: HsName
-              _expressionOnmLev :: NmLev
-              _expressionOopts :: EHCOpts
-              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _expressionOpragmas :: (Set.Set Pragma.Pragma)
-              _expressionOtopInstanceNmL :: ([HsName])
-              _patternIeh :: (EH.PatExpr)
-              _patternIerrSq :: ErrSq
-              _patternIgUniq :: UID
-              _patternIidDefOccGam :: IdDefOccGam
-              _patternIidOccDefs :: ([IdOcc])
-              _patternIidUseOccGam :: IdUseOccGam
-              _patternIisVar :: Bool
-              _patternImbTopRefname :: (Maybe HsName)
-              _patternIpp :: PP_Doc
-              _patternIppWrap :: (PP_Doc -> PP_Doc)
-              _patternItopInstanceNmL :: ([HsName])
-              _patternIundefOccGam :: IdUseOccGam
-              _expressionIconNm :: Name
-              _expressionIeh :: (EH.Expr)
-              _expressionIerrSq :: ErrSq
-              _expressionIgUniq :: UID
-              _expressionIidUseOccGam :: IdUseOccGam
-              _expressionIopChain :: (OpChain EH.Expr)
-              _expressionIoperatorName :: MaybeName
-              _expressionIpp :: PP_Doc
-              _expressionIppWrap :: (PP_Doc -> PP_Doc)
-              _expressionItopInstanceNmL :: ([HsName])
-              _expressionIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 404, column 9)
-              _lhsOidGam =
-                  gamUnion _patternIidDefOccGam _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 644, column 29)
-              (_,_refnames,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [hsnMonadBind,hsnMonadFail] IdOcc_Val IdAsp_Val_Var range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 646, column 9)
-              _lhsOidUseOccGam =
-                  gamUnions [_idUseOccGam,_patternIidUseOccGam,_expressionIidUseOccGam]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 81, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 135, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _patternIidDefOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 121, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errIdUse, _patternIerrSq, _expressionIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 265, column 9)
-              _pp =
-                  _patternIpp >#< "<-" >#< _expressionIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 593, column 9)
-              _lhsOeh =
-                  (_expressionIeh
-                  ,ehGenerator
-                     range_ _patternIeh
-                     (\e -> ehExpVarApp range_ (_refnames !! 0) [_expressionIeh,e])
-                     (EH.mkError' (_refnames !! 1) range_ "monadic bind")
-                  )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternIppWrap . _expressionIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternIundefOccGam `gamUnion` _expressionIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _expressionIgUniq
-              -- copy rule (from local)
-              _lhsOnmLev =
-                  _nmLev
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _expressionItopInstanceNmL
-              -- copy rule (down)
-              _patternOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _patternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _patternOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _patternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _expressionOcaseId =
-                  _lhsIcaseId
-              -- copy rule (down)
-              _expressionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _expressionOgUniq =
-                  _patternIgUniq
-              -- copy rule (down)
-              _expressionOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _expressionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _expressionOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (from local)
-              _expressionOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _expressionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _expressionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _expressionOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _expressionOtopInstanceNmL =
-                  _patternItopInstanceNmL
-              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
-                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
-              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
-                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Statement_Empty :: Range ->
-                       T_Statement
-sem_Statement_Empty range_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
-              _lhsOerrSq :: ErrSq
-              _lhsOgathFixityGam :: FixityGam
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOidGam :: IdDefOccGam
-              _lhsOnmLev :: NmLev
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 600, column 9)
-              _lhsOeh =
-                  (undefined,id)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
-              _lhsOgathFixityGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOidGam =
-                  _lhsIidGam
-              -- copy rule (chain)
-              _lhsOnmLev =
-                  _lhsInmLev
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Statements --------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         caseId               : UID
-         fixityGam            : FixityGam
-         generDerivMp         : Map.Map HsName [(HsName,HsName)]
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-         pragmas              : Set.Set Pragma.Pragma
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [(EH.Expr,EH.Expr -> EH.Expr)]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Statement 
-         child tl             : Statements 
-         visit 0:
-            local fixityGam   : _
-      alternative Nil:
--}
--- cata
-sem_Statements :: Statements ->
-                  T_Statements
-sem_Statements list =
-    (Prelude.foldr sem_Statements_Cons sem_Statements_Nil (Prelude.map sem_Statement list))
--- semantic domain
-type T_Statements = UID ->
-                    FixityGam ->
-                    UID ->
-                    (Map.Map HsName [(HsName,HsName)]) ->
-                    IdDefOccGam ->
-                    HsName ->
-                    NmLev ->
-                    EHCOpts ->
-                    PatchEhNmInInstance ->
-                    (Set.Set Pragma.Pragma) ->
-                    ([HsName]) ->
-                    ( ([(EH.Expr,EH.Expr -> EH.Expr)]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Statements_Cons :: T_Statement ->
-                       T_Statements ->
-                       T_Statements
-sem_Statements_Cons hd_ tl_ =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOcaseId :: UID
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOpragmas :: (Set.Set Pragma.Pragma)
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOcaseId :: UID
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOpragmas :: (Set.Set Pragma.Pragma)
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: ((EH.Expr,EH.Expr -> EH.Expr))
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIgathFixityGam :: FixityGam
-              _hdIidGam :: IdDefOccGam
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdInmLev :: NmLev
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 500, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 39, column 9)
-              _fixityGam =
-                  _hdIgathFixityGam `gamUnion` _lhsIfixityGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 583, column 26)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _hdOfixityGam =
-                  _fixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOpragmas =
-                  _lhsIpragmas
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOcaseId =
-                  _lhsIcaseId
-              -- copy rule (from local)
-              _tlOfixityGam =
-                  _fixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOgenerDerivMp =
-                  _lhsIgenerDerivMp
-              -- copy rule (chain)
-              _tlOidGam =
-                  _hdIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (chain)
-              _tlOnmLev =
-                  _hdInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOpragmas =
-                  _lhsIpragmas
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidGam,_hdIidUseOccGam,_hdInmLev,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
-                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Statements_Nil :: T_Statements
-sem_Statements_Nil =
-    (\ _lhsIcaseId
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIgenerDerivMp
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsIpragmas
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 502, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 583, column 26)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Strings -----------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [String]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : {String}
-         child tl             : Strings 
-      alternative Nil:
--}
--- cata
-sem_Strings :: Strings ->
-               T_Strings
-sem_Strings list =
-    (Prelude.foldr sem_Strings_Cons sem_Strings_Nil list)
--- semantic domain
-type T_Strings = UID ->
-                 IdDefOccGam ->
-                 NmLev ->
-                 EHCOpts ->
-                 PatchEhNmInInstance ->
-                 ([HsName]) ->
-                 ( ([String]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Strings_Cons :: String ->
-                    T_Strings ->
-                    T_Strings
-sem_Strings_Cons hd_ tl_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([String])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _tlIeh :: ([String])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 918, column 23)
-              _lhsOeh =
-                  _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _tlOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _tlOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Strings_Nil :: T_Strings
-sem_Strings_Nil =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([String])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 918, column 23)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- Type --------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         doGenVarWild         : Bool
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isAsPred             : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         conNm                : Name
-         eh                   : EH.TyExpr
-         ehMbAsPr             : Maybe EH.PrExpr
-         ehMbAsPrL            : [Maybe EH.PrExpr]
-         ehMbAsTyPr           : Maybe EH.TyExpr
-         ehMbAsTyPrL          : [Maybe EH.TyExpr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         mbRefConNm           : Maybe Name
-         opChain              : OpChain EH.TyExpr
-         operatorName         : MaybeName
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         tyConIs              : TypeConFixedMeaning
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative NormalApplication:
-         child range          : {Range}
-         child function       : Type 
-         child arguments      : Types 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-      alternative InfixApplication:
-         child range          : {Range}
-         child leftType       : Type 
-         child operator       : Type 
-         child rightType      : Type 
-         visit 0:
-            local errSq       : _
-            local pp          : _
-            local fgi         : _
-            local eh          : _
-            local ctxtFormErrs : _
-            local isPredOp    : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-      alternative InfixApplicationChainTop:
-         child range          : {Range}
-         child type           : Type 
-         visit 0:
-            local errSq       : _
-            local ehRearrOpChain : _
-            local errRearr    : _
-            local ehFromOpChain : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-      alternative Constructor:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local idOccKind   : _
-            local idAsp       : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local tyConIs     : _
-            local isAsPred    : _
-      alternative Parenthesized:
-         child range          : {Range}
-         child type           : Type 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-      alternative SectionApplication:
-         child range          : {Range}
-         child leftType       : MaybeType 
-         child operator       : Type 
-         child rightType      : MaybeType 
-         visit 0:
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-            local lUniq_1_nm  : {UID}
-      alternative Annotate:
-         child range          : {Range}
-         child annotation     : TypeAnnotation 
-         child type           : Type 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-      alternative Wildcard:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative MonoWildcard:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idAsp       : _
-            local idOccKind   : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative NamedWildcard:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local idAsp       : _
-            local idOccKind   : _
-            local refname     : _
-            local idUseOccGam : _
-            local errIdUse    : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative Forall:
-         child range          : {Range}
-         child typevariables  : {Names}
-         child type           : Type 
-         visit 0:
-            local idDefOccGamInside : _
-            local idGam       : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative Exists:
-         child range          : {Range}
-         child typevariables  : {Names}
-         child type           : Type 
-         visit 0:
-            local idDefOccGamInside : _
-            local idGam       : _
-            local nmLev       : _
-            local errDupIntro : _
-            local errSq       : _
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative RowUpdate:
-         child range          : {Range}
-         child type           : Type 
-         child rowTypeUpdates : RowTypeUpdates 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative RowEmpty:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative RowRecUpdate:
-         child range          : {Range}
-         child type           : Type 
-         child rowTypeUpdates : RowTypeUpdates 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-      alternative RowRecEmpty:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative RowSumUpdate:
-         child range          : {Range}
-         child type           : Type 
-         child rowTypeUpdates : RowTypeUpdates 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative RowSumEmpty:
-         child range          : {Range}
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative Qualified:
-         child range          : {Range}
-         child context        : ContextItems 
-         child type           : Type 
-         visit 0:
-            local pp          : _
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
-            local isAsPred    : _
-      alternative TupleConstructor:
-         child range          : {Range}
-         child arity          : {Int}
-         visit 0:
-            local eh          : _
-            local ehMbAsPr    : _
-            local ehMbAsPrL   : _
-            local ehMbAsTyPr  : _
-            local ehMbAsTyPrL : _
--}
--- cata
-sem_Type :: Type ->
-            T_Type
-sem_Type (Type_NormalApplication _range _function _arguments) =
-    (sem_Type_NormalApplication _range (sem_Type _function) (sem_Types _arguments))
-sem_Type (Type_InfixApplication _range _leftType _operator _rightType) =
-    (sem_Type_InfixApplication _range (sem_Type _leftType) (sem_Type _operator) (sem_Type _rightType))
-sem_Type (Type_InfixApplicationChainTop _range _type) =
-    (sem_Type_InfixApplicationChainTop _range (sem_Type _type))
-sem_Type (Type_Constructor _range _name) =
-    (sem_Type_Constructor _range _name)
-sem_Type (Type_Parenthesized _range _type) =
-    (sem_Type_Parenthesized _range (sem_Type _type))
-sem_Type (Type_SectionApplication _range _leftType _operator _rightType) =
-    (sem_Type_SectionApplication _range (sem_MaybeType _leftType) (sem_Type _operator) (sem_MaybeType _rightType))
-sem_Type (Type_Annotate _range _annotation _type) =
-    (sem_Type_Annotate _range (sem_TypeAnnotation _annotation) (sem_Type _type))
-sem_Type (Type_Wildcard _range) =
-    (sem_Type_Wildcard _range)
-sem_Type (Type_MonoWildcard _range) =
-    (sem_Type_MonoWildcard _range)
-sem_Type (Type_Variable _range _name) =
-    (sem_Type_Variable _range _name)
-sem_Type (Type_NamedWildcard _range _name) =
-    (sem_Type_NamedWildcard _range _name)
-sem_Type (Type_Forall _range _typevariables _type) =
-    (sem_Type_Forall _range _typevariables (sem_Type _type))
-sem_Type (Type_Exists _range _typevariables _type) =
-    (sem_Type_Exists _range _typevariables (sem_Type _type))
-sem_Type (Type_RowUpdate _range _type _rowTypeUpdates) =
-    (sem_Type_RowUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
-sem_Type (Type_RowEmpty _range) =
-    (sem_Type_RowEmpty _range)
-sem_Type (Type_RowRecUpdate _range _type _rowTypeUpdates) =
-    (sem_Type_RowRecUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
-sem_Type (Type_RowRecEmpty _range) =
-    (sem_Type_RowRecEmpty _range)
-sem_Type (Type_RowSumUpdate _range _type _rowTypeUpdates) =
-    (sem_Type_RowSumUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
-sem_Type (Type_RowSumEmpty _range) =
-    (sem_Type_RowSumEmpty _range)
-sem_Type (Type_Qualified _range _context _type) =
-    (sem_Type_Qualified _range (sem_ContextItems _context) (sem_Type _type))
-sem_Type (Type_TupleConstructor _range _arity) =
-    (sem_Type_TupleConstructor _range _arity)
--- semantic domain
-type T_Type = Bool ->
-              FixityGam ->
-              UID ->
-              IdDefOccGam ->
-              Bool ->
-              NmLev ->
-              EHCOpts ->
-              PatchEhNmInInstance ->
-              ([HsName]) ->
-              ( Name,(EH.TyExpr),(Maybe EH.PrExpr),([Maybe EH.PrExpr]),(Maybe EH.TyExpr),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,(Maybe Name),(OpChain EH.TyExpr),MaybeName,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TypeConFixedMeaning,IdUseOccGam)
-sem_Type_NormalApplication :: Range ->
-                              T_Type ->
-                              T_Types ->
-                              T_Type
-sem_Type_NormalApplication range_ function_ arguments_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _argumentsOisAsPred :: Bool
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _functionOdoGenVarWild :: Bool
-              _functionOfixityGam :: FixityGam
-              _functionOgUniq :: UID
-              _functionOidGam :: IdDefOccGam
-              _functionOisAsPred :: Bool
-              _functionOnmLev :: NmLev
-              _functionOopts :: EHCOpts
-              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
-              _functionOtopInstanceNmL :: ([HsName])
-              _argumentsOfixityGam :: FixityGam
-              _argumentsOgUniq :: UID
-              _argumentsOidGam :: IdDefOccGam
-              _argumentsOnmLev :: NmLev
-              _argumentsOopts :: EHCOpts
-              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _argumentsOtopInstanceNmL :: ([HsName])
-              _functionIconNm :: Name
-              _functionIeh :: (EH.TyExpr)
-              _functionIehMbAsPr :: (Maybe EH.PrExpr)
-              _functionIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _functionIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _functionIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _functionIerrSq :: ErrSq
-              _functionIfreeTvarS :: HsNameS
-              _functionIgUniq :: UID
-              _functionIidUseOccGam :: IdUseOccGam
-              _functionImbRefConNm :: (Maybe Name)
-              _functionIopChain :: (OpChain EH.TyExpr)
-              _functionIoperatorName :: MaybeName
-              _functionIpp :: PP_Doc
-              _functionIppWrap :: (PP_Doc -> PP_Doc)
-              _functionItopInstanceNmL :: ([HsName])
-              _functionItyConIs :: TypeConFixedMeaning
-              _functionIundefOccGam :: IdUseOccGam
-              _argumentsIeh :: ([EH.TyExpr])
-              _argumentsIerrSq :: ErrSq
-              _argumentsIfreeTvarS :: HsNameS
-              _argumentsIgUniq :: UID
-              _argumentsIidUseOccGam :: IdUseOccGam
-              _argumentsIpp :: PP_Doc
-              _argumentsIppL :: ([PP_Doc])
-              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
-              _argumentsItopInstanceNmL :: ([HsName])
-              _argumentsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 116, column 9)
-              _pp =
-                  let f = _functionIpp
-                  in  ppAppTop  (_functionIconNm, f)
-                            _argumentsIppL (f >#< ppSpaces _argumentsIppL)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 209, column 9)
-              _eh =
-                  appTopApp (_functionIeh : _argumentsIeh)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 346, column 9)
-              _ehMbAsPr =
-                  case _functionImbRefConNm of
-                    Just conNm | _lhsIisAsPred
-                      -> Just $ rngLift range_ EH.PrExpr_Class conNm _argumentsIeh
-                    _ -> Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 156, column 9)
-              _lhsOtyConIs =
-                  _functionItyConIs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 166, column 9)
-              _argumentsOisAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _functionIerrSq `Seq.union` _argumentsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _functionIfreeTvarS `Set.union` _argumentsIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _functionIppWrap . _argumentsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
-              -- copy rule (up)
-              _lhsOconNm =
-                  _functionIconNm
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _argumentsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _argumentsItopInstanceNmL
-              -- copy rule (down)
-              _functionOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _functionOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _functionOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _functionOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _functionOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _functionOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _functionOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _functionOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _functionOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _argumentsOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _argumentsOgUniq =
-                  _functionIgUniq
-              -- copy rule (down)
-              _argumentsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _argumentsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _argumentsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _argumentsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _argumentsOtopInstanceNmL =
-                  _functionItopInstanceNmL
-              ( _functionIconNm,_functionIeh,_functionIehMbAsPr,_functionIehMbAsPrL,_functionIehMbAsTyPr,_functionIehMbAsTyPrL,_functionIerrSq,_functionIfreeTvarS,_functionIgUniq,_functionIidUseOccGam,_functionImbRefConNm,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItyConIs,_functionIundefOccGam) =
-                  function_ _functionOdoGenVarWild _functionOfixityGam _functionOgUniq _functionOidGam _functionOisAsPred _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOtopInstanceNmL
-              ( _argumentsIeh,_argumentsIerrSq,_argumentsIfreeTvarS,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
-                  arguments_ _argumentsOfixityGam _argumentsOgUniq _argumentsOidGam _argumentsOisAsPred _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_InfixApplication :: Range ->
-                             T_Type ->
-                             T_Type ->
-                             T_Type ->
-                             T_Type
-sem_Type_InfixApplication range_ leftType_ operator_ rightType_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _leftTypeOisAsPred :: Bool
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftTypeOdoGenVarWild :: Bool
-              _leftTypeOfixityGam :: FixityGam
-              _leftTypeOgUniq :: UID
-              _leftTypeOidGam :: IdDefOccGam
-              _leftTypeOnmLev :: NmLev
-              _leftTypeOopts :: EHCOpts
-              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftTypeOtopInstanceNmL :: ([HsName])
-              _operatorOdoGenVarWild :: Bool
-              _operatorOfixityGam :: FixityGam
-              _operatorOgUniq :: UID
-              _operatorOidGam :: IdDefOccGam
-              _operatorOisAsPred :: Bool
-              _operatorOnmLev :: NmLev
-              _operatorOopts :: EHCOpts
-              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
-              _operatorOtopInstanceNmL :: ([HsName])
-              _rightTypeOdoGenVarWild :: Bool
-              _rightTypeOfixityGam :: FixityGam
-              _rightTypeOgUniq :: UID
-              _rightTypeOidGam :: IdDefOccGam
-              _rightTypeOisAsPred :: Bool
-              _rightTypeOnmLev :: NmLev
-              _rightTypeOopts :: EHCOpts
-              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightTypeOtopInstanceNmL :: ([HsName])
-              _leftTypeIconNm :: Name
-              _leftTypeIeh :: (EH.TyExpr)
-              _leftTypeIehMbAsPr :: (Maybe EH.PrExpr)
-              _leftTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _leftTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _leftTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _leftTypeIerrSq :: ErrSq
-              _leftTypeIfreeTvarS :: HsNameS
-              _leftTypeIgUniq :: UID
-              _leftTypeIidUseOccGam :: IdUseOccGam
-              _leftTypeImbRefConNm :: (Maybe Name)
-              _leftTypeIopChain :: (OpChain EH.TyExpr)
-              _leftTypeIoperatorName :: MaybeName
-              _leftTypeIpp :: PP_Doc
-              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
-              _leftTypeItopInstanceNmL :: ([HsName])
-              _leftTypeItyConIs :: TypeConFixedMeaning
-              _leftTypeIundefOccGam :: IdUseOccGam
-              _operatorIconNm :: Name
-              _operatorIeh :: (EH.TyExpr)
-              _operatorIehMbAsPr :: (Maybe EH.PrExpr)
-              _operatorIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _operatorIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _operatorIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _operatorIerrSq :: ErrSq
-              _operatorIfreeTvarS :: HsNameS
-              _operatorIgUniq :: UID
-              _operatorIidUseOccGam :: IdUseOccGam
-              _operatorImbRefConNm :: (Maybe Name)
-              _operatorIopChain :: (OpChain EH.TyExpr)
-              _operatorIoperatorName :: MaybeName
-              _operatorIpp :: PP_Doc
-              _operatorIppWrap :: (PP_Doc -> PP_Doc)
-              _operatorItopInstanceNmL :: ([HsName])
-              _operatorItyConIs :: TypeConFixedMeaning
-              _operatorIundefOccGam :: IdUseOccGam
-              _rightTypeIconNm :: Name
-              _rightTypeIeh :: (EH.TyExpr)
-              _rightTypeIehMbAsPr :: (Maybe EH.PrExpr)
-              _rightTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _rightTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _rightTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _rightTypeIerrSq :: ErrSq
-              _rightTypeIfreeTvarS :: HsNameS
-              _rightTypeIgUniq :: UID
-              _rightTypeIidUseOccGam :: IdUseOccGam
-              _rightTypeImbRefConNm :: (Maybe Name)
-              _rightTypeIopChain :: (OpChain EH.TyExpr)
-              _rightTypeIoperatorName :: MaybeName
-              _rightTypeIpp :: PP_Doc
-              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
-              _rightTypeItopInstanceNmL :: ([HsName])
-              _rightTypeItyConIs :: TypeConFixedMeaning
-              _rightTypeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 256, column 9)
-              _lhsOconNm =
-                  _operatorIconNm
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 65, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _ctxtFormErrs, _leftTypeIerrSq, _operatorIerrSq, _rightTypeIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 120, column 9)
-              _pp =
-                  let args = [_leftTypeIpp,_rightTypeIpp]
-                      o = _operatorIpp
-                  in  ppAppTop  (_operatorIconNm, o)
-                                args (o >#< ppSpaces args)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 58, column 9)
-              _fgi =
-                  case _operatorIoperatorName of
-                    Just n
-                      -> fixityGamLookup n _lhsIfixityGam
-                    _ -> defaultFixityGamInfo
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 112, column 9)
-              _lhsOopChain =
-                  if _isPredOp
-                  then OpChain_Leaf _eh
-                  else
-                       OpChain_Op _operatorIeh _operatorIpp (fgiFixity _fgi) (fgiPrio _fgi) range_ _leftTypeIopChain _rightTypeIopChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 211, column 25)
-              (_eh,_ctxtFormErrs,_isPredOp) =
-                  if not _lhsIisAsPred && _operatorItyConIs == TyConIsPrArrow
-                  then let t = foldr app1Arr _rightTypeIeh [ pr | (Just pr) <- _leftTypeIehMbAsTyPrL ]
-                       in  if all isJust _leftTypeIehMbAsTyPrL
-                           then (t, []                                                  , True )
-                           else (t, [rngLift range_ Err_MalformedPred _leftTypeIpp]     , False)
-                  else (appRngParApp range_ [_operatorIeh,_leftTypeIeh,_rightTypeIeh], [], False)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 353, column 9)
-              _ehMbAsPr =
-                  case (_leftTypeIehMbAsPr,_rightTypeIehMbAsPr) of
-                    (Just l,Just r) | _operatorItyConIs == TyConIsPrArrow && _lhsIisAsPred
-                      -> Just $ rngLift range_ EH.PrExpr_Arrow l r
-                    (Nothing,Nothing) | _lhsIisAsPred
-                      -> case _operatorItyConIs of
-                           TyConIsPrArrow -> Just $ rngLift range_ EH.PrExpr_Class (fromJust _operatorImbRefConNm) [_leftTypeIeh,_rightTypeIeh]
-                           TyConIsEqTilde -> Just $ rngLift range_ EH.PrExpr_Eq _leftTypeIeh _rightTypeIeh
-                           TyConIsOther   -> Just $ rngLift range_ EH.PrExpr_Class (fromJust _operatorImbRefConNm) [_leftTypeIeh,_rightTypeIeh]
-                    _ -> Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 164, column 9)
-              _leftTypeOisAsPred =
-                  _lhsIisAsPred || _operatorItyConIs == TyConIsPrArrow
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _leftTypeIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightTypeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftTypeIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftTypeIppWrap . _operatorIppWrap . _rightTypeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftTypeIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightTypeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightTypeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightTypeItopInstanceNmL
-              -- copy rule (down)
-              _leftTypeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _leftTypeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftTypeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftTypeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftTypeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftTypeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftTypeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftTypeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _operatorOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _operatorOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _operatorOgUniq =
-                  _leftTypeIgUniq
-              -- copy rule (down)
-              _operatorOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _operatorOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _operatorOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _operatorOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _operatorOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _operatorOtopInstanceNmL =
-                  _leftTypeItopInstanceNmL
-              -- copy rule (down)
-              _rightTypeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _rightTypeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightTypeOgUniq =
-                  _operatorIgUniq
-              -- copy rule (down)
-              _rightTypeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightTypeOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _rightTypeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightTypeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightTypeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rightTypeOtopInstanceNmL =
-                  _operatorItopInstanceNmL
-              ( _leftTypeIconNm,_leftTypeIeh,_leftTypeIehMbAsPr,_leftTypeIehMbAsPrL,_leftTypeIehMbAsTyPr,_leftTypeIehMbAsTyPrL,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeImbRefConNm,_leftTypeIopChain,_leftTypeIoperatorName,_leftTypeIpp,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItyConIs,_leftTypeIundefOccGam) =
-                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOisAsPred _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL
-              ( _operatorIconNm,_operatorIeh,_operatorIehMbAsPr,_operatorIehMbAsPrL,_operatorIehMbAsTyPr,_operatorIehMbAsTyPrL,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorImbRefConNm,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItyConIs,_operatorIundefOccGam) =
-                  operator_ _operatorOdoGenVarWild _operatorOfixityGam _operatorOgUniq _operatorOidGam _operatorOisAsPred _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL
-              ( _rightTypeIconNm,_rightTypeIeh,_rightTypeIehMbAsPr,_rightTypeIehMbAsPrL,_rightTypeIehMbAsTyPr,_rightTypeIehMbAsTyPrL,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeImbRefConNm,_rightTypeIopChain,_rightTypeIoperatorName,_rightTypeIpp,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItyConIs,_rightTypeIundefOccGam) =
-                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOisAsPred _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_InfixApplicationChainTop :: Range ->
-                                     T_Type ->
-                                     T_Type
-sem_Type_InfixApplicationChainTop range_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOconNm :: Name
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 67, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errRearr, _typeIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 122, column 25)
-              (_ehRearrOpChain,_errRearr) =
-                  opChainReArrange _typeIopChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 122, column 9)
-              _ehFromOpChain =
-                  unOpChain _ehRearrOpChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 219, column 9)
-              _eh =
-                  _ehFromOpChain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 363, column 9)
-              _ehMbAsPr =
-                  _typeIehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _typeIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (up)
-              _lhsOconNm =
-                  _typeIconNm
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _typeOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Constructor :: Range ->
-                        Name ->
-                        T_Type
-sem_Type_Constructor range_ name_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lhsOtyConIs :: TypeConFixedMeaning
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 597, column 29)
-              (_idOccKind,_idAsp) =
-                  if _lhsIisAsPred && _tyConIs == TyConIsOther
-                  then (IdOcc_Class,IdAsp_Class_Class)
-                  else (IdOcc_Type,IdAsp_Type_Con)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 254, column 9)
-              _lhsOconNm =
-                  name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 125, column 9)
-              _pp =
-                  ppCon name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
-              _lhsOoperatorName =
-                  Just _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 229, column 9)
-              _eh =
-                  rngLift range_ EH.TyExpr_Con _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 136, column 9)
-              _lhsOmbRefConNm =
-                  Just _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 152, column 9)
-              _tyConIs =
-                  if      hsnIsPrArrow name_ then TyConIsPrArrow
-                  else if hsnIsEqTilde name_ then TyConIsEqTilde
-                  else                            TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (from local)
-              _lhsOtyConIs =
-                  _tyConIs
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Parenthesized :: Range ->
-                          T_Type ->
-                          T_Type
-sem_Type_Parenthesized range_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 127, column 9)
-              _pp =
-                  ppParens _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 231, column 9)
-              _eh =
-                  rngLift range_ EH.TyExpr_Parens _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 363, column 9)
-              _ehMbAsPr =
-                  _typeIehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 373, column 9)
-              _ehMbAsPrL =
-                  _typeIehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _typeIehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _typeOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_SectionApplication :: Range ->
-                               T_MaybeType ->
-                               T_Type ->
-                               T_MaybeType ->
-                               T_Type
-sem_Type_SectionApplication range_ leftType_ operator_ rightType_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _leftTypeOgUniq :: UID
-              _lUniq_1_nm :: UID
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftTypeOdoGenVarWild :: Bool
-              _leftTypeOfixityGam :: FixityGam
-              _leftTypeOidGam :: IdDefOccGam
-              _leftTypeOnmLev :: NmLev
-              _leftTypeOopts :: EHCOpts
-              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftTypeOtopInstanceNmL :: ([HsName])
-              _operatorOdoGenVarWild :: Bool
-              _operatorOfixityGam :: FixityGam
-              _operatorOgUniq :: UID
-              _operatorOidGam :: IdDefOccGam
-              _operatorOisAsPred :: Bool
-              _operatorOnmLev :: NmLev
-              _operatorOopts :: EHCOpts
-              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
-              _operatorOtopInstanceNmL :: ([HsName])
-              _rightTypeOdoGenVarWild :: Bool
-              _rightTypeOfixityGam :: FixityGam
-              _rightTypeOgUniq :: UID
-              _rightTypeOidGam :: IdDefOccGam
-              _rightTypeOnmLev :: NmLev
-              _rightTypeOopts :: EHCOpts
-              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightTypeOtopInstanceNmL :: ([HsName])
-              _leftTypeIeh :: (Maybe EH.TyExpr)
-              _leftTypeIerrSq :: ErrSq
-              _leftTypeIfreeTvarS :: HsNameS
-              _leftTypeIgUniq :: UID
-              _leftTypeIidUseOccGam :: IdUseOccGam
-              _leftTypeIpp :: PP_Doc
-              _leftTypeIppMb :: (Maybe PP_Doc)
-              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
-              _leftTypeItopInstanceNmL :: ([HsName])
-              _leftTypeIundefOccGam :: IdUseOccGam
-              _operatorIconNm :: Name
-              _operatorIeh :: (EH.TyExpr)
-              _operatorIehMbAsPr :: (Maybe EH.PrExpr)
-              _operatorIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _operatorIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _operatorIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _operatorIerrSq :: ErrSq
-              _operatorIfreeTvarS :: HsNameS
-              _operatorIgUniq :: UID
-              _operatorIidUseOccGam :: IdUseOccGam
-              _operatorImbRefConNm :: (Maybe Name)
-              _operatorIopChain :: (OpChain EH.TyExpr)
-              _operatorIoperatorName :: MaybeName
-              _operatorIpp :: PP_Doc
-              _operatorIppWrap :: (PP_Doc -> PP_Doc)
-              _operatorItopInstanceNmL :: ([HsName])
-              _operatorItyConIs :: TypeConFixedMeaning
-              _operatorIundefOccGam :: IdUseOccGam
-              _rightTypeIeh :: (Maybe EH.TyExpr)
-              _rightTypeIerrSq :: ErrSq
-              _rightTypeIfreeTvarS :: HsNameS
-              _rightTypeIgUniq :: UID
-              _rightTypeIidUseOccGam :: IdUseOccGam
-              _rightTypeIpp :: PP_Doc
-              _rightTypeIppMb :: (Maybe PP_Doc)
-              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
-              _rightTypeItopInstanceNmL :: ([HsName])
-              _rightTypeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 221, column 9)
-              _eh =
-                  ehSection
-                      _lUniq_1_nm range_
-                      EH.TyExpr_Var
-                      (rngAntilift id)
-                      EH.TyExpr_Lam
-                      _leftTypeIeh _operatorIeh _rightTypeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- -- generated by the unique rule mechanism.
-              (_leftTypeOgUniq,_lUniq_1_nm) =
-                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_1_nm) -> (__cont,lUniq_1_nm)} )
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftTypeIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightTypeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _leftTypeIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightTypeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftTypeIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _leftTypeIpp >-< _operatorIpp >-< _rightTypeIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftTypeIppWrap . _operatorIppWrap . _rightTypeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftTypeIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightTypeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightTypeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightTypeItopInstanceNmL
-              -- copy rule (down)
-              _leftTypeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _leftTypeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _leftTypeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftTypeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftTypeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftTypeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftTypeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _operatorOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _operatorOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _operatorOgUniq =
-                  _leftTypeIgUniq
-              -- copy rule (down)
-              _operatorOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _operatorOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _operatorOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _operatorOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _operatorOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _operatorOtopInstanceNmL =
-                  _leftTypeItopInstanceNmL
-              -- copy rule (down)
-              _rightTypeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _rightTypeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rightTypeOgUniq =
-                  _operatorIgUniq
-              -- copy rule (down)
-              _rightTypeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightTypeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightTypeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightTypeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rightTypeOtopInstanceNmL =
-                  _operatorItopInstanceNmL
-              ( _leftTypeIeh,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeIpp,_leftTypeIppMb,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeIundefOccGam) =
-                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL
-              ( _operatorIconNm,_operatorIeh,_operatorIehMbAsPr,_operatorIehMbAsPrL,_operatorIehMbAsTyPr,_operatorIehMbAsTyPrL,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorImbRefConNm,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItyConIs,_operatorIundefOccGam) =
-                  operator_ _operatorOdoGenVarWild _operatorOfixityGam _operatorOgUniq _operatorOidGam _operatorOisAsPred _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL
-              ( _rightTypeIeh,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeIpp,_rightTypeIppMb,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeIundefOccGam) =
-                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Annotate :: Range ->
-                     T_TypeAnnotation ->
-                     T_Type ->
-                     T_Type
-sem_Type_Annotate range_ annotation_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _annotationOfixityGam :: FixityGam
-              _annotationOgUniq :: UID
-              _annotationOidGam :: IdDefOccGam
-              _annotationOnmLev :: NmLev
-              _annotationOopts :: EHCOpts
-              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
-              _annotationOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _annotationIeh :: (EH.TyExprAnn)
-              _annotationIerrSq :: ErrSq
-              _annotationIfreeTvarS :: HsNameS
-              _annotationIgUniq :: UID
-              _annotationIidUseOccGam :: IdUseOccGam
-              _annotationIpp :: PP_Doc
-              _annotationIppWrap :: (PP_Doc -> PP_Doc)
-              _annotationItopInstanceNmL :: ([HsName])
-              _annotationIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 129, column 9)
-              _pp =
-                  _annotationIppWrap _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 233, column 17)
-              _eh =
-                  rngLift range_ EH.TyExpr_Ann _annotationIeh _typeIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 363, column 9)
-              _ehMbAsPr =
-                  _typeIehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 373, column 9)
-              _ehMbAsPrL =
-                  _typeIehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _annotationIerrSq `Seq.union` _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _annotationIfreeTvarS `Set.union` _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _annotationIidUseOccGam `gamAddGam` _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _annotationIppWrap . _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _annotationIundefOccGam `gamUnion` _typeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (up)
-              _lhsOtyConIs =
-                  _typeItyConIs
-              -- copy rule (down)
-              _annotationOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _annotationOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _annotationOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _annotationOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _annotationOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _annotationOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _annotationOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _annotationIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _typeOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _annotationItopInstanceNmL
-              ( _annotationIeh,_annotationIerrSq,_annotationIfreeTvarS,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
-                  annotation_ _annotationOfixityGam _annotationOgUniq _annotationOidGam _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Wildcard :: Range ->
-                     T_Type
-sem_Type_Wildcard range_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 131, column 9)
-              _pp =
-                  pp "..."
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 235, column 9)
-              _eh =
-                  rngLift range_ EH.TyExpr_Wild
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 385, column 17)
-              _ehMbAsTyPr =
-                  Just $ rngLift range_ EH.TyExpr_Impls
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 395, column 17)
-              _ehMbAsTyPrL =
-                  [_ehMbAsTyPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_MonoWildcard :: Range ->
-                         T_Type
-sem_Type_MonoWildcard range_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 133, column 9)
-              _pp =
-                  pp "...."
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 237, column 9)
-              _eh =
-                  rngLift range_ EH.TyExpr_Mono
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 385, column 17)
-              _ehMbAsTyPr =
-                  Just $ rngLift range_ EH.TyExpr_Impls
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 395, column 17)
-              _ehMbAsTyPrL =
-                  [_ehMbAsTyPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Variable :: Range ->
-                     Name ->
-                     T_Type
-sem_Type_Variable range_ name_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
-              _idAsp =
-                  IdAsp_Type_Var
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
-              _idOccKind =
-                  IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 135, column 9)
-              _pp =
-                  pp name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
-              _lhsOoperatorName =
-                  Just _refname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 239, column 9)
-              _eh =
-                  rngLift range_ (if _lhsIdoGenVarWild then EH.TyExpr_VarWild else EH.TyExpr_Var) name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 122, column 9)
-              _lhsOfreeTvarS =
-                  Set.singleton name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_NamedWildcard :: Range ->
-                          Name ->
-                          T_Type
-sem_Type_NamedWildcard range_ name_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
-              _idAsp =
-                  IdAsp_Type_Var
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
-              _idOccKind =
-                  IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 29)
-              (_refname,_,_idUseOccGam,_errIdUse) =
-                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
-              _errSq =
-                  Seq.fromList _errIdUse
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 137, column 9)
-              _pp =
-                  "%" >|< name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 241, column 9)
-              _eh =
-                  rngLift range_ EH.TyExpr_VarWild name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 122, column 9)
-              _lhsOfreeTvarS =
-                  Set.singleton name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _idUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Forall :: Range ->
-                   Names ->
-                   T_Type ->
-                   T_Type
-sem_Type_Forall range_ typevariables_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 242, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 408, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamInside _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 112, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamInside
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 63, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, _typeIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 139, column 9)
-              _pp =
-                  "forall" >#< ppSpaces typevariables_ >#< "." >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 243, column 9)
-              _eh =
-                  foldr (rngLift range_ EH.TyExpr_Quant tyQu_Forall) _typeIeh typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 351, column 9)
-              _ehMbAsPr =
-                  foldr (\tv pr -> fmap (rngLift range_ EH.PrExpr_Forall tv) pr) _typeIehMbAsPr typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 124, column 9)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS `Set.difference` Set.fromList typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _typeOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Exists :: Range ->
-                   Names ->
-                   T_Type ->
-                   T_Type
-sem_Type_Exists range_ typevariables_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 242, column 9)
-              _idDefOccGamInside =
-                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 408, column 9)
-              _idGam =
-                  gamUnion _idDefOccGamInside _lhsIidGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
-              _nmLev =
-                  _lhsInmLev + 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 112, column 9)
-              _errDupIntro =
-                  idDefOccGamCheckDupNames _idDefOccGamInside
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 63, column 9)
-              _errSq =
-                  Seq.unions [Seq.fromList _errDupIntro, _typeIerrSq]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 141, column 9)
-              _pp =
-                  "exists" >#< ppSpaces typevariables_ >#< "." >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 245, column 9)
-              _eh =
-                  foldr (rngLift range_ EH.TyExpr_Quant tyQu_Exists) _typeIeh typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 124, column 9)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS `Set.difference` Set.fromList typevariables_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _errSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (from local)
-              _typeOidGam =
-                  _idGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (from local)
-              _typeOnmLev =
-                  _nmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_RowUpdate :: Range ->
-                      T_Type ->
-                      T_RowTypeUpdates ->
-                      T_Type
-sem_Type_RowUpdate range_ type_ rowTypeUpdates_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _rowTypeUpdatesOdoGenVarWild :: Bool
-              _rowTypeUpdatesOfixityGam :: FixityGam
-              _rowTypeUpdatesOgUniq :: UID
-              _rowTypeUpdatesOidGam :: IdDefOccGam
-              _rowTypeUpdatesOisAsPred :: Bool
-              _rowTypeUpdatesOnmLev :: NmLev
-              _rowTypeUpdatesOopts :: EHCOpts
-              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
-              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _rowTypeUpdatesIerrSq :: ErrSq
-              _rowTypeUpdatesIfreeTvarS :: HsNameS
-              _rowTypeUpdatesIgUniq :: UID
-              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
-              _rowTypeUpdatesIpp :: PP_Doc
-              _rowTypeUpdatesIppL :: ([PP_Doc])
-              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
-              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
-              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 143, column 9)
-              _pp =
-                  ppAppTop  (hsnRow,mkPPAppFun hsnRowEmpty _typeIpp)
-                            _rowTypeUpdatesIppL _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 247, column 9)
-              _eh =
-                  foldl (flip ($)) _typeIeh _rowTypeUpdatesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap . _rowTypeUpdatesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rowTypeUpdatesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rowTypeUpdatesItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rowTypeUpdatesOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _rowTypeUpdatesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rowTypeUpdatesOgUniq =
-                  _typeIgUniq
-              -- copy rule (down)
-              _rowTypeUpdatesOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _rowTypeUpdatesOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _rowTypeUpdatesOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rowTypeUpdatesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rowTypeUpdatesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rowTypeUpdatesOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesIundefOccGam) =
-                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_RowEmpty :: Range ->
-                     T_Type
-sem_Type_RowEmpty range_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 146, column 9)
-              _pp =
-                  hsnORow >|< hsnCRow
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 249, column 9)
-              _eh =
-                  rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_RowRecUpdate :: Range ->
-                         T_Type ->
-                         T_RowTypeUpdates ->
-                         T_Type
-sem_Type_RowRecUpdate range_ type_ rowTypeUpdates_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _rowTypeUpdatesOdoGenVarWild :: Bool
-              _rowTypeUpdatesOfixityGam :: FixityGam
-              _rowTypeUpdatesOgUniq :: UID
-              _rowTypeUpdatesOidGam :: IdDefOccGam
-              _rowTypeUpdatesOisAsPred :: Bool
-              _rowTypeUpdatesOnmLev :: NmLev
-              _rowTypeUpdatesOopts :: EHCOpts
-              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
-              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _rowTypeUpdatesIerrSq :: ErrSq
-              _rowTypeUpdatesIfreeTvarS :: HsNameS
-              _rowTypeUpdatesIgUniq :: UID
-              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
-              _rowTypeUpdatesIpp :: PP_Doc
-              _rowTypeUpdatesIppL :: ([PP_Doc])
-              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
-              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
-              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 148, column 9)
-              _pp =
-                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _typeIpp)
-                            _rowTypeUpdatesIppL _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 251, column 9)
-              _eh =
-                  foldl (\e u -> appCon1App hsnRec $ u $ ehTyExprArg $ e) _typeIeh _rowTypeUpdatesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 371, column 9)
-              _ehMbAsPrL =
-                  _rowTypeUpdatesIehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 393, column 9)
-              _ehMbAsTyPrL =
-                  _rowTypeUpdatesIehMbAsTyPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap . _rowTypeUpdatesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rowTypeUpdatesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rowTypeUpdatesItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _typeOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rowTypeUpdatesOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _rowTypeUpdatesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rowTypeUpdatesOgUniq =
-                  _typeIgUniq
-              -- copy rule (down)
-              _rowTypeUpdatesOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rowTypeUpdatesOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _rowTypeUpdatesOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rowTypeUpdatesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rowTypeUpdatesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rowTypeUpdatesOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesIundefOccGam) =
-                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_RowRecEmpty :: Range ->
-                        T_Type
-sem_Type_RowRecEmpty range_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 151, column 9)
-              _pp =
-                  pp hsnRec
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 253, column 9)
-              _eh =
-                  appCon1App hsnRec $ rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_RowSumUpdate :: Range ->
-                         T_Type ->
-                         T_RowTypeUpdates ->
-                         T_Type
-sem_Type_RowSumUpdate range_ type_ rowTypeUpdates_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _rowTypeUpdatesOdoGenVarWild :: Bool
-              _rowTypeUpdatesOfixityGam :: FixityGam
-              _rowTypeUpdatesOgUniq :: UID
-              _rowTypeUpdatesOidGam :: IdDefOccGam
-              _rowTypeUpdatesOisAsPred :: Bool
-              _rowTypeUpdatesOnmLev :: NmLev
-              _rowTypeUpdatesOopts :: EHCOpts
-              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
-              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _rowTypeUpdatesIerrSq :: ErrSq
-              _rowTypeUpdatesIfreeTvarS :: HsNameS
-              _rowTypeUpdatesIgUniq :: UID
-              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
-              _rowTypeUpdatesIpp :: PP_Doc
-              _rowTypeUpdatesIppL :: ([PP_Doc])
-              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
-              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
-              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 153, column 9)
-              _pp =
-                  ppAppTop  (hsnSum,mkPPAppFun hsnRowEmpty _typeIpp)
-                            _rowTypeUpdatesIppL _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 255, column 9)
-              _eh =
-                  foldl (\e u -> appCon1App hsnSum $ u $ ehTyExprArg $ e) _typeIeh _rowTypeUpdatesIeh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _typeIppWrap . _rowTypeUpdatesIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rowTypeUpdatesIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rowTypeUpdatesItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _typeOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _typeOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _rowTypeUpdatesOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _rowTypeUpdatesOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _rowTypeUpdatesOgUniq =
-                  _typeIgUniq
-              -- copy rule (down)
-              _rowTypeUpdatesOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _rowTypeUpdatesOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _rowTypeUpdatesOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rowTypeUpdatesOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rowTypeUpdatesOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rowTypeUpdatesOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesIundefOccGam) =
-                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_RowSumEmpty :: Range ->
-                        T_Type
-sem_Type_RowSumEmpty range_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 156, column 9)
-              _pp =
-                  pp hsnSum
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 257, column 9)
-              _eh =
-                  appCon1App hsnSum $ rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_Qualified :: Range ->
-                      T_ContextItems ->
-                      T_Type ->
-                      T_Type
-sem_Type_Qualified range_ context_ type_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _contextOfixityGam :: FixityGam
-              _contextOgUniq :: UID
-              _contextOidGam :: IdDefOccGam
-              _contextOnmLev :: NmLev
-              _contextOopts :: EHCOpts
-              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
-              _contextOtopInstanceNmL :: ([HsName])
-              _typeOdoGenVarWild :: Bool
-              _typeOfixityGam :: FixityGam
-              _typeOgUniq :: UID
-              _typeOidGam :: IdDefOccGam
-              _typeOisAsPred :: Bool
-              _typeOnmLev :: NmLev
-              _typeOopts :: EHCOpts
-              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
-              _typeOtopInstanceNmL :: ([HsName])
-              _contextIeh :: ([EH.PrExpr])
-              _contextIehTy :: ([EH.TyExpr])
-              _contextIerrSq :: ErrSq
-              _contextIfreeTvarS :: HsNameS
-              _contextIgUniq :: UID
-              _contextIidUseOccGam :: IdUseOccGam
-              _contextIpp :: PP_Doc
-              _contextIppWrap :: (PP_Doc -> PP_Doc)
-              _contextItopInstanceNmL :: ([HsName])
-              _contextIundefOccGam :: IdUseOccGam
-              _typeIconNm :: Name
-              _typeIeh :: (EH.TyExpr)
-              _typeIehMbAsPr :: (Maybe EH.PrExpr)
-              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _typeIerrSq :: ErrSq
-              _typeIfreeTvarS :: HsNameS
-              _typeIgUniq :: UID
-              _typeIidUseOccGam :: IdUseOccGam
-              _typeImbRefConNm :: (Maybe Name)
-              _typeIopChain :: (OpChain EH.TyExpr)
-              _typeIoperatorName :: MaybeName
-              _typeIpp :: PP_Doc
-              _typeIppWrap :: (PP_Doc -> PP_Doc)
-              _typeItopInstanceNmL :: ([HsName])
-              _typeItyConIs :: TypeConFixedMeaning
-              _typeIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 158, column 9)
-              _pp =
-                  _contextIpp >#< "=>" >#< _typeIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 259, column 9)
-              _eh =
-                  foldr app1Arr _typeIeh _contextIehTy
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
-              _isAsPred =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _contextIerrSq `Seq.union` _typeIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _contextIfreeTvarS `Set.union` _typeIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _contextIidUseOccGam `gamAddGam` _typeIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _contextIppWrap . _typeIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _contextIundefOccGam `gamUnion` _typeIundefOccGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _typeIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _typeItopInstanceNmL
-              -- copy rule (down)
-              _contextOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _contextOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _contextOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _contextOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _contextOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _contextOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _contextOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _typeOdoGenVarWild =
-                  _lhsIdoGenVarWild
-              -- copy rule (down)
-              _typeOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _typeOgUniq =
-                  _contextIgUniq
-              -- copy rule (down)
-              _typeOidGam =
-                  _lhsIidGam
-              -- copy rule (from local)
-              _typeOisAsPred =
-                  _isAsPred
-              -- copy rule (down)
-              _typeOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _typeOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _typeOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _typeOtopInstanceNmL =
-                  _contextItopInstanceNmL
-              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
-                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
-              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
-                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-sem_Type_TupleConstructor :: Range ->
-                             Int ->
-                             T_Type
-sem_Type_TupleConstructor range_ arity_ =
-    (\ _lhsIdoGenVarWild
-       _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOconNm :: Name
-              _lhsOoperatorName :: MaybeName
-              _lhsOopChain :: (OpChain EH.TyExpr)
-              _lhsOmbRefConNm :: (Maybe Name)
-              _lhsOtyConIs :: TypeConFixedMeaning
-              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
-              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExpr)
-              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
-              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
-              _lhsOconNm =
-                  hsnUnknown
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
-              _lhsOoperatorName =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
-              _lhsOopChain =
-                  OpChain_Leaf _eh
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 261, column 9)
-              _eh =
-                  ehTupleConstructor range_ arity_ EH.TyExpr_Var (rngAntilift id)
-                      EH.TyExpr_Lam
-                      (\ps r ->                                                      r)
-                      (rngAntilift $ \row -> appCon1App hsnRec (rngLift range_ EH.TyExpr_Row row))
-                      EH.RowTyExpr_Ext EH.RowTyExpr_Empty
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
-              _ehMbAsPr =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
-              _ehMbAsPrL =
-                  [_ehMbAsPr]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
-              _ehMbAsTyPr =
-                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
-              _ehMbAsTyPrL =
-                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
-              _lhsOmbRefConNm =
-                  Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
-              _lhsOtyConIs =
-                  TyConIsOther
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
-              _lhsOehMbAsPrL =
-                  _ehMbAsPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
-              _lhsOehMbAsTyPrL =
-                  _ehMbAsTyPrL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (from local)
-              _lhsOehMbAsPr =
-                  _ehMbAsPr
-              -- copy rule (from local)
-              _lhsOehMbAsTyPr =
-                  _ehMbAsTyPr
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
--- TypeAnnotation ----------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.TyExprAnn
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Strict:
-         visit 0:
-            local ppWrap      : _
-            local eh          : _
-      alternative AnnotationName:
-         child name           : {Name}
-         visit 0:
-            local eh          : _
-      alternative AnnotationVar:
-         child name           : {Name}
-         child var            : {Name}
-         visit 0:
-            local eh          : _
--}
--- cata
-sem_TypeAnnotation :: TypeAnnotation ->
-                      T_TypeAnnotation
-sem_TypeAnnotation (TypeAnnotation_Strict) =
-    (sem_TypeAnnotation_Strict)
-sem_TypeAnnotation (TypeAnnotation_AnnotationName _name) =
-    (sem_TypeAnnotation_AnnotationName _name)
-sem_TypeAnnotation (TypeAnnotation_AnnotationVar _name _var) =
-    (sem_TypeAnnotation_AnnotationVar _name _var)
--- semantic domain
-type T_TypeAnnotation = FixityGam ->
-                        UID ->
-                        IdDefOccGam ->
-                        NmLev ->
-                        EHCOpts ->
-                        PatchEhNmInInstance ->
-                        ([HsName]) ->
-                        ( (EH.TyExprAnn),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_TypeAnnotation_Strict :: T_TypeAnnotation
-sem_TypeAnnotation_Strict =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExprAnn)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 376, column 9)
-              _ppWrap =
-                  \t -> "!" >|< t
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 887, column 9)
-              _eh =
-                  EH.TyExprAnn_Strictness (Strictness_Strict)
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _ppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_TypeAnnotation_AnnotationName :: Name ->
-                                     T_TypeAnnotation
-sem_TypeAnnotation_AnnotationName name_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExprAnn)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 889, column 9)
-              _eh =
-                  case show name_ of
-                    "strict"    ->  EH.TyExprAnn_Strictness (Strictness_Strict)
-                    "nonStrict" ->  EH.TyExprAnn_Strictness (Strictness_NonStrict)
-                    _           -> EH.TyExprAnn_Empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_TypeAnnotation_AnnotationVar :: Name ->
-                                    Name ->
-                                    T_TypeAnnotation
-sem_TypeAnnotation_AnnotationVar name_ var_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOeh :: (EH.TyExprAnn)
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 894, column 9)
-              _eh =
-                  case show name_ of
-                    "strictness" -> EH.TyExprAnn_Strictness (Strictness_Var var_)
-                    _            -> EH.TyExprAnn_Empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (from local)
-              _lhsOeh =
-                  _eh
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
--- TypeLeftHandSide --------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.TyVar]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idDefOccGam          : IdDefOccGam
-         idOccDefs            : [IdOcc]
-         idUseOccGam          : IdUseOccGam
-         name                 : Name
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         range                : Range
-         typevariables        : Names
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Function:
-         child range          : {Range}
-         child name           : {Name}
-         child patterns       : TypePatterns 
-         visit 0:
-            local pp          : _
-      alternative Infix:
-         child range          : {Range}
-         child leftPattern    : TypePattern 
-         child operator       : {Name}
-         child rightPattern   : TypePattern 
-         visit 0:
-            local pp          : _
-      alternative Parenthesized:
-         child range          : {Range}
-         child lefthandside   : TypeLeftHandSide 
-         child patterns       : TypePatterns 
-         visit 0:
-            local pp          : _
--}
--- cata
-sem_TypeLeftHandSide :: TypeLeftHandSide ->
-                        T_TypeLeftHandSide
-sem_TypeLeftHandSide (TypeLeftHandSide_Function _range _name _patterns) =
-    (sem_TypeLeftHandSide_Function _range _name (sem_TypePatterns _patterns))
-sem_TypeLeftHandSide (TypeLeftHandSide_Infix _range _leftPattern _operator _rightPattern) =
-    (sem_TypeLeftHandSide_Infix _range (sem_TypePattern _leftPattern) _operator (sem_TypePattern _rightPattern))
-sem_TypeLeftHandSide (TypeLeftHandSide_Parenthesized _range _lefthandside _patterns) =
-    (sem_TypeLeftHandSide_Parenthesized _range (sem_TypeLeftHandSide _lefthandside) (sem_TypePatterns _patterns))
--- semantic domain
-type T_TypeLeftHandSide = FixityGam ->
-                          UID ->
-                          IdDefOccGam ->
-                          HsName ->
-                          NmLev ->
-                          EHCOpts ->
-                          PatchEhNmInInstance ->
-                          ([HsName]) ->
-                          ( ([EH.TyVar]),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,Name,PP_Doc,(PP_Doc -> PP_Doc),Range,([HsName]),Names,IdUseOccGam)
-sem_TypeLeftHandSide_Function :: Range ->
-                                 Name ->
-                                 T_TypePatterns ->
-                                 T_TypeLeftHandSide
-sem_TypeLeftHandSide_Function range_ name_ patterns_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOrange :: Range
-              _lhsOname :: Name
-              _lhsOeh :: ([EH.TyVar])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtypevariables :: Names
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _patternsIeh :: ([EH.TyVar])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsItypevariables :: Names
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 205, column 9)
-              _lhsOrange =
-                  range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 205, column 9)
-              _lhsOname =
-                  name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 333, column 9)
-              _pp =
-                  name_ >#< ppSpaces _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 773, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.TyVar_Var name_ : _patternsIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _patternsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _patternsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
-              _lhsOtypevariables =
-                  _patternsItypevariables
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _patternsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _patternsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItypevariables,_patternsIundefOccGam) =
-                  patterns_ _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
-sem_TypeLeftHandSide_Infix :: Range ->
-                              T_TypePattern ->
-                              Name ->
-                              T_TypePattern ->
-                              T_TypeLeftHandSide
-sem_TypeLeftHandSide_Infix range_ leftPattern_ operator_ rightPattern_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOrange :: Range
-              _lhsOname :: Name
-              _lhsOeh :: ([EH.TyVar])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtypevariables :: Names
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _leftPatternOgUniq :: UID
-              _leftPatternOidGam :: IdDefOccGam
-              _leftPatternOmoduleNm :: HsName
-              _leftPatternOnmLev :: NmLev
-              _leftPatternOopts :: EHCOpts
-              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _leftPatternOtopInstanceNmL :: ([HsName])
-              _rightPatternOgUniq :: UID
-              _rightPatternOidGam :: IdDefOccGam
-              _rightPatternOmoduleNm :: HsName
-              _rightPatternOnmLev :: NmLev
-              _rightPatternOopts :: EHCOpts
-              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
-              _rightPatternOtopInstanceNmL :: ([HsName])
-              _leftPatternIeh :: (EH.TyVar)
-              _leftPatternIerrSq :: ErrSq
-              _leftPatternIgUniq :: UID
-              _leftPatternIidUseOccGam :: IdUseOccGam
-              _leftPatternIpp :: PP_Doc
-              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
-              _leftPatternItopInstanceNmL :: ([HsName])
-              _leftPatternItypevariables :: Names
-              _leftPatternIundefOccGam :: IdUseOccGam
-              _rightPatternIeh :: (EH.TyVar)
-              _rightPatternIerrSq :: ErrSq
-              _rightPatternIgUniq :: UID
-              _rightPatternIidUseOccGam :: IdUseOccGam
-              _rightPatternIpp :: PP_Doc
-              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
-              _rightPatternItopInstanceNmL :: ([HsName])
-              _rightPatternItypevariables :: Names
-              _rightPatternIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 9)
-              _lhsOrange =
-                  range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 9)
-              _lhsOname =
-                  operator_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 335, column 9)
-              _pp =
-                  _leftPatternIpp >#< operator_ >#< _rightPatternIpp
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 775, column 9)
-              _lhsOeh =
-                  [ rngLift range_ EH.TyVar_Var operator_
-                  , _leftPatternIeh
-                  , _rightPatternIeh
-                  ]
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _leftPatternIerrSq `Seq.union` _rightPatternIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _leftPatternIidUseOccGam `gamAddGam` _rightPatternIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _leftPatternIppWrap . _rightPatternIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
-              _lhsOtypevariables =
-                  _leftPatternItypevariables ++ _rightPatternItypevariables
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _rightPatternIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _rightPatternItopInstanceNmL
-              -- copy rule (down)
-              _leftPatternOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _leftPatternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _leftPatternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _leftPatternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _leftPatternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _leftPatternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _leftPatternOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _rightPatternOgUniq =
-                  _leftPatternIgUniq
-              -- copy rule (down)
-              _rightPatternOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _rightPatternOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _rightPatternOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _rightPatternOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _rightPatternOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _rightPatternOtopInstanceNmL =
-                  _leftPatternItopInstanceNmL
-              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidUseOccGam,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternItypevariables,_leftPatternIundefOccGam) =
-                  leftPattern_ _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL
-              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidUseOccGam,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternItypevariables,_rightPatternIundefOccGam) =
-                  rightPattern_ _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
-sem_TypeLeftHandSide_Parenthesized :: Range ->
-                                      T_TypeLeftHandSide ->
-                                      T_TypePatterns ->
-                                      T_TypeLeftHandSide
-sem_TypeLeftHandSide_Parenthesized range_ lefthandside_ patterns_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOeh :: ([EH.TyVar])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidDefOccGam :: IdDefOccGam
-              _lhsOidOccDefs :: ([IdOcc])
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtypevariables :: Names
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOname :: Name
-              _lhsOrange :: Range
-              _lhsOtopInstanceNmL :: ([HsName])
-              _lefthandsideOfixityGam :: FixityGam
-              _lefthandsideOgUniq :: UID
-              _lefthandsideOidGam :: IdDefOccGam
-              _lefthandsideOmoduleNm :: HsName
-              _lefthandsideOnmLev :: NmLev
-              _lefthandsideOopts :: EHCOpts
-              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
-              _lefthandsideOtopInstanceNmL :: ([HsName])
-              _patternsOgUniq :: UID
-              _patternsOidGam :: IdDefOccGam
-              _patternsOmoduleNm :: HsName
-              _patternsOnmLev :: NmLev
-              _patternsOopts :: EHCOpts
-              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
-              _patternsOtopInstanceNmL :: ([HsName])
-              _lefthandsideIeh :: ([EH.TyVar])
-              _lefthandsideIerrSq :: ErrSq
-              _lefthandsideIfreeTvarS :: HsNameS
-              _lefthandsideIgUniq :: UID
-              _lefthandsideIidDefOccGam :: IdDefOccGam
-              _lefthandsideIidOccDefs :: ([IdOcc])
-              _lefthandsideIidUseOccGam :: IdUseOccGam
-              _lefthandsideIname :: Name
-              _lefthandsideIpp :: PP_Doc
-              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
-              _lefthandsideIrange :: Range
-              _lefthandsideItopInstanceNmL :: ([HsName])
-              _lefthandsideItypevariables :: Names
-              _lefthandsideIundefOccGam :: IdUseOccGam
-              _patternsIeh :: ([EH.TyVar])
-              _patternsIerrSq :: ErrSq
-              _patternsIgUniq :: UID
-              _patternsIidUseOccGam :: IdUseOccGam
-              _patternsIpp :: PP_Doc
-              _patternsIppL :: ([PP_Doc])
-              _patternsIppWrap :: (PP_Doc -> PP_Doc)
-              _patternsItopInstanceNmL :: ([HsName])
-              _patternsItypevariables :: Names
-              _patternsIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 337, column 9)
-              _pp =
-                  ppParens _lefthandsideIpp >#< ppSpaces _patternsIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 780, column 9)
-              _lhsOeh =
-                  _lefthandsideIeh ++ _patternsIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _lefthandsideIerrSq `Seq.union` _patternsIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _lefthandsideIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
-              _lhsOidDefOccGam =
-                  _lefthandsideIidDefOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
-              _lhsOidOccDefs =
-                  _lefthandsideIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _lefthandsideIidUseOccGam `gamAddGam` _patternsIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _lefthandsideIppWrap . _patternsIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
-              _lhsOtypevariables =
-                  _lefthandsideItypevariables ++ _patternsItypevariables
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _lefthandsideIundefOccGam `gamUnion` _patternsIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _patternsIgUniq
-              -- copy rule (up)
-              _lhsOname =
-                  _lefthandsideIname
-              -- copy rule (up)
-              _lhsOrange =
-                  _lefthandsideIrange
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _patternsItopInstanceNmL
-              -- copy rule (down)
-              _lefthandsideOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _lefthandsideOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _lefthandsideOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _lefthandsideOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _lefthandsideOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _lefthandsideOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _lefthandsideOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _lefthandsideOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _patternsOgUniq =
-                  _lefthandsideIgUniq
-              -- copy rule (down)
-              _patternsOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _patternsOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _patternsOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _patternsOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _patternsOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _patternsOtopInstanceNmL =
-                  _lefthandsideItopInstanceNmL
-              ( _lefthandsideIeh,_lefthandsideIerrSq,_lefthandsideIfreeTvarS,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIname,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrange,_lefthandsideItopInstanceNmL,_lefthandsideItypevariables,_lefthandsideIundefOccGam) =
-                  lefthandside_ _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOtopInstanceNmL
-              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItypevariables,_patternsIundefOccGam) =
-                  patterns_ _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
--- TypePattern -------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : EH.TyVar
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppWrap               : PP_Doc -> PP_Doc
-         typevariables        : Names
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Variable:
-         child range          : {Range}
-         child name           : {Name}
-         visit 0:
-            local refname     : _
-            local pp          : _
--}
--- cata
-sem_TypePattern :: TypePattern ->
-                   T_TypePattern
-sem_TypePattern (TypePattern_Variable _range _name) =
-    (sem_TypePattern_Variable _range _name)
--- semantic domain
-type T_TypePattern = UID ->
-                     IdDefOccGam ->
-                     HsName ->
-                     NmLev ->
-                     EHCOpts ->
-                     PatchEhNmInInstance ->
-                     ([HsName]) ->
-                     ( (EH.TyVar),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),Names,IdUseOccGam)
-sem_TypePattern_Variable :: Range ->
-                            Name ->
-                            T_TypePattern
-sem_TypePattern_Variable range_ name_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOtypevariables :: Names
-              _lhsOeh :: (EH.TyVar)
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 58, column 9)
-              _refname =
-                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 213, column 9)
-              _lhsOtypevariables =
-                  [name_]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 380, column 9)
-              _pp =
-                  pp name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 860, column 9)
-              _lhsOeh =
-                  rngLift range_ EH.TyVar_Var _refname
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _pp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
--- TypePatterns ------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         idGam                : IdDefOccGam
-         moduleNm             : HsName
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.TyVar]
-         errSq                : ErrSq
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         typevariables        : Names
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : TypePattern 
-         child tl             : TypePatterns 
-      alternative Nil:
--}
--- cata
-sem_TypePatterns :: TypePatterns ->
-                    T_TypePatterns
-sem_TypePatterns list =
-    (Prelude.foldr sem_TypePatterns_Cons sem_TypePatterns_Nil (Prelude.map sem_TypePattern list))
--- semantic domain
-type T_TypePatterns = UID ->
-                      IdDefOccGam ->
-                      HsName ->
-                      NmLev ->
-                      EHCOpts ->
-                      PatchEhNmInInstance ->
-                      ([HsName]) ->
-                      ( ([EH.TyVar]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),Names,IdUseOccGam)
-sem_TypePatterns_Cons :: T_TypePattern ->
-                         T_TypePatterns ->
-                         T_TypePatterns
-sem_TypePatterns_Cons hd_ tl_ =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.TyVar])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtypevariables :: Names
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOmoduleNm :: HsName
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOmoduleNm :: HsName
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIeh :: (EH.TyVar)
-              _hdIerrSq :: ErrSq
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdItypevariables :: Names
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.TyVar])
-              _tlIerrSq :: ErrSq
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlItypevariables :: Names
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 440, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 854, column 28)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
-              _lhsOtypevariables =
-                  _hdItypevariables ++ _tlItypevariables
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOmoduleNm =
-                  _lhsImoduleNm
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItypevariables,_hdIundefOccGam) =
-                  hd_ _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItypevariables,_tlIundefOccGam) =
-                  tl_ _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
-sem_TypePatterns_Nil :: T_TypePatterns
-sem_TypePatterns_Nil =
-    (\ _lhsIgUniq
-       _lhsIidGam
-       _lhsImoduleNm
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.TyVar])
-              _lhsOerrSq :: ErrSq
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOtypevariables :: Names
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 442, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 854, column 28)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
-              _lhsOtypevariables =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
--- Types -------------------------------------------------------
-{-
-   visit 0:
-      inherited attributes:
-         fixityGam            : FixityGam
-         idGam                : IdDefOccGam
-         isAsPred             : Bool
-         nmLev                : NmLev
-         opts                 : EHCOpts
-         patchEhNmInInstance  : PatchEhNmInInstance
-      chained attributes:
-         gUniq                : UID
-         topInstanceNmL       : [HsName]
-      synthesized attributes:
-         eh                   : [EH.TyExpr]
-         errSq                : ErrSq
-         freeTvarS            : HsNameS
-         idUseOccGam          : IdUseOccGam
-         pp                   : PP_Doc
-         ppL                  : [PP_Doc]
-         ppWrap               : PP_Doc -> PP_Doc
-         undefOccGam          : IdUseOccGam
-   alternatives:
-      alternative Cons:
-         child hd             : Type 
-         child tl             : Types 
-         visit 0:
-            local doGenVarWild : _
-      alternative Nil:
--}
--- cata
-sem_Types :: Types ->
-             T_Types
-sem_Types list =
-    (Prelude.foldr sem_Types_Cons sem_Types_Nil (Prelude.map sem_Type list))
--- semantic domain
-type T_Types = FixityGam ->
-               UID ->
-               IdDefOccGam ->
-               Bool ->
-               NmLev ->
-               EHCOpts ->
-               PatchEhNmInInstance ->
-               ([HsName]) ->
-               ( ([EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
-sem_Types_Cons :: T_Type ->
-                  T_Types ->
-                  T_Types
-sem_Types_Cons hd_ tl_ =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              _hdOdoGenVarWild :: Bool
-              _hdOfixityGam :: FixityGam
-              _hdOgUniq :: UID
-              _hdOidGam :: IdDefOccGam
-              _hdOisAsPred :: Bool
-              _hdOnmLev :: NmLev
-              _hdOopts :: EHCOpts
-              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
-              _hdOtopInstanceNmL :: ([HsName])
-              _tlOfixityGam :: FixityGam
-              _tlOgUniq :: UID
-              _tlOidGam :: IdDefOccGam
-              _tlOisAsPred :: Bool
-              _tlOnmLev :: NmLev
-              _tlOopts :: EHCOpts
-              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
-              _tlOtopInstanceNmL :: ([HsName])
-              _hdIconNm :: Name
-              _hdIeh :: (EH.TyExpr)
-              _hdIehMbAsPr :: (Maybe EH.PrExpr)
-              _hdIehMbAsPrL :: ([Maybe EH.PrExpr])
-              _hdIehMbAsTyPr :: (Maybe EH.TyExpr)
-              _hdIehMbAsTyPrL :: ([Maybe EH.TyExpr])
-              _hdIerrSq :: ErrSq
-              _hdIfreeTvarS :: HsNameS
-              _hdIgUniq :: UID
-              _hdIidUseOccGam :: IdUseOccGam
-              _hdImbRefConNm :: (Maybe Name)
-              _hdIopChain :: (OpChain EH.TyExpr)
-              _hdIoperatorName :: MaybeName
-              _hdIpp :: PP_Doc
-              _hdIppWrap :: (PP_Doc -> PP_Doc)
-              _hdItopInstanceNmL :: ([HsName])
-              _hdItyConIs :: TypeConFixedMeaning
-              _hdIundefOccGam :: IdUseOccGam
-              _tlIeh :: ([EH.TyExpr])
-              _tlIerrSq :: ErrSq
-              _tlIfreeTvarS :: HsNameS
-              _tlIgUniq :: UID
-              _tlIidUseOccGam :: IdUseOccGam
-              _tlIpp :: PP_Doc
-              _tlIppL :: ([PP_Doc])
-              _tlIppWrap :: (PP_Doc -> PP_Doc)
-              _tlItopInstanceNmL :: ([HsName])
-              _tlIundefOccGam :: IdUseOccGam
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 414, column 9)
-              _lhsOppL =
-                  _hdIpp : _tlIppL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 210, column 9)
-              _doGenVarWild =
-                  False
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 197, column 21)
-              _lhsOeh =
-                  _hdIeh : _tlIeh
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  _hdIerrSq `Seq.union` _tlIerrSq
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  _hdIpp >-< _tlIpp
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  _hdIppWrap . _tlIppWrap
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
-              -- copy rule (up)
-              _lhsOgUniq =
-                  _tlIgUniq
-              -- copy rule (up)
-              _lhsOtopInstanceNmL =
-                  _tlItopInstanceNmL
-              -- copy rule (from local)
-              _hdOdoGenVarWild =
-                  _doGenVarWild
-              -- copy rule (down)
-              _hdOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (down)
-              _hdOgUniq =
-                  _lhsIgUniq
-              -- copy rule (down)
-              _hdOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _hdOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _hdOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _hdOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _hdOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (down)
-              _hdOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-              -- copy rule (down)
-              _tlOfixityGam =
-                  _lhsIfixityGam
-              -- copy rule (chain)
-              _tlOgUniq =
-                  _hdIgUniq
-              -- copy rule (down)
-              _tlOidGam =
-                  _lhsIidGam
-              -- copy rule (down)
-              _tlOisAsPred =
-                  _lhsIisAsPred
-              -- copy rule (down)
-              _tlOnmLev =
-                  _lhsInmLev
-              -- copy rule (down)
-              _tlOopts =
-                  _lhsIopts
-              -- copy rule (down)
-              _tlOpatchEhNmInInstance =
-                  _lhsIpatchEhNmInInstance
-              -- copy rule (chain)
-              _tlOtopInstanceNmL =
-                  _hdItopInstanceNmL
-              ( _hdIconNm,_hdIeh,_hdIehMbAsPr,_hdIehMbAsPrL,_hdIehMbAsTyPr,_hdIehMbAsTyPrL,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdImbRefConNm,_hdIopChain,_hdIoperatorName,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItyConIs,_hdIundefOccGam) =
-                  hd_ _hdOdoGenVarWild _hdOfixityGam _hdOgUniq _hdOidGam _hdOisAsPred _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
-              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
-                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisAsPred _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-sem_Types_Nil :: T_Types
-sem_Types_Nil =
-    (\ _lhsIfixityGam
-       _lhsIgUniq
-       _lhsIidGam
-       _lhsIisAsPred
-       _lhsInmLev
-       _lhsIopts
-       _lhsIpatchEhNmInInstance
-       _lhsItopInstanceNmL ->
-         (let _lhsOppL :: ([PP_Doc])
-              _lhsOeh :: ([EH.TyExpr])
-              _lhsOerrSq :: ErrSq
-              _lhsOfreeTvarS :: HsNameS
-              _lhsOidUseOccGam :: IdUseOccGam
-              _lhsOpp :: PP_Doc
-              _lhsOppWrap :: (PP_Doc -> PP_Doc)
-              _lhsOundefOccGam :: IdUseOccGam
-              _lhsOgUniq :: UID
-              _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 416, column 9)
-              _lhsOppL =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 197, column 21)
-              _lhsOeh =
-                  []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
-              _lhsOerrSq =
-                  Seq.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
-              _lhsOfreeTvarS =
-                  Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
-              _lhsOidUseOccGam =
-                  emptyGam
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
-              _lhsOpp =
-                  empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
-              _lhsOppWrap =
-                  const empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
-              _lhsOundefOccGam =
-                  emptyGam
-              -- copy rule (chain)
-              _lhsOgUniq =
-                  _lhsIgUniq
-              -- copy rule (chain)
-              _lhsOtopInstanceNmL =
-                  _lhsItopInstanceNmL
-          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag)
+module UHC.Light.Compiler.HS.MainAG(Inh_AGItf (..), Syn_AGItf (..), sem_AGItf, wrap_AGItf
+, tyGam2IdDefOccGam, kiGam2IdDefOccGam
+, clGam2IdDefOccGam) where
+
+import UHC.Light.Compiler.Base.Common
+import UHC.Light.Compiler.Base.TermLike
+import UHC.Light.Compiler.Base.HsName.Builtin
+import UHC.Light.Compiler.Opts
+import UHC.Light.Compiler.Gam.Full
+import UHC.Light.Compiler.Error
+import UHC.Light.Compiler.Error.Pretty
+import UHC.Light.Compiler.HS
+import UHC.Light.Compiler.NameAspect
+import Data.Char
+import Data.Maybe
+import Data.List as List
+import qualified Data.Map as Map
+import UHC.Light.Compiler.Base.UnderDev
+import qualified UHC.Util.FastSeq as Seq
+import UHC.Util.Utils
+import UHC.Util.Pretty
+import UHC.Util.DependencyGraph
+import qualified UHC.Light.Compiler.EH as EH
+import UHC.Light.Compiler.Base.Trace
+import qualified Data.Set as Set
+import UHC.Light.Compiler.Ty (tyQu_Forall,tyQu_Exists)
+import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Gam.ClGam
+import qualified UHC.Util.Rel as Rel
+import UHC.Light.Compiler.Module.ImportExport
+import UHC.Light.Compiler.Foreign
+import UHC.Light.Compiler.Foreign.Parser
+import Data.Ratio
+import UHC.Light.Compiler.Scanner.Common(floatDenot2NomDenom,intDenot2Integer)
+import qualified UHC.Light.Compiler.Base.Pragma as Pragma
+
+
+-- | A name is used/occurs in a non plain context when their defs are to participate in the analysis on the same level as the context they occur in
+data NameDeclCxt
+  = NameDeclCxt_Plain
+  | NameDeclCxt_Instance
+  | NameDeclCxt_Class
+  deriving Eq
+
+
+
+doccForUse ::Maybe IdDefOcc -> IdIsDef
+doccForUse md
+  = case md of
+      Just d  -> IdIsDef (doccLev d)
+      Nothing -> IdIsNotDef
+
+
+
+mkBuiltinIdDefOcc :: HsName -> IdOccKind -> (IdOcc,IdDefOcc)
+mkBuiltinIdDefOcc n k
+  = (o,emptyIdDefOcc {doccOcc = o, doccLev = nmLevBuiltin, doccRange = builtinRange})
+  where o = IdOcc n k
+
+tyGam2IdDefOccGam :: TyGam -> IdDefOccGam
+tyGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Type)
+
+kiGam2IdDefOccGam :: KiGam -> IdDefOccGam
+kiGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Kind)
+
+clGam2IdDefOccGam :: ClGam -> IdDefOccGam
+clGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Class)
+
+
+
+data IdIsDef
+  = IdIsDef             { idIsDefLev :: NmLev }
+  | IdIsNotDef
+  | IdIsInWrongModule   IdOcc
+  deriving (Show)
+
+idIsDef :: IdIsDef -> Bool
+idIsDef (IdIsDef _) = True
+idIsDef _           = False
+
+instance PP IdIsDef where
+  pp (IdIsDef _)            = pp "Def'd"
+  pp IdIsNotDef             = pp "Undef'd"
+  pp (IdIsInWrongModule o)  = "Wrong" >#< o
+
+
+
+data IdUseOcc
+  = IdUseOcc
+      { uoccOcc     :: IdOcc
+      , uoccAsp     :: IdAspect
+      , uoccRange   :: Range
+      , uoccIsDef   :: IdIsDef
+      }
+  deriving (Show)
+
+instance PP IdUseOcc where
+  pp o = uoccOcc o >|< "/" >|< uoccIsDef o
+
+type IdUseOccGam = Gam    IdOcc  IdUseOcc
+type IdUseOccAsc = AssocL IdOcc [IdUseOcc]
+
+
+
+splitIdUseOccGam' :: Bool -> Int -> IdUseOccGam -> (IdUseOccGam, IdUseOccAsc, IdUseOccAsc, IdUseOccGam)
+splitIdUseOccGam' delayHere level g
+  = (assocDupLToGam o,h,i,assocDupLToGam e)
+  where -- minLev = minimum levels
+        -- maxLev = maximum levels
+        (o,h,i,e)
+          = foldr
+              (\x@(k,occs) (o,h,i,e)
+                 -> case partition (idIsDef . uoccIsDef) occs of
+                      (occ:_,[]) ->
+{-
+                          if      defLev < minLev then    (x:o,  h,  i,  e)
+                          else if defLev > maxLev then    (  o,  h,x:i,  e)
+                                                  else    (  o,x:h,  i,  e)
+-}
+                          case compare defLev level of
+                            LT             -> (x:o,  h,  i,  e)
+                            EQ | delayHere -> (x:o,  h,  i,  e)
+                               | otherwise -> (  o,x:h,  i,  e)
+                            GT             -> (  o,  h,x:i,  e)
+                        where defLev = idIsDefLev $ uoccIsDef $ occ
+                      (_,(_:_))  ->         (  o,  h,  i,x:e)
+              )
+              ([],[],[],[])
+              (gamToAssocDupL g)
+
+splitIdUseOccGam :: Int -> IdUseOccGam -> (IdUseOccGam, IdUseOccAsc, IdUseOccAsc, IdUseOccGam)
+splitIdUseOccGam level g = splitIdUseOccGam' False level g
+{-
+  = (assocDupLToGam o,h,i,assocDupLToGam e)
+  where (o,h,i,e)
+          = foldr
+              (\x@(k,occs) (o,h,i,e)
+                 -> case partition (idIsDef . uoccIsDef) occs of
+                      (occ:_,[]) -> case compare (idIsDefLev $ uoccIsDef $ occ) level of
+                                      LT -> (x:o,  h,  i,  e)
+                                      EQ -> (  o,x:h,  i,  e)
+                                      GT -> (  o,  h,x:i,  e)
+                      (_,(_:_))  ->         (  o,  h,  i,x:e)
+              )
+              ([],[],[],[])
+              (gamToAssocDupL g)
+-}
+
+
+
+mkDefOccGam'' :: NmLev -> Range -> (x -> IdOcc -> IdAspect) -> AssocL x IdOcc -> IdDefOccGam
+mkDefOccGam'' l r mka os
+  = assocLToGamWithDups [ (o,mkIdDefOcc o (mka x o) l r) | (x,o) <- os ]
+
+mkDefOccGam' :: NmLev -> Range -> (IdOcc -> IdAspect) -> [IdOcc] -> IdDefOccGam
+mkDefOccGam' l r mka os
+  = mkDefOccGam'' l r (\_ -> mka) (zip (repeat undefined) os)
+{-# INLINE mkDefOccGam' #-}
+
+mkDefOccGam :: NmLev -> Range -> IdAspect -> [IdOcc] -> IdDefOccGam
+mkDefOccGam l r a os
+  = mkDefOccGam' l r (const a) os
+{-# INLINE mkDefOccGam #-}
+
+
+
+varL2IdDefOccGam :: IdOccKind -> IdAspect -> NmLev -> Range -> [HsName] -> IdDefOccGam
+varL2IdDefOccGam k a l r ns
+  = mkDefOccGam l r a [ IdOcc n k | n <- ns ]
+
+tvarL2IdDefOccGam :: NmLev -> Range -> [HsName] -> IdDefOccGam
+tvarL2IdDefOccGam
+  = varL2IdDefOccGam IdOcc_Type IdAsp_Type_Var
+
+varS2IdDefOccGam :: IdOccKind -> IdAspect -> NmLev -> Range -> HsNameS -> IdDefOccGam
+varS2IdDefOccGam k a l r ns
+  = varL2IdDefOccGam k a l r (Set.toList ns)
+
+tvarS2IdDefOccGam :: NmLev -> Range -> HsNameS -> IdDefOccGam
+tvarS2IdDefOccGam
+  = varS2IdDefOccGam IdOcc_Type IdAsp_Type_Var
+
+
+
+kvarL2IdDefOccGam :: NmLev -> Range -> [HsName] -> IdDefOccGam
+kvarL2IdDefOccGam
+  = varL2IdDefOccGam IdOcc_Kind IdAsp_Kind_Var
+
+kvarS2IdDefOccGam :: NmLev -> Range -> HsNameS -> IdDefOccGam
+kvarS2IdDefOccGam
+  = varS2IdDefOccGam IdOcc_Kind IdAsp_Kind_Var
+
+
+
+-- | Get the names used by the literals
+-- Note: don't change the order in returned lists, only append new values, as position is assumed to be fixed
+litNames :: EHCOpts -> Literal -> Bool -> Int -> [([HsName],IdOccKind,IdAspect)]
+litNames opts lit isPat sign
+  = case lit of
+      Literal_String r s   -> mk' (if isPat then IdAsp_Val_Con else IdAsp_Val_Var) [hsnDataListAltCons,hsnDataListAltNil]
+                              ++ (if ehcOptOverloadedStrings opts then mk [hsnDataStringFromString] else [])
+      Literal_Int    _ _ _
+        | sign < 0         -> mk [hsnFromInteger,hsnNegate]
+        | otherwise        -> mk [hsnFromInteger]
+      Literal_Float  _ _
+        | sign < 0         -> mk [hsnMkRatio,hsnFromRational,hsnNegate]
+        | otherwise        -> mk [hsnMkRatio,hsnFromRational]
+      _                    -> []
+  where mk' a ns = [(ns,IdOcc_Val,a)]
+        mk = mk' IdAsp_Val_Var
+
+
+
+mkUseOccGam :: EHCOpts -> IdDefOccGam -> [HsName] -> IdOccKind -> IdAspect -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
+mkUseOccGam opts idGam names kind asp rng = mkUseOccGam' opts idGam [(names,kind,asp)] rng
+
+
+
+-- | Variation which uses default aspects for IdOccKind
+mkUseOccGamDfltAsp :: EHCOpts -> IdDefOccGam -> [(HsName,IdOccKind)] -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
+mkUseOccGamDfltAsp opts idGam nmKs rng = mkUseOccGam' opts idGam [ ([n], k, fromMaybe IdAsp_Any $ mbUseAspOfIdOccKind k) | (n,k) <- nmKs ] rng
+
+
+
+mkUseOccGam' :: EHCOpts -> IdDefOccGam -> [([HsName],IdOccKind,IdAspect)] -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
+mkUseOccGam' _ _ [] _
+  = (hsnUnknown,[],emptyGam,[])
+mkUseOccGam' opts idGam names rng
+  = (if null ns then hsnUnknown else n, ns, gamUnions g, concat e)
+  where (ns@(~(n:_)),g,e) = unzip3 [ mkUse idGam n kind asp rng | (ns,kind,asp) <- names, n <- ns ]
+        mkUse idGam name kind asp rng
+          = (nmOfDef,idUseOccGam,errs)
+          where idOccUse    = IdOcc name kind
+                mbDef       = -- (\v -> tr "XX" (idOccUse >#< ">>>>>" >#< v) v) $
+                              case gamLookup idOccUse idGam of
+                                Nothing | hsnIsInPrelude name
+                                            -> if ehcOptUseAssumePrelude opts
+                                               then Just (emptyIdDefOcc {doccOcc = idOccUse})
+                                               else gamLookup (idOccUse {ioccNm = hsnQualified $ ioccNm idOccUse}) idGam
+                                md          -> md
+                nmOfDef     = case mbDef of
+                                Just d -> ioccNm $ doccOcc d
+                                _      -> name
+                occOfDef    = idOccUse {ioccNm = nmOfDef}
+                idUseOccGam = gamSingleton occOfDef (IdUseOcc occOfDef asp rng (doccForUse mbDef))
+                errs        = case mbDef of
+                                Just d | Set.size (doccNmAlts d) > 1
+                                  -> [rngLift rng Err_AmbiguousNameRef "name" k name (Set.toList $ doccNmAlts d)]
+                                  where k = (show $ ioccKind $ doccOcc d) ++ " (" ++ (showPP $ pp $ doccAsp d) ++ ")"
+                                _ -> []
+
+
+
+type IdDpdMp = Map.Map IdOcc [IdOcc]
+
+emptyIdDpdMp :: IdDpdMp
+emptyIdDpdMp = Map.empty
+
+idDpdMpList :: IdOcc -> [IdOcc] -> IdDpdMp
+idDpdMpList f t = Map.singleton f t
+
+idDpdMpSingleton :: IdOcc -> IdOcc -> IdDpdMp
+idDpdMpSingleton f t = idDpdMpList f [t]
+
+idDpdMpUnions :: [IdDpdMp] -> IdDpdMp
+idDpdMpUnions = Map.unionsWith (++)
+
+idDpdMpUnion :: IdDpdMp -> IdDpdMp -> IdDpdMp
+idDpdMpUnion = Map.unionWith (++)
+
+idToOccL2DpdMp :: [IdOcc] -> AssocL IdOcc x -> IdDpdMp
+idToOccL2DpdMp fs l
+  = if null ts then Map.empty else idDpdMpUnions [ idDpdMpList f ts | f <- fs ]
+  where ts = assocLKeys l
+
+idToOccGam2DpdMp :: [IdOcc] -> Gam IdOcc x -> IdDpdMp
+idToOccGam2DpdMp fs l
+  = idToOccL2DpdMp fs (gamToAssocL l)
+
+-- | Dpd mp where 'g' dpds on 'ts'
+idFrOccGam2DpdMp :: Gam IdOcc x -> [IdOcc] -> IdDpdMp
+idFrOccGam2DpdMp g ts
+  = if null ts then Map.empty else idDpdMpUnions [ idDpdMpList f ts | (f,_) <- gamToAssocL g ]
+
+
+
+idDpdMp2SccOrder' :: IdDefOccGam -> IdDpdMp -> ([[IdOcc]],IdDpdMp)
+idDpdMp2SccOrder' gam mp
+  = (dgSCCToList gr, dpmp)
+  where dflt = idDpdMpUnions [ idDpdMpSingleton o o | o <- gamKeys gam ] `Map.difference` mp
+        dpmp = idDpdMpUnions [mp,dflt]
+        gr   = mkDpdGrFromEdgesMp dpmp
+
+idDpdMp2SccOrder :: IdDefOccGam -> IdDpdMp -> [[IdOcc]]
+idDpdMp2SccOrder gam mp = fst $ idDpdMp2SccOrder' gam mp
+
+
+
+mkIdDefEH :: IdDefOcc -> [EH.Decl]
+mkIdDefEH def
+  = case doccAsp def of
+      IdAsp_Val_Pat decl
+        -> [decl]
+      IdAsp_Val_Sig decl
+        -> [decl]
+      IdAsp_Val_Fun lhs rhs _
+        -> [decl]
+        where (h,t) = hdAndTl lhs
+              decl  = rngLift (doccRange def) EH.Decl_Val h (foldr (rngLift (doccRange def) EH.Expr_Lam) rhs t)
+      IdAsp_Type_Def decl
+        -> [decl]
+      IdAsp_Type_Sig decl
+        -> [decl]
+      IdAsp_Val_Foreign decl
+        -> [decl]
+      IdAsp_Class_Def decl declInst
+        -> [decl,declInst]
+      IdAsp_Inst_Def decl _
+        -> [decl]
+      IdAsp_Dflt_Def decl ignore | not ignore
+        -> [decl]
+      IdAsp_Val_Fusion decl
+        -> [decl]
+      IdAsp_Fusion_Conv decl
+        -> [decl]
+      _ -> []
+
+
+
+mergeFunDefL :: Range -> [IdDefOcc] -> ([IdDefOcc],[Err])
+mergeFunDefL _ ds
+  = case ds of
+      [_] -> (ds,[])
+      (od : _ : _) | iaspIsFun (doccAsp od)
+          -> ([d],e)
+          where (IdAsp_Val_Fun (patf:pats1) _ uniq) = doccAsp od
+                xSz   = length pats1
+                xNmL  = [ mkHNm ("x" ++ show i) | i <- [1..xSz] ]
+                xPatL = map (rngLift r EH.PatExpr_Var) xNmL
+                b = EH.mkCase'
+                      r (appRngProdOpt r $ map (rngLift r EH.Expr_Var) $ xNmL)
+                      (Just $ Set.fromList $ map (iaspUniq . doccAsp) ds)
+                      Set.empty
+                      (length xNmL > 1)
+                    $ zipWith (EH.mkAlt r)
+                       [ appRngProdOpt r $ tail $ iaspPatL $ doccAsp d | d <- ds ]
+                       [ iaspBody $ doccAsp $ d | d <- ds ]
+                d = mkIdDefOcc (doccOcc od) (IdAsp_Val_Fun (patf:xPatL) b uniq) 0 r
+                e | length patLens > 1 = [rngLift r Err_FunPatternLengths (ioccNm $ doccOcc od)]
+                  | otherwise          = []
+                  where patLens = Set.toList $ Set.fromList [ length $ iaspPatL $ doccAsp d | d <- ds ]
+                r = rangeUnions [ doccRange d | d <- ds ]
+      _   -> ([],[])
+
+
+
+splitOff :: EHCOpts -> [IdDefOcc] -> [[IdDefOcc]]
+splitOff opts
+  = foldr (\df dfs -> zipWith (++) (s df) dfs) (repeat [])
+  where s d = case doccAsp d of
+                (IdAsp_Inst_Def  _ _)
+                  | not (ehcOptIsUnderDev UnderDev_NameAnalysis opts)
+                    -> [[],[d]]
+                _   -> [[d],[]]
+
+
+
+idOcc2Defs :: IdDefOccGam -> IdOcc -> [IdDefOcc]
+idOcc2Defs idDefOccGam occ = maybe [] id $ gamLookupDup occ idDefOccGam
+
+mkIdOccEH :: Range -> [IdDefOcc] -> ([EH.Decl],[Err])
+mkIdOccEH r defs
+  = case defs of
+      (_:_)
+        -> (concatMap mkIdDefEH (otherDefs ++ funDef),errL)
+        where (funDefs,otherDefs) = partition (iaspIsFun . doccAsp) defs
+              (funDef,errL) = mergeFunDefL r funDefs
+      _ -> ([],[])
+
+
+
+idDefOccs2Decls :: Range -> [[IdDefOcc]] -> ([[EH.Decl]],[Err])
+idDefOccs2Decls r docss
+  = ([concat ds], concat es)
+  where (ds,es) = unzip $ map (mkIdOccEH r) $ docss
+
+
+
+mkIdOccSccEH :: EHCOpts -> Range -> Bool -> IdDefOccGam -> Maybe [[IdOcc]] -> (EH.Expr -> EH.Expr,[[EH.Decl]],[Err])
+mkIdOccSccEH opts r isStrict g moss
+  = (m . mkLet (concat sds), d ++ sds, e ++ ses)
+  where (m,d,e) = foldr mkl (id,[],[]) doss
+        mkl dos (mke,d,e)
+          = ((\e -> foldr mkLet e dss) . mke,dss ++ d, es ++ e)
+          where (dss,es) = idDefOccs2Decls r dos
+        mkLet ds = EH.mkLet' isStrict r (Just ds)
+        (sds,ses) = idDefOccs2Decls r $ concat $ spls
+        (doss:spls:_)
+          = collapse
+              [ collapse [ splitOff opts $ idOcc2Defs g $ l | l <- ll ]
+              | ll <- maybe [gamKeys g] id moss
+              ]
+        collapse :: [[a]] -> [[a]]
+        collapse = foldr (zipWith (:)) (repeat [])
+
+
+
+type PatchEhNmInInstance = HsName -> HsName
+
+
+
+idDupCheckInfo :: AssocL IdOccKind (AssocL String (IdAspect -> Bool))
+idDupCheckInfo
+  = [ ( IdOcc_Val
+      , [ ( "type signature"    , iaspIsValSig )
+        , ( "value"             , (\a -> iaspIsValVar a
+                                         || iaspIsFun a
+                                         || iaspIsValFld a
+                                         || iaspIsValForeign a
+          )                       )
+        , ( "operator fixity"   , iaspIsValFix )
+        , ( "data constructor"  , iaspIsValCon )
+        ]
+      )
+    , ( IdOcc_Type
+      , [ ( "type variable"     , iaspIsTypeVar )
+        , ( "type"              , iaspIsTypeDef )
+        , ( "kind signature"    , iaspIsTypeSig )
+        ]
+      )
+    , ( IdOcc_Class
+      , [ ( "class"             , iaspIsClassDef )
+        ]
+      )
+    ]
+
+
+
+idDefOccGamCheckDupNames :: IdDefOccGam -> [Err]
+idDefOccGamCheckDupNames g
+  = case dups of
+      [] -> []
+      es -> map mk es
+         where mk (info,ds@((_,Just ((r,_):_)):_)) = rngLift r Err_NamesDupIntrod info ds
+  where dups
+          = Map.toList
+            $  Map.unionsWith (++)
+            $  [ Map.singleton info [(n,Just [(doccRange d, Just $ pp $ doccAsp d) | d <- defs])]
+               | (IdOcc {ioccKind=k, ioccNm=n},ds) <- gamToAssocDupL g
+               , check <- maybeToList $ lookup k idDupCheckInfo
+               , (info,defs) <- filter (\(_,x) -> length x > 1)
+                                $ assocLMapElt (\c -> filter (\d -> c (doccAsp d)) $ collapse ds) check
+               ]
+        -- Functions and data fields are allowed to have duplicate entries, so they are collapsed into 1.
+        -- For data fields under the provision that the type to which they belong is the same, but the constructor not (another weird language complexity check)
+        collapse ds
+          =    take 1 funs
+            ++ (map head $ filter (\l -> length l > 0) $ map concat flds1PerCon)
+            ++ (concat $ concat fldsManyPerCon)
+            ++ others2
+          where (funs,others1) = partition (iaspIsFun . doccAsp) ds
+                (flds,others2) = partition (iaspIsValFld . doccAsp) others1
+                fldsGrouped = map (groupOn (iaspConNm . doccAsp)) $ groupOn (iaspDataNm . doccAsp) flds
+                (flds1PerCon,fldsManyPerCon) = unzip $ map (partition (\l -> length l == 1)) $ fldsGrouped
+
+
+
+ppInstNm :: Bool -> Maybe HsName -> PP_Doc
+ppInstNm useimplicitly maybeinstancename
+  = maybe empty (\n -> " " >|< n >#< (if useimplicitly then "<:" else "::")) maybeinstancename
+
+
+
+data OpChain leaf
+  = OpChain_Op   leaf PP_Doc Fixity Int Range (OpChain leaf) (OpChain leaf)
+  | OpChain_Leaf leaf
+
+opChainReArrange :: OpChain e -> (OpChain e,[Err])
+opChainReArrange opChain
+  = case opChain of
+      OpChain_Op op1 pp1 f1 p1 pos1 l1 r1
+        -> case opChainReArrange r1 of
+             (OpChain_Op op2 pp2 f2 p2 pos2 l2 r2,rerr)
+               | p1  > p2 -> (lvariant,lerr)
+               | p1  < p2 -> (rvariant,rerr)
+               | p1 == p2 -> case (f1,f2,lvariant,rvariant) of
+                               (Fixity_Infixr,Fixity_Infixr,_,r) -> (r,rerr)
+                               (Fixity_Infixl,Fixity_Infixl,l,_) -> (l,lerr)
+                               (Fixity_Infix ,_            ,l,_) -> (l,[rngLift pos2 Err_Fixity pp1 pp2] ++ lerr)
+               where (lrearr,lerr) = opChainReArrange (OpChain_Op op1 pp1 f1 p1 pos1 l1 l2)
+                     lvariant = OpChain_Op op2 pp2 f2 p2 pos2 lrearr r2
+                     rvariant = OpChain_Op op1 pp1 f1 p1 pos1 l1 (OpChain_Op op2 pp2 f2 p2 pos2 l2 r2)
+             (r1l@(OpChain_Leaf _),rerr) -> (OpChain_Op op1 pp1 f1 p1 pos1 l1 r1l,rerr)
+      _ -> (opChain,[])
+
+unOpChain :: AppLike a boundmeta => OpChain a -> a
+unOpChain opChain
+  = un opChain
+  where un ch
+          = case ch of
+              OpChain_Op op _ _ _ rng l r
+                -> appRngParApp rng [op,un l,un r]
+              OpChain_Leaf leaf
+                -> leaf
+
+
+
+ehSection :: AppLike eh bound
+  => UID -> Range
+  -> RngLiftArg (HsName -> eh)
+  -> RngLiftArg (HsName -> ehp)
+  -> RngLiftArg (ehp -> eh -> eh)
+  -> Maybe eh -> eh -> Maybe eh
+  -> eh
+ehSection uniq range semvar sempatvar semlam left op right
+  = case (left,right) of
+      -- (Just l ,Just r ) -> appRngParApp range [op,l,r]
+      (Nothing,Just r ) -> rngLift range semlam np (appRngParApp range [op,ne,r])
+      (Just l ,Nothing) -> appRngParApp range [op,l]
+      (Nothing,Nothing) -> op
+  where n  = mkHNmHidden $ mkHNm ("x_" ++ show uniq)
+        ne = rngLift range semvar n
+        np = rngLift range sempatvar n
+
+
+
+ehTupleConstructor
+  :: AppLike eh bound
+     => Range -> Int -> RngLiftArg (HsName -> eh) -> RngLiftArg (HsName -> ehp) -> RngLiftArg (ehp -> eh -> eh)
+     -> ([ehp] -> eh -> eh) -> RngLiftArg (r -> eh) -> RngLiftArg (r -> Maybe HsName -> eh -> r) -> RngLiftArg r
+     -> eh
+ehTupleConstructor range arity semvar sempatvar semlam
+        semtop semrecd semrecdext semrecdempty
+  = foldr (rngLift range semlam) recd ps
+  where ns     = take arity hsnLclSupply
+        ps     = map (rngLift range sempatvar) ns
+        recd   = mkt (map (rngLift range semvar) ns)
+        mkt ns = semtop ps
+                 $ rngLift range semrecd
+                 $ foldl (\r e -> rngLift range semrecdext r Nothing e)
+                         (rngLift range semrecdempty)
+                         ns
+
+
+
+ehTyExprArg :: EH.TyExpr -> EH.TyExpr
+ehTyExprArg = snd . panicJust "HS.ToEH.ehTyExprArg" . appMbApp1 . fst . appUnTop
+
+
+
+
+
+ehPlainDataField :: Range -> EH.TyExpr -> EH.DataField
+ehPlainDataField r
+  = rngLift r EH.DataField_Field Nothing
+
+
+
+ehExpLitInt :: Range -> Int -> String -> Int -> [HsName] -> (EH.Expr,Maybe SrcConst)
+ehExpLitInt r b s sign litrefnames
+  | sign < 0  = mk (\e -> ehExpVarApp r (litrefnames !! 1) [e], negate)
+  | otherwise = mk (id                                        , id    )
+  where i = intDenot2Integer b s
+        mk (neg,negconst)
+          = (neg $ ehExpVarApp r (litrefnames !! 0) [rngLift r EH.Expr_IIConst i], Just $ SrcConst_Int $ negconst i)
+
+ehExpLitFloat :: Range -> String -> Int -> [HsName] -> (EH.Expr,Maybe SrcConst)
+ehExpLitFloat r s sign litrefnames
+  | sign < 0  = mk (\e -> ehExpVarApp r (litrefnames !! 2) [e], \(n,d) -> (negate n, d))
+  | otherwise = mk (id                                        , id                     )
+  where nd@(n,d) = floatDenot2NomDenom s
+        mk (neg,negconst)
+          = ( neg $ ehExpVarApp r (litrefnames !! 1)
+                  $ [rngLift r EH.Expr_Parens $ ehExpVarApp r (litrefnames !! 0) [rngLift r EH.Expr_IIConst n,rngLift r EH.Expr_IIConst d]]
+            , Just $ uncurry SrcConst_Ratio $ negconst nd
+            )
+
+
+
+ehExpLitString :: EHCOpts -> Range -> String -> [HsName] -> (EH.Expr,Maybe SrcConst)
+ehExpLitString opts r str litrefnames
+  | ehcOptOverloadedStrings opts = (ehExpVarApp r (litrefnames !! 2) [s], Nothing)
+  | otherwise                    = (s                                   , Nothing)
+  where s = rngLift r EH.Expr_SConst str
+
+
+
+ehExpApp' :: (EH.Expr -> a -> EH.Expr) -> Range -> EH.Expr -> [a] -> EH.Expr
+ehExpApp' app r f as
+  = rngLift r EH.Expr_AppTop
+    $ foldl app (ehExpUnTop f) as
+
+ehExpConApp :: Range -> HsName -> [EH.Expr] -> EH.Expr
+ehExpConApp r n as
+  = appRngParApp r (rngLift r EH.Expr_Con n : as)
+
+ehExpVarApp :: Range -> HsName -> [EH.Expr] -> EH.Expr
+ehExpVarApp r n as
+  = appRngParApp r (rngLift r EH.Expr_Var n : as)
+
+ehExpUnTop :: EH.Expr -> EH.Expr
+ehExpUnTop (EH.Expr_AppTop _ e) = e
+ehExpUnTop e                    = e
+
+
+
+ehExpProd :: Range -> [EH.Expr] -> EH.Expr
+ehExpProd r as
+  = ehExpConApp r (hsnProd a) as
+  where a = length as
+
+
+
+-- original with mono restriction
+ehGenerator :: Range -> EH.PatExpr -> (EH.Expr -> EH.Expr) -> EH.Expr -> EH.Expr -> EH.Expr
+ehGenerator r p mkRes fail e
+  = EH.mkLet r
+      (Just
+         [ {- -} rngLift r EH.Decl_TySig ok ([mono] `appArr` appTopApp1 mono mono)
+         ,
+           rngLift r EH.Decl_Val
+             (rngLift r EH.PatExpr_Var ok)
+             (rngLift r EH.Expr_Lam
+               (rngLift r EH.PatExpr_Var x)
+               (EH.mkCase r
+                 (rngLift r EH.Expr_Var x)
+                 [(p,e),(rngLift r EH.PatExpr_Var hsnWild,fail)]
+             ) )
+{-
+         , rngLift r EH.Decl_TySig res mono
+         , rngLift r EH.Decl_Val
+             (rngLift r EH.PatExpr_Var res)
+             (mkRes (rngLift r EH.Expr_Var ok))
+-}
+         ])
+      (mkRes (rngLift r EH.Expr_Var ok))
+      -- (rngLift r EH.Expr_Var res)
+  where ok   = mkHNmHidden "ok"
+        res  = mkHNmHidden "ok_app"
+        x    = mkHNmHidden "x"
+        mono = rngLift r EH.TyExpr_Mono
+
+
+
+ehRowRecExprUpd :: Range -> nm -> (EH.RecExpr -> nm -> EH.Expr -> EH.RecExpr) -> EH.Expr -> EH.Expr -> EH.Expr
+ehRowRecExprUpd rng nm mk updE recE
+  = case recE of
+      EH.Expr_Rec _ r
+        -> mkUpd  r
+      _ -> mkUpd (r2e recE)
+  where r2e     = rngLift rng EH.RecExpr_Expr
+        mkUpd r = rngLift rng EH.Expr_Rec (mk r nm updE)
+
+ehRowRecPatExprUpd :: Range -> nm -> (EH.RecPatExpr -> nm -> EH.PatExpr -> EH.RecPatExpr) -> EH.PatExpr -> EH.PatExpr -> EH.PatExpr
+ehRowRecPatExprUpd rng nm mk updE recE
+  = case recE of
+      EH.PatExpr_Rec _ r
+        -> mkUpd  r
+      _ -> mkUpd (r2e recE)
+  where r2e     = rngLift rng EH.RecPatExpr_Expr
+        mkUpd r = rngLift rng EH.PatExpr_Rec (mk r nm updE)
+
+
+
+ehRowRowTyExprUpd :: Range -> nm -> (EH.RowTyExpr -> nm -> EH.TyExpr -> EH.RowTyExpr) -> EH.TyExpr -> EH.TyExpr -> EH.TyExpr
+ehRowRowTyExprUpd rng nm mk updE recE
+  = case recE of
+      EH.TyExpr_Row _ r
+        -> mkUpd  r
+      EH.TyExpr_Var _ v
+        -> mkUpd (rngLift rng EH.RowTyExpr_Var v)
+      _ -> mkUpd (rngLift rng EH.RowTyExpr_Empty)
+  where mkUpd r = rngLift rng EH.TyExpr_Row (mk r nm updE)
+
+
+
+-- | enforce monomorphism
+ehMkEnforceMono :: Range -> Bool -> EH.Expr -> EH.Expr
+ehMkEnforceMono r True e = rngLift r EH.Expr_TypeAs False (rngLift r EH.TyExpr_Mono) e
+ehMkEnforceMono _ _    e =                                                     e
+
+
+
+ehPatConApp r n as
+  = rngLift r EH.PatExpr_AppTop
+    $ foldl (rngLift r EH.PatExpr_App) (rngLift r EH.PatExpr_Con n) as
+
+
+
+ehPatProd :: Range -> [EH.PatExpr] -> EH.PatExpr
+ehPatProd r as
+  = ehPatConApp r (hsnProd a) as
+  where a = length as
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+deriving instance Typeable Syn_AGItf
+
+
+
+data TypeConFixedMeaning
+  = TyConIsOther
+  | TyConIsPrArrow
+  | TyConIsEqTilde
+  deriving Eq
+
+
+
+extrTopInstanceNm :: [HsName] -> (Maybe HsName,[HsName])
+extrTopInstanceNm nms
+  = case nms of
+      (n:t) -> (Just n,t)
+      _     -> (Nothing,[])
+
+-- AGItf -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         gUniq                : UID
+         idGam                : IdDefOccGam
+         isTopMod             : Bool
+         modEntToOrig         : ModEntRngMp
+         modInScope           : ModEntDomMp
+         moduleNm             : HsName
+         opts                 : EHCOpts
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.AGItf
+         errSq                : ErrSq
+         fileHeaderPragmas    : Set.Set Pragma.Pragma
+         gathFixityGam        : FixityGam
+         gathIdGam            : IdDefOccGam
+         mainValExists        : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+   alternatives:
+      alternative AGItf:
+         child module         : Module 
+         visit 0:
+            local tr          : _
+            local patchEhNmInInstance : _
+            local nmLev       : _
+            local ppExtra     : _
+            local isMainMod   : _
+-}
+-- cata
+sem_AGItf :: AGItf ->
+             T_AGItf
+sem_AGItf (AGItf_AGItf _module) =
+    (sem_AGItf_AGItf (sem_Module _module))
+-- semantic domain
+type T_AGItf = FixityGam ->
+               UID ->
+               IdDefOccGam ->
+               Bool ->
+               ModEntRngMp ->
+               ModEntDomMp ->
+               HsName ->
+               EHCOpts ->
+               ([HsName]) ->
+               ( (EH.AGItf),ErrSq,(Set.Set Pragma.Pragma),FixityGam,IdDefOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),TrPP)
+data Inh_AGItf = Inh_AGItf {fixityGam_Inh_AGItf :: !(FixityGam),gUniq_Inh_AGItf :: !(UID),idGam_Inh_AGItf :: !(IdDefOccGam),isTopMod_Inh_AGItf :: !(Bool),modEntToOrig_Inh_AGItf :: !(ModEntRngMp),modInScope_Inh_AGItf :: !(ModEntDomMp),moduleNm_Inh_AGItf :: !(HsName),opts_Inh_AGItf :: !(EHCOpts),topInstanceNmL_Inh_AGItf :: !(([HsName]))}
+data Syn_AGItf = Syn_AGItf {eh_Syn_AGItf :: !((EH.AGItf)),errSq_Syn_AGItf :: !(ErrSq),fileHeaderPragmas_Syn_AGItf :: !((Set.Set Pragma.Pragma)),gathFixityGam_Syn_AGItf :: !(FixityGam),gathIdGam_Syn_AGItf :: !(IdDefOccGam),mainValExists_Syn_AGItf :: !(Bool),pp_Syn_AGItf :: !(PP_Doc),ppWrap_Syn_AGItf :: !((PP_Doc -> PP_Doc)),trpp_Syn_AGItf :: !(TrPP)}
+wrap_AGItf :: T_AGItf ->
+              Inh_AGItf ->
+              Syn_AGItf
+wrap_AGItf sem (Inh_AGItf _lhsIfixityGam _lhsIgUniq _lhsIidGam _lhsIisTopMod _lhsImodEntToOrig _lhsImodInScope _lhsImoduleNm _lhsIopts _lhsItopInstanceNmL) =
+    (let ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtrpp) = sem _lhsIfixityGam _lhsIgUniq _lhsIidGam _lhsIisTopMod _lhsImodEntToOrig _lhsImodInScope _lhsImoduleNm _lhsIopts _lhsItopInstanceNmL
+     in  (Syn_AGItf _lhsOeh _lhsOerrSq _lhsOfileHeaderPragmas _lhsOgathFixityGam _lhsOgathIdGam _lhsOmainValExists _lhsOpp _lhsOppWrap _lhsOtrpp))
+sem_AGItf_AGItf :: T_Module ->
+                   T_AGItf
+sem_AGItf_AGItf module_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisTopMod
+       _lhsImodEntToOrig
+       _lhsImodInScope
+       _lhsImoduleNm
+       _lhsIopts
+       _lhsItopInstanceNmL ->
+         (let _lhsOpp :: PP_Doc
+              _lhsOeh :: (EH.AGItf)
+              _lhsOerrSq :: ErrSq
+              _lhsOfileHeaderPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgathIdGam :: IdDefOccGam
+              _lhsOmainValExists :: Bool
+              _moduleOfixityGam :: FixityGam
+              _moduleOgUniq :: UID
+              _moduleOidGam :: IdDefOccGam
+              _moduleOisMainMod :: Bool
+              _moduleOisTopMod :: Bool
+              _moduleOmodEntToOrig :: ModEntRngMp
+              _moduleOmodInScope :: ModEntDomMp
+              _moduleOmoduleNm :: HsName
+              _moduleOnmLev :: NmLev
+              _moduleOopts :: EHCOpts
+              _moduleOpatchEhNmInInstance :: PatchEhNmInInstance
+              _moduleOtopInstanceNmL :: ([HsName])
+              _moduleOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _moduleIeh :: (EH.Expr)
+              _moduleIerrSq :: ErrSq
+              _moduleIfileHeaderPragmas :: (Set.Set Pragma.Pragma)
+              _moduleIgUniq :: UID
+              _moduleIgathFixityGam :: FixityGam
+              _moduleIgathIdGam :: IdDefOccGam
+              _moduleIidUseOccGam :: IdUseOccGam
+              _moduleImainValExists :: Bool
+              _moduleIpp :: PP_Doc
+              _moduleIppWrap :: (PP_Doc -> PP_Doc)
+              _moduleItopInstanceNmL :: ([HsName])
+              _moduleItrpp :: TrPP
+              _moduleIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 7, column 9)
+              _tr =
+                  trPP (`Set.member` ehcOptTraceOn _lhsIopts)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1252, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 13, column 9)
+              _nmLev =
+                  nmLevModule
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 14, column 17)
+              _lhsOpp =
+                  _ppExtra >-< _moduleIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 15, column 17)
+              _ppExtra =
+                  empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 5, column 9)
+              _lhsOeh =
+                  EH.AGItf_AGItf _moduleIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 259, column 9)
+              _isMainMod =
+                  _moduleImainValExists
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _moduleIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
+              _lhsOfileHeaderPragmas =
+                  _moduleIfileHeaderPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _moduleIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _moduleIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _moduleItrpp
+              -- copy rule (up)
+              _lhsOgathIdGam =
+                  _moduleIgathIdGam
+              -- copy rule (up)
+              _lhsOmainValExists =
+                  _moduleImainValExists
+              -- copy rule (down)
+              _moduleOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _moduleOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _moduleOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _moduleOisMainMod =
+                  _isMainMod
+              -- copy rule (down)
+              _moduleOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _moduleOmodEntToOrig =
+                  _lhsImodEntToOrig
+              -- copy rule (down)
+              _moduleOmodInScope =
+                  _lhsImodInScope
+              -- copy rule (down)
+              _moduleOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _moduleOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _moduleOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _moduleOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _moduleOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (from local)
+              _moduleOtr =
+                  _tr
+              ( _moduleIeh,_moduleIerrSq,_moduleIfileHeaderPragmas,_moduleIgUniq,_moduleIgathFixityGam,_moduleIgathIdGam,_moduleIidUseOccGam,_moduleImainValExists,_moduleIpp,_moduleIppWrap,_moduleItopInstanceNmL,_moduleItrpp,_moduleIundefOccGam) =
+                  module_ _moduleOfixityGam _moduleOgUniq _moduleOidGam _moduleOisMainMod _moduleOisTopMod _moduleOmodEntToOrig _moduleOmodInScope _moduleOmoduleNm _moduleOnmLev _moduleOopts _moduleOpatchEhNmInInstance _moduleOtopInstanceNmL _moduleOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtrpp)))
+-- Alternative -------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.CaseAlt]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Alternative:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child righthandside  : RightHandSide 
+         visit 0:
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+      alternative Empty:
+         child range          : {Range}
+-}
+-- cata
+sem_Alternative :: Alternative ->
+                   T_Alternative
+sem_Alternative (Alternative_Alternative _range _pattern _righthandside) =
+    (sem_Alternative_Alternative _range (sem_Pattern _pattern) (sem_RightHandSide _righthandside))
+sem_Alternative (Alternative_Empty _range) =
+    (sem_Alternative_Empty _range)
+-- semantic domain
+type T_Alternative = UID ->
+                     FixityGam ->
+                     UID ->
+                     (Map.Map HsName [(HsName,HsName)]) ->
+                     IdDefOccGam ->
+                     HsName ->
+                     NmLev ->
+                     EHCOpts ->
+                     PatchEhNmInInstance ->
+                     (Set.Set Pragma.Pragma) ->
+                     ([HsName]) ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
+                     ( ([EH.CaseAlt]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Alternative_Alternative :: Range ->
+                               T_Pattern ->
+                               T_RightHandSide ->
+                               T_Alternative
+sem_Alternative_Alternative range_ pattern_ righthandside_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _righthandsideOidGam :: IdDefOccGam
+              _righthandsideOsepPP :: PP_Doc
+              _lhsOeh :: ([EH.CaseAlt])
+              _righthandsideOmustBeMono :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _righthandsideOcaseId :: UID
+              _righthandsideOfixityGam :: FixityGam
+              _righthandsideOgUniq :: UID
+              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _righthandsideOmoduleNm :: HsName
+              _righthandsideOnmLev :: NmLev
+              _righthandsideOopts :: EHCOpts
+              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
+              _righthandsideOtopInstanceNmL :: ([HsName])
+              _righthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _righthandsideIeh :: (EH.Expr)
+              _righthandsideIerrSq :: ErrSq
+              _righthandsideIgUniq :: UID
+              _righthandsideIidUseOccGam :: IdUseOccGam
+              _righthandsideIpp :: PP_Doc
+              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _righthandsideItopInstanceNmL :: ([HsName])
+              _righthandsideItrpp :: TrPP
+              _righthandsideIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 465, column 9)
+              _righthandsideOidGam =
+                  gamUnion _patternIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 73, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 121, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _patternIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 94, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, _patternIerrSq, _righthandsideIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 275, column 9)
+              _pp =
+                  _patternIpp >#< _righthandsideIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 276, column 9)
+              _righthandsideOsepPP =
+                  pp "->"
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 626, column 9)
+              _lhsOeh =
+                  [EH.mkAlt range_ _patternIeh _righthandsideIeh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 289, column 9)
+              _righthandsideOmustBeMono =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam `gamAddGam` _righthandsideIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _righthandsideIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp >< _righthandsideItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam `gamUnion` _righthandsideIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _righthandsideIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _righthandsideItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _patternOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _righthandsideOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _righthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _righthandsideOgUniq =
+                  _patternIgUniq
+              -- copy rule (down)
+              _righthandsideOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _righthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _righthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _righthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _righthandsideOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _righthandsideOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _righthandsideOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _righthandsideOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideItrpp,_righthandsideIundefOccGam) =
+                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL _righthandsideOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Alternative_Empty :: Range ->
+                         T_Alternative
+sem_Alternative_Empty range_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.CaseAlt])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 628, column 9)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Alternatives ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.CaseAlt]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Alternative 
+         child tl             : Alternatives 
+      alternative Nil:
+-}
+-- cata
+sem_Alternatives :: Alternatives ->
+                    T_Alternatives
+sem_Alternatives list =
+    (Prelude.foldr sem_Alternatives_Cons sem_Alternatives_Nil (Prelude.map sem_Alternative list))
+-- semantic domain
+type T_Alternatives = UID ->
+                      FixityGam ->
+                      UID ->
+                      (Map.Map HsName [(HsName,HsName)]) ->
+                      IdDefOccGam ->
+                      HsName ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      (Set.Set Pragma.Pragma) ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( ([EH.CaseAlt]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Alternatives_Cons :: T_Alternative ->
+                         T_Alternatives ->
+                         T_Alternatives
+sem_Alternatives_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.CaseAlt])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: ([EH.CaseAlt])
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.CaseAlt])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 620, column 28)
+              _lhsOeh =
+                  _hdIeh ++ _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Alternatives_Nil :: T_Alternatives
+sem_Alternatives_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.CaseAlt])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 620, column 28)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Body --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         modEntToOrig         : ModEntRngMp
+         modInScope           : ModEntDomMp
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.Expr
+         errSq                : ErrSq
+         extraModImpL         : [ModImp]
+         gathFixityGam        : FixityGam
+         gathIdGam            : IdDefOccGam
+         idUseOccGam          : IdUseOccGam
+         mainValExists        : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Body:
+         child range          : {Range}
+         child importdeclarations : ImportDeclarations 
+         child declarations   : Declarations 
+         visit 0:
+            local trpp        : _
+            local nameDeclCxt : _
+            local idDefOccGamMain : _
+            local idGam       : _
+            local mainrefname : _
+            local mainrefnames : _
+            local idUseOccGamMain : _
+            local errIdUse    : _
+            local idUseHereOccL : _
+            local undefOccGamMain : _
+            local idDpdMp     : _
+            local mainValExists : _
+            local sccOrder    : _
+            local sccOrderDpdMp : _
+            local mkSccLet    : _
+            local errReorder  : _
+            local modAsMp     : _
+            local refmainname : _
+            local idOccDefMain : _
+            local extraModImpL : _
+            local errDupIntro : _
+            local ppExtra     : _
+            local ehMainDecl  : _
+            local ehMainSig   : _
+            local caseId      : _
+            local pragmas     : _
+-}
+-- cata
+sem_Body :: Body ->
+            T_Body
+sem_Body (Body_Body _range _importdeclarations _declarations) =
+    (sem_Body_Body _range (sem_ImportDeclarations _importdeclarations) (sem_Declarations _declarations))
+-- semantic domain
+type T_Body = FixityGam ->
+              UID ->
+              IdDefOccGam ->
+              Bool ->
+              Bool ->
+              ModEntRngMp ->
+              ModEntDomMp ->
+              HsName ->
+              NmLev ->
+              EHCOpts ->
+              PatchEhNmInInstance ->
+              (Set.Set Pragma.Pragma) ->
+              ([HsName]) ->
+              (TraceOn -> [PP_Doc] -> TrPP) ->
+              ( (EH.Expr),ErrSq,([ModImp]),UID,FixityGam,IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Body_Body :: Range ->
+                 T_ImportDeclarations ->
+                 T_Declarations ->
+                 T_Body
+sem_Body_Body range_ importdeclarations_ declarations_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImodEntToOrig
+       _lhsImodInScope
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _declarationsOfixityGam :: FixityGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgathIdGam :: IdDefOccGam
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOextraModImpL :: ([ModImp])
+              _lhsOgUniq :: UID
+              _lhsOmainValExists :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _importdeclarationsOfixityGam :: FixityGam
+              _importdeclarationsOgUniq :: UID
+              _importdeclarationsOidGam :: IdDefOccGam
+              _importdeclarationsOisMainMod :: Bool
+              _importdeclarationsOisTopMod :: Bool
+              _importdeclarationsOmoduleNm :: HsName
+              _importdeclarationsOnmLev :: NmLev
+              _importdeclarationsOopts :: EHCOpts
+              _importdeclarationsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _importdeclarationsOtopInstanceNmL :: ([HsName])
+              _importdeclarationsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _declarationsOcaseId :: UID
+              _declarationsOgUniq :: UID
+              _declarationsOidGam :: IdDefOccGam
+              _declarationsOmoduleNm :: HsName
+              _declarationsOnameDeclCxt :: NameDeclCxt
+              _declarationsOnmLev :: NmLev
+              _declarationsOopts :: EHCOpts
+              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
+              _declarationsOtopInstanceNmL :: ([HsName])
+              _declarationsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _importdeclarationsIerrSq :: ErrSq
+              _importdeclarationsIgUniq :: UID
+              _importdeclarationsIgathFixityGam :: FixityGam
+              _importdeclarationsIidUseOccGam :: IdUseOccGam
+              _importdeclarationsImodAsMp :: (Map.Map HsName HsName)
+              _importdeclarationsIpp :: PP_Doc
+              _importdeclarationsIppWrap :: (PP_Doc -> PP_Doc)
+              _importdeclarationsItopInstanceNmL :: ([HsName])
+              _importdeclarationsItrpp :: TrPP
+              _importdeclarationsIundefOccGam :: IdUseOccGam
+              _declarationsIeh :: ([EH.Decl])
+              _declarationsIerrSq :: ErrSq
+              _declarationsIgUniq :: UID
+              _declarationsIgathFixityGam :: FixityGam
+              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _declarationsIidDefOccGam :: IdDefOccGam
+              _declarationsIidDpdMp :: IdDpdMp
+              _declarationsIidInClassTySigDefOccGam :: IdDefOccGam
+              _declarationsIidInInstanceValDefOccGam :: IdDefOccGam
+              _declarationsIidOccDefs :: ([IdOcc])
+              _declarationsIidUseOccGam :: IdUseOccGam
+              _declarationsIneedsError :: Bool
+              _declarationsIpp :: PP_Doc
+              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
+              _declarationsItopInstanceNmL :: ([HsName])
+              _declarationsItrpp :: TrPP
+              _declarationsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 11, column 9)
+              _trpp =
+                  (_lhsItr TraceOn_HsDpd $ [pp "Body: sccOrderDpdMp"] ++ [ fr >|< ":" >#< vlist to | (fr,to) <- Map.toList _sccOrderDpdMp ])
+                  >< (_lhsItr TraceOn_HsScc $ [pp "Body: sccOrder"] ++ map (ppBracketsCommas) _sccOrder)
+                  >< _importdeclarationsItrpp
+                  >< _declarationsItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 25, column 9)
+              _nameDeclCxt =
+                  NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 5, column 9)
+              _declarationsOgenerDerivMp =
+                  let nm | ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts = id
+                         | otherwise                                        = hsnSetLevQual _lhsInmLev _lhsImoduleNm
+                  in  Map.unionsWith (++)
+                          [ Map.singleton clNm' [(             nm fldNm,nm dfltNm)]
+                          | (Pragma.Pragma_Derivable clNm fldNm dfltNm) <- Set.toList _pragmas
+                          , let clNm' = nm clNm
+                          ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 317, column 9)
+              _idDefOccGamMain =
+                  gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain (IdAsp_Val_Pat _ehMainDecl) _lhsInmLev range_)
+                  `gamUnion` gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain IdAsp_Val_Var _lhsInmLev range_)
+                  `gamUnion` gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain (IdAsp_Val_Sig _ehMainSig) _lhsInmLev range_)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
+              _idGam =
+                  let
+                      lkn :: (IdOcc -> Bool) -> HsName -> Maybe (HsName,[ModEnt])
+                      lkn isq n = case Map.lookup n
+                                       _lhsImodInScope of
+                                    Just es | not (null es')
+                                      -> Just (n,es')
+                                      where es' = [ e | e <- es, isq (mentIdOcc e) ]
+                                    _ -> Nothing
+                      lks :: Bool -> IdOcc -> [(HsName,[ModEnt])]
+                      lks allowRename o
+                                = ns1 ++ catMaybes ns2
+                                where (mq,n)    = hsnSplitQualify (ioccNm o)
+                                      (ns1,isq) = case mq of
+                                                    Just q  -> ( qres
+                                                               , (\o' -> maybe False (           `elem` qquals      ) (hsnQualifier (ioccNm o'))
+                                                                 )
+                                                               )
+                                                            where (qres,qquals)
+                                                                     = maybe ([],[q])
+                                                                             (\x@(_,es) -> ( [x]
+                                                                                           , q : extra es
+                                                                             )             )
+                                                                             (lkn (const True) (hsnPrefixQual (as q) n))
+                                                    Nothing -> ( [], const True )
+                                      ns2       = [lkn isq n]
+                                      extra | allowRename = \es -> catMaybes $ map (hsnQualifier . ioccNm . mentIdOcc) es
+                                            | otherwise   = const []
+                      as :: HsName -> HsName
+                      as n = Map.findWithDefault n n _modAsMp
+                      mkg sel g
+                         = foldr idDefOccGamUnion emptyGam
+                             [
+                                    gamSingleton (o {ioccNm = n}) (d {doccNmAlts = Set.fromList ns})
+                             | (o,d) <- gamToAssocL g
+                             , (n,es) <- sel o
+                             , let ns = [ ioccNm eo | e <- es, let eo = mentIdOcc e, ioccKind eo == ioccKind o ]
+                             ]
+                      gnew = mkg (lks False)
+                             _lhsIidGam
+                  in
+                      mkg (lks False) _declarationsIidDefOccGam `idDefOccGamUnion` gnew
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 738, column 29)
+              (_mainrefname,_mainrefnames,_idUseOccGamMain,_errIdUse) =
+                  mkUseOccGam _lhsIopts _idGam
+                    (  [hsnMain]
+                    ++ [hsnIO]
+                    ++ [hsnEhcRunMain]
+                    ++ (if _declarationsIneedsError then [hsnError] else [])
+                    )
+                    IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1010, column 29)
+              (_,_idUseHereOccL,_,_undefOccGamMain) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamMain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1015, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDefMain] ((IdOcc _mainrefname IdOcc_Val,undefined) : _idUseHereOccL)
+                  `idDpdMpUnion`
+                  idFrOccGam2DpdMp _idDefOccGamMain [_idOccDefMain]
+                  `idDpdMpUnion`
+                  _declarationsIidDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1020, column 9)
+              _lhsOundefOccGam =
+                  let g = if _lhsIisMainMod then _undefOccGamMain else emptyGam
+                  in  gamUnions [g,_declarationsIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1040, column 9)
+              _mainValExists =
+                  case gamLookupDup (IdOcc _refmainname IdOcc_Val) _declarationsIidDefOccGam of
+                    Nothing   -> False
+                    Just occs -> chk iaspIsValVar
+                                  where chk f = not $ null $ filter (f . doccAsp) occs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1069, column 29)
+              (_sccOrder,_sccOrderDpdMp) =
+                  idDpdMp2SccOrder' (_idDefOccGamMain `gamUnion` _declarationsIidDefOccGam) _idDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1200, column 29)
+              (_mkSccLet,_,_errReorder) =
+                  let g = if _lhsIisMainMod then _idDefOccGamMain else emptyGam
+                  in  mkIdOccSccEH _lhsIopts range_ False (g `gamUnion` _declarationsIidDefOccGam) (Just _sccOrder)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1240, column 9)
+              _modAsMp =
+                  _importdeclarationsImodAsMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 8, column 9)
+              _refmainname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm hsnMain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 186, column 9)
+              _idOccDefMain =
+                  IdOcc hsnMain IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 278, column 9)
+              _extraModImpL =
+                  if   ehcOptOverloadedStrings _lhsIopts
+                  then [ModImp True hsnModDataString hsnModDataString False [ModEntSpec (hsnQualified hsnDataStringFromString) range_ Nothing] range_]
+                  else []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 97, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 9, column 9)
+              _lhsOerrSq =
+                  Seq.firstNotEmpty [Seq.fromList _errDupIntro, Seq.fromList _errIdUse,Seq.fromList _errReorder, _declarationsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 7, column 9)
+              _lhsOpp =
+                  _importdeclarationsIpp >-<
+                  _declarationsIpp >-< _ppExtra
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 10, column 9)
+              _ppExtra =
+                  empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 22, column 9)
+              _declarationsOfixityGam =
+                  _declarationsIgathFixityGam `gamUnion` _lhsIfixityGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 51, column 9)
+              _lhsOeh =
+                  _mkSccLet (if _lhsIisMainMod then rngLift range_ EH.Expr_Var hsnMain
+                                               else rngLift range_ EH.Expr_IConst 0
+                            )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 57, column 9)
+              _ehMainDecl =
+                  rngLift range_ EH.Decl_Val
+                      (rngLift range_ EH.PatExpr_Var hsnMain)
+                      (appRngParApp range_ [rngLift range_ EH.Expr_Var (_mainrefnames !! 2),rngLift range_ EH.Expr_Var _mainrefname])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 57, column 9)
+              _ehMainSig =
+                  rngLift range_ EH.Decl_TySig
+                      hsnMain
+                      (appRngParApp range_ [rngLift range_ EH.TyExpr_Con (_mainrefnames !! 1),rngLift range_ EH.TyExpr_Wild])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 882, column 9)
+              _caseId =
+                  uidStart
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 100, column 9)
+              _lhsOgathIdGam =
+                  _declarationsIidDefOccGam
+                  `gamUnion`
+                  assocLToGam [ (o {ioccNm = hsnSetQual _lhsImoduleNm (ioccNm o)},d)
+                              | (o,d) <- gamToAssocL _lhsIidGam
+                              , n <- Map.findWithDefault [] o _lhsImodEntToOrig
+                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 320, column 9)
+              _pragmas =
+                  _declarationsIgathPragmas `Set.union` _lhsIpragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _importdeclarationsIgathFixityGam `gamAddGam` _declarationsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _importdeclarationsIidUseOccGam `gamAddGam` _declarationsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _importdeclarationsIppWrap . _declarationsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- copy rule (from local)
+              _lhsOextraModImpL =
+                  _extraModImpL
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _declarationsIgUniq
+              -- copy rule (from local)
+              _lhsOmainValExists =
+                  _mainValExists
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _declarationsItopInstanceNmL
+              -- copy rule (down)
+              _importdeclarationsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _importdeclarationsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _importdeclarationsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _importdeclarationsOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _importdeclarationsOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _importdeclarationsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _importdeclarationsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _importdeclarationsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _importdeclarationsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _importdeclarationsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _importdeclarationsOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _declarationsOcaseId =
+                  _caseId
+              -- copy rule (chain)
+              _declarationsOgUniq =
+                  _importdeclarationsIgUniq
+              -- copy rule (from local)
+              _declarationsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _declarationsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _declarationsOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (down)
+              _declarationsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _declarationsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _declarationsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (from local)
+              _declarationsOpragmas =
+                  _pragmas
+              -- copy rule (chain)
+              _declarationsOtopInstanceNmL =
+                  _importdeclarationsItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOtr =
+                  _lhsItr
+              ( _importdeclarationsIerrSq,_importdeclarationsIgUniq,_importdeclarationsIgathFixityGam,_importdeclarationsIidUseOccGam,_importdeclarationsImodAsMp,_importdeclarationsIpp,_importdeclarationsIppWrap,_importdeclarationsItopInstanceNmL,_importdeclarationsItrpp,_importdeclarationsIundefOccGam) =
+                  importdeclarations_ _importdeclarationsOfixityGam _importdeclarationsOgUniq _importdeclarationsOidGam _importdeclarationsOisMainMod _importdeclarationsOisTopMod _importdeclarationsOmoduleNm _importdeclarationsOnmLev _importdeclarationsOopts _importdeclarationsOpatchEhNmInInstance _importdeclarationsOtopInstanceNmL _importdeclarationsOtr
+              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidInClassTySigDefOccGam,_declarationsIidInInstanceValDefOccGam,_declarationsIidOccDefs,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsItrpp,_declarationsIundefOccGam) =
+                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnameDeclCxt _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL _declarationsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOextraModImpL,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOidUseOccGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Constructor -------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         conAndFldrefnames    : AssocL Name Names
+         conrefnames          : Names
+         eh                   : EH.DataConstr
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         hasFlds              : Bool
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Constructor:
+         child range          : {Range}
+         child constructor    : {Name}
+         child types          : Types 
+         visit 0:
+            local conrefname  : _
+            local nmLev       : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Infix:
+         child range          : {Range}
+         child leftType       : Type 
+         child constructorOperator : {Name}
+         child rightType      : Type 
+         visit 0:
+            local conrefname  : _
+            local nmLev       : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Record:
+         child range          : {Range}
+         child constructor    : {Name}
+         child fieldDeclarations : FieldDeclarations 
+         visit 0:
+            local conrefname  : _
+            local conAndFldrefnames : _
+            local pp          : _
+      alternative Contexted:
+         child range          : {Range}
+         child context        : ContextItems 
+         child constructor    : Constructor 
+         visit 0:
+            local pp          : _
+      alternative GADTFunction:
+         child range          : {Range}
+         child constructor    : {Name}
+         child type           : Type 
+         visit 0:
+            local conrefname  : _
+            local nmLev       : _
+            local pp          : _
+            local ehArgs      : _
+            local ehRes       : _
+            local isAsPred    : _
+            local doGenVarWild : _
+-}
+-- cata
+sem_Constructor :: Constructor ->
+                   T_Constructor
+sem_Constructor (Constructor_Constructor _range _constructor _types) =
+    (sem_Constructor_Constructor _range _constructor (sem_Types _types))
+sem_Constructor (Constructor_Infix _range _leftType _constructorOperator _rightType) =
+    (sem_Constructor_Infix _range (sem_Type _leftType) _constructorOperator (sem_Type _rightType))
+sem_Constructor (Constructor_Record _range _constructor _fieldDeclarations) =
+    (sem_Constructor_Record _range _constructor (sem_FieldDeclarations _fieldDeclarations))
+sem_Constructor (Constructor_Contexted _range _context _constructor) =
+    (sem_Constructor_Contexted _range (sem_ContextItems _context) (sem_Constructor _constructor))
+sem_Constructor (Constructor_GADTFunction _range _constructor _type) =
+    (sem_Constructor_GADTFunction _range _constructor (sem_Type _type))
+-- semantic domain
+type T_Constructor = FixityGam ->
+                     UID ->
+                     IdDefOccGam ->
+                     HsName ->
+                     NmLev ->
+                     EHCOpts ->
+                     PatchEhNmInInstance ->
+                     ([HsName]) ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
+                     ( (AssocL Name Names),Names,(EH.DataConstr),ErrSq,HsNameS,UID,Bool,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Constructor_Constructor :: Range ->
+                               Name ->
+                               T_Types ->
+                               T_Constructor
+sem_Constructor_Constructor range_ constructor_ types_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconrefnames :: Names
+              _lhsOeh :: (EH.DataConstr)
+              _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOhasFlds :: Bool
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typesOfixityGam :: FixityGam
+              _typesOgUniq :: UID
+              _typesOidGam :: IdDefOccGam
+              _typesOisAsPred :: Bool
+              _typesOnmLev :: NmLev
+              _typesOopts :: EHCOpts
+              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typesOtopInstanceNmL :: ([HsName])
+              _typesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typesIeh :: ([EH.TyExpr])
+              _typesIerrSq :: ErrSq
+              _typesIfreeTvarS :: HsNameS
+              _typesIgUniq :: UID
+              _typesIidUseOccGam :: IdUseOccGam
+              _typesIpp :: PP_Doc
+              _typesIppL :: ([PP_Doc])
+              _typesIppWrap :: (PP_Doc -> PP_Doc)
+              _typesItopInstanceNmL :: ([HsName])
+              _typesItrpp :: TrPP
+              _typesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
+              _conrefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 71, column 9)
+              _lhsOconrefnames =
+                  [_conrefname]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 178, column 9)
+              _pp =
+                  constructor_ >#< ppSpaces _typesIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 308, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.DataConstr_Constr _conrefname
+                          Nothing
+                          (map (ehPlainDataField emptyRange) _typesIeh)
+                          Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 185, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 238, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typesIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typesIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 35)
+              _lhsOhasFlds =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typesIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typesIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typesItopInstanceNmL
+              -- copy rule (down)
+              _typesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typesOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typesOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typesOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typesOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typesOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typesOtr =
+                  _lhsItr
+              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesItrpp,_typesIundefOccGam) =
+                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL _typesOtr
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Constructor_Infix :: Range ->
+                         T_Type ->
+                         Name ->
+                         T_Type ->
+                         T_Constructor
+sem_Constructor_Infix range_ leftType_ constructorOperator_ rightType_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconrefnames :: Names
+              _lhsOeh :: (EH.DataConstr)
+              _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOhasFlds :: Bool
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftTypeOdoGenVarWild :: Bool
+              _leftTypeOfixityGam :: FixityGam
+              _leftTypeOgUniq :: UID
+              _leftTypeOidGam :: IdDefOccGam
+              _leftTypeOisAsPred :: Bool
+              _leftTypeOnmLev :: NmLev
+              _leftTypeOopts :: EHCOpts
+              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftTypeOtopInstanceNmL :: ([HsName])
+              _leftTypeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightTypeOdoGenVarWild :: Bool
+              _rightTypeOfixityGam :: FixityGam
+              _rightTypeOgUniq :: UID
+              _rightTypeOidGam :: IdDefOccGam
+              _rightTypeOisAsPred :: Bool
+              _rightTypeOnmLev :: NmLev
+              _rightTypeOopts :: EHCOpts
+              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightTypeOtopInstanceNmL :: ([HsName])
+              _rightTypeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftTypeIconNm :: Name
+              _leftTypeIeh :: (EH.TyExpr)
+              _leftTypeIehMbAsPr :: (Maybe EH.PrExpr)
+              _leftTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _leftTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _leftTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _leftTypeIerrSq :: ErrSq
+              _leftTypeIfreeTvarS :: HsNameS
+              _leftTypeIgUniq :: UID
+              _leftTypeIidUseOccGam :: IdUseOccGam
+              _leftTypeImbRefConNm :: (Maybe Name)
+              _leftTypeIopChain :: (OpChain EH.TyExpr)
+              _leftTypeIoperatorName :: MaybeName
+              _leftTypeIpp :: PP_Doc
+              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
+              _leftTypeItopInstanceNmL :: ([HsName])
+              _leftTypeItrpp :: TrPP
+              _leftTypeItyConIs :: TypeConFixedMeaning
+              _leftTypeIundefOccGam :: IdUseOccGam
+              _rightTypeIconNm :: Name
+              _rightTypeIeh :: (EH.TyExpr)
+              _rightTypeIehMbAsPr :: (Maybe EH.PrExpr)
+              _rightTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _rightTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _rightTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _rightTypeIerrSq :: ErrSq
+              _rightTypeIfreeTvarS :: HsNameS
+              _rightTypeIgUniq :: UID
+              _rightTypeIidUseOccGam :: IdUseOccGam
+              _rightTypeImbRefConNm :: (Maybe Name)
+              _rightTypeIopChain :: (OpChain EH.TyExpr)
+              _rightTypeIoperatorName :: MaybeName
+              _rightTypeIpp :: PP_Doc
+              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
+              _rightTypeItopInstanceNmL :: ([HsName])
+              _rightTypeItrpp :: TrPP
+              _rightTypeItyConIs :: TypeConFixedMeaning
+              _rightTypeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 66, column 9)
+              _conrefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructorOperator_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 73, column 9)
+              _lhsOconrefnames =
+                  [_conrefname]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 180, column 9)
+              _pp =
+                  _leftTypeIpp >#< constructorOperator_ >#< _rightTypeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 320, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.DataConstr_Constr _conrefname
+                          (let fgi = fixityGamLookup _conrefname _lhsIfixityGam
+                            in Just (fgiPrio fgi, fgiFixity fgi)
+                          )
+                          (map (ehPlainDataField emptyRange) [_leftTypeIeh,_rightTypeIeh])
+                          Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 185, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 238, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftTypeIerrSq `Seq.union` _rightTypeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _leftTypeIfreeTvarS `Set.union` _rightTypeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 35)
+              _lhsOhasFlds =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftTypeIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftTypeIppWrap . _rightTypeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftTypeItrpp >< _rightTypeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftTypeIundefOccGam `gamUnion` _rightTypeIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightTypeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightTypeItopInstanceNmL
+              -- copy rule (from local)
+              _leftTypeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _leftTypeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftTypeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftTypeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _leftTypeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _leftTypeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _leftTypeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftTypeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftTypeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftTypeOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _rightTypeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _rightTypeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightTypeOgUniq =
+                  _leftTypeIgUniq
+              -- copy rule (down)
+              _rightTypeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _rightTypeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _rightTypeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _rightTypeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightTypeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rightTypeOtopInstanceNmL =
+                  _leftTypeItopInstanceNmL
+              -- copy rule (down)
+              _rightTypeOtr =
+                  _lhsItr
+              ( _leftTypeIconNm,_leftTypeIeh,_leftTypeIehMbAsPr,_leftTypeIehMbAsPrL,_leftTypeIehMbAsTyPr,_leftTypeIehMbAsTyPrL,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeImbRefConNm,_leftTypeIopChain,_leftTypeIoperatorName,_leftTypeIpp,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItrpp,_leftTypeItyConIs,_leftTypeIundefOccGam) =
+                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOisAsPred _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL _leftTypeOtr
+              ( _rightTypeIconNm,_rightTypeIeh,_rightTypeIehMbAsPr,_rightTypeIehMbAsPrL,_rightTypeIehMbAsTyPr,_rightTypeIehMbAsTyPrL,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeImbRefConNm,_rightTypeIopChain,_rightTypeIoperatorName,_rightTypeIpp,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItrpp,_rightTypeItyConIs,_rightTypeIundefOccGam) =
+                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOisAsPred _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL _rightTypeOtr
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Constructor_Record :: Range ->
+                          Name ->
+                          T_FieldDeclarations ->
+                          T_Constructor
+sem_Constructor_Record range_ constructor_ fieldDeclarations_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconrefnames :: Names
+              _lhsOeh :: (EH.DataConstr)
+              _lhsOhasFlds :: Bool
+              _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _fieldDeclarationsOfixityGam :: FixityGam
+              _fieldDeclarationsOgUniq :: UID
+              _fieldDeclarationsOidGam :: IdDefOccGam
+              _fieldDeclarationsOmoduleNm :: HsName
+              _fieldDeclarationsOnmLev :: NmLev
+              _fieldDeclarationsOopts :: EHCOpts
+              _fieldDeclarationsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _fieldDeclarationsOtopInstanceNmL :: ([HsName])
+              _fieldDeclarationsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _fieldDeclarationsIeh :: ([EH.DataField])
+              _fieldDeclarationsIerrSq :: ErrSq
+              _fieldDeclarationsIfldrefnames :: Names
+              _fieldDeclarationsIfreeTvarS :: HsNameS
+              _fieldDeclarationsIgUniq :: UID
+              _fieldDeclarationsIidUseOccGam :: IdUseOccGam
+              _fieldDeclarationsIpp :: PP_Doc
+              _fieldDeclarationsIppL :: ([PP_Doc])
+              _fieldDeclarationsIppWrap :: (PP_Doc -> PP_Doc)
+              _fieldDeclarationsItopInstanceNmL :: ([HsName])
+              _fieldDeclarationsItrpp :: TrPP
+              _fieldDeclarationsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
+              _conrefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 76, column 9)
+              _lhsOconrefnames =
+                  [_conrefname]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 87, column 9)
+              _conAndFldrefnames =
+                  [(_conrefname,_fieldDeclarationsIfldrefnames)]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 182, column 9)
+              _pp =
+                  constructor_ >#< ppCurlysCommas' _fieldDeclarationsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 328, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.DataConstr_Constr _conrefname
+                          Nothing
+                          _fieldDeclarationsIeh
+                          Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 252, column 9)
+              _lhsOhasFlds =
+                  True
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  _conAndFldrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _fieldDeclarationsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _fieldDeclarationsIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _fieldDeclarationsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _fieldDeclarationsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _fieldDeclarationsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _fieldDeclarationsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _fieldDeclarationsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _fieldDeclarationsItopInstanceNmL
+              -- copy rule (down)
+              _fieldDeclarationsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _fieldDeclarationsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _fieldDeclarationsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _fieldDeclarationsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _fieldDeclarationsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _fieldDeclarationsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _fieldDeclarationsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _fieldDeclarationsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _fieldDeclarationsOtr =
+                  _lhsItr
+              ( _fieldDeclarationsIeh,_fieldDeclarationsIerrSq,_fieldDeclarationsIfldrefnames,_fieldDeclarationsIfreeTvarS,_fieldDeclarationsIgUniq,_fieldDeclarationsIidUseOccGam,_fieldDeclarationsIpp,_fieldDeclarationsIppL,_fieldDeclarationsIppWrap,_fieldDeclarationsItopInstanceNmL,_fieldDeclarationsItrpp,_fieldDeclarationsIundefOccGam) =
+                  fieldDeclarations_ _fieldDeclarationsOfixityGam _fieldDeclarationsOgUniq _fieldDeclarationsOidGam _fieldDeclarationsOmoduleNm _fieldDeclarationsOnmLev _fieldDeclarationsOopts _fieldDeclarationsOpatchEhNmInInstance _fieldDeclarationsOtopInstanceNmL _fieldDeclarationsOtr
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Constructor_Contexted :: Range ->
+                             T_ContextItems ->
+                             T_Constructor ->
+                             T_Constructor
+sem_Constructor_Contexted range_ context_ constructor_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.DataConstr)
+              _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOconrefnames :: Names
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOhasFlds :: Bool
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _constructorOfixityGam :: FixityGam
+              _constructorOgUniq :: UID
+              _constructorOidGam :: IdDefOccGam
+              _constructorOmoduleNm :: HsName
+              _constructorOnmLev :: NmLev
+              _constructorOopts :: EHCOpts
+              _constructorOpatchEhNmInInstance :: PatchEhNmInInstance
+              _constructorOtopInstanceNmL :: ([HsName])
+              _constructorOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _constructorIconAndFldrefnames :: (AssocL Name Names)
+              _constructorIconrefnames :: Names
+              _constructorIeh :: (EH.DataConstr)
+              _constructorIerrSq :: ErrSq
+              _constructorIfreeTvarS :: HsNameS
+              _constructorIgUniq :: UID
+              _constructorIhasFlds :: Bool
+              _constructorIidUseOccGam :: IdUseOccGam
+              _constructorIpp :: PP_Doc
+              _constructorIppWrap :: (PP_Doc -> PP_Doc)
+              _constructorItopInstanceNmL :: ([HsName])
+              _constructorItrpp :: TrPP
+              _constructorIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 184, column 17)
+              _pp =
+                  _contextIpp >#< "=>" >#< _constructorIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 333, column 17)
+              _lhsOeh =
+                  _constructorIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  _constructorIconAndFldrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
+              _lhsOconrefnames =
+                  _constructorIconrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _contextIerrSq `Seq.union` _constructorIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _contextIfreeTvarS `Set.union` _constructorIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 35)
+              _lhsOhasFlds =
+                  _constructorIhasFlds
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _contextIidUseOccGam `gamAddGam` _constructorIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _constructorIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _contextItrpp >< _constructorItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _contextIundefOccGam `gamUnion` _constructorIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _constructorIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _constructorItopInstanceNmL
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _contextOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _contextOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _contextOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _contextOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _constructorOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _constructorOgUniq =
+                  _contextIgUniq
+              -- copy rule (down)
+              _constructorOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _constructorOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _constructorOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _constructorOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _constructorOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _constructorOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _constructorOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _constructorIconAndFldrefnames,_constructorIconrefnames,_constructorIeh,_constructorIerrSq,_constructorIfreeTvarS,_constructorIgUniq,_constructorIhasFlds,_constructorIidUseOccGam,_constructorIpp,_constructorIppWrap,_constructorItopInstanceNmL,_constructorItrpp,_constructorIundefOccGam) =
+                  constructor_ _constructorOfixityGam _constructorOgUniq _constructorOidGam _constructorOmoduleNm _constructorOnmLev _constructorOopts _constructorOpatchEhNmInInstance _constructorOtopInstanceNmL _constructorOtr
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Constructor_GADTFunction :: Range ->
+                                Name ->
+                                T_Type ->
+                                T_Constructor
+sem_Constructor_GADTFunction range_ constructor_ type_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconrefnames :: Names
+              _lhsOeh :: (EH.DataConstr)
+              _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOhasFlds :: Bool
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
+              _conrefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 71, column 9)
+              _lhsOconrefnames =
+                  [_conrefname]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 186, column 17)
+              _pp =
+                  constructor_ >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 313, column 41)
+              (_ehArgs,_ehRes) =
+                  appUnArr _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 315, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.DataConstr_Constr _conrefname
+                          Nothing
+                          (map (ehPlainDataField emptyRange) _ehArgs)
+                          (Just _ehRes)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 185, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 238, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 35)
+              _lhsOhasFlds =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Constructors ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         conAndFldrefnames    : AssocL Name Names
+         conrefnames          : Names
+         eh                   : [EH.DataConstr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         hasFlds              : Bool
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Constructor 
+         child tl             : Constructors 
+      alternative Nil:
+-}
+-- cata
+sem_Constructors :: Constructors ->
+                    T_Constructors
+sem_Constructors list =
+    (Prelude.foldr sem_Constructors_Cons sem_Constructors_Nil (Prelude.map sem_Constructor list))
+-- semantic domain
+type T_Constructors = FixityGam ->
+                      UID ->
+                      IdDefOccGam ->
+                      HsName ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( (AssocL Name Names),Names,([EH.DataConstr]),ErrSq,HsNameS,UID,Bool,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Constructors_Cons :: T_Constructor ->
+                         T_Constructors ->
+                         T_Constructors
+sem_Constructors_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOconrefnames :: Names
+              _lhsOeh :: ([EH.DataConstr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOhasFlds :: Bool
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIconAndFldrefnames :: (AssocL Name Names)
+              _hdIconrefnames :: Names
+              _hdIeh :: (EH.DataConstr)
+              _hdIerrSq :: ErrSq
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIhasFlds :: Bool
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIconAndFldrefnames :: (AssocL Name Names)
+              _tlIconrefnames :: Names
+              _tlIeh :: ([EH.DataConstr])
+              _tlIerrSq :: ErrSq
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIhasFlds :: Bool
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  _hdIconAndFldrefnames ++ _tlIconAndFldrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
+              _lhsOconrefnames =
+                  _hdIconrefnames ++ _tlIconrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 296, column 28)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 35)
+              _lhsOhasFlds =
+                  _hdIhasFlds || _tlIhasFlds
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIconAndFldrefnames,_hdIconrefnames,_hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIhasFlds,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIconAndFldrefnames,_tlIconrefnames,_tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIhasFlds,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Constructors_Nil :: T_Constructors
+sem_Constructors_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconAndFldrefnames :: (AssocL Name Names)
+              _lhsOconrefnames :: Names
+              _lhsOeh :: ([EH.DataConstr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOhasFlds :: Bool
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
+              _lhsOconAndFldrefnames =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
+              _lhsOconrefnames =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 296, column 28)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 35)
+              _lhsOhasFlds =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ContextItem -------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.PrExpr
+         ehTy                 : EH.TyExpr
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Class:
+         child range          : {Range}
+         child name           : {Name}
+         child types          : Types 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+            local isAsPred    : _
+      alternative Forall:
+         child range          : {Range}
+         child typevariables  : {Names}
+         child context        : ContextItem 
+         visit 0:
+            local idDefOccGamInside : _
+            local idGam       : _
+            local nmLev       : _
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+      alternative Arrow:
+         child range          : {Range}
+         child argument       : ContextItem 
+         child result         : ContextItem 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+      alternative Implicits:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+      alternative NoImplicits:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+      alternative RowLacksLabel:
+         child range          : {Range}
+         child rowvariable    : {Name}
+         child name           : {Name}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+      alternative Equal:
+         child range          : {Range}
+         child type1          : Type 
+         child type2          : Type 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehTy        : _
+            local isAsPred    : _
+            local doGenVarWild : _
+-}
+-- cata
+sem_ContextItem :: ContextItem ->
+                   T_ContextItem
+sem_ContextItem (ContextItem_Class _range _name _types) =
+    (sem_ContextItem_Class _range _name (sem_Types _types))
+sem_ContextItem (ContextItem_Forall _range _typevariables _context) =
+    (sem_ContextItem_Forall _range _typevariables (sem_ContextItem _context))
+sem_ContextItem (ContextItem_Arrow _range _argument _result) =
+    (sem_ContextItem_Arrow _range (sem_ContextItem _argument) (sem_ContextItem _result))
+sem_ContextItem (ContextItem_Implicits _range) =
+    (sem_ContextItem_Implicits _range)
+sem_ContextItem (ContextItem_NoImplicits _range) =
+    (sem_ContextItem_NoImplicits _range)
+sem_ContextItem (ContextItem_RowLacksLabel _range _rowvariable _name) =
+    (sem_ContextItem_RowLacksLabel _range _rowvariable _name)
+sem_ContextItem (ContextItem_Equal _range _type1 _type2) =
+    (sem_ContextItem_Equal _range (sem_Type _type1) (sem_Type _type2))
+-- semantic domain
+type T_ContextItem = FixityGam ->
+                     UID ->
+                     IdDefOccGam ->
+                     NmLev ->
+                     EHCOpts ->
+                     PatchEhNmInInstance ->
+                     ([HsName]) ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
+                     ( (EH.PrExpr),(EH.TyExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ContextItem_Class :: Range ->
+                         Name ->
+                         T_Types ->
+                         T_ContextItem
+sem_ContextItem_Class range_ name_ types_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typesOfixityGam :: FixityGam
+              _typesOgUniq :: UID
+              _typesOidGam :: IdDefOccGam
+              _typesOisAsPred :: Bool
+              _typesOnmLev :: NmLev
+              _typesOopts :: EHCOpts
+              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typesOtopInstanceNmL :: ([HsName])
+              _typesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typesIeh :: ([EH.TyExpr])
+              _typesIerrSq :: ErrSq
+              _typesIfreeTvarS :: HsNameS
+              _typesIgUniq :: UID
+              _typesIidUseOccGam :: IdUseOccGam
+              _typesIpp :: PP_Doc
+              _typesIppL :: ([PP_Doc])
+              _typesIppWrap :: (PP_Doc -> PP_Doc)
+              _typesItopInstanceNmL :: ([HsName])
+              _typesItrpp :: TrPP
+              _typesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 696, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 698, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_typesIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 126, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _typesIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 162, column 9)
+              _pp =
+                  name_ >#< ppSpaces _typesIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 276, column 9)
+              _eh =
+                  rngLift range_ EH.PrExpr_Class _refname _typesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 290, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_Pred _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 204, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typesIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typesIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typesItopInstanceNmL
+              -- copy rule (down)
+              _typesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typesOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typesOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typesOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typesOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typesOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typesOtr =
+                  _lhsItr
+              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesItrpp,_typesIundefOccGam) =
+                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL _typesOtr
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItem_Forall :: Range ->
+                          Names ->
+                          T_ContextItem ->
+                          T_ContextItem
+sem_ContextItem_Forall range_ typevariables_ context_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOfreeTvarS :: HsNameS
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: (EH.PrExpr)
+              _contextIehTy :: (EH.TyExpr)
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 324, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 489, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamInside _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 46, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 172, column 9)
+              _pp =
+                  "forall" >#< ppSpaces typevariables_ >#< "." >#< _contextIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 284, column 9)
+              _eh =
+                  foldr (rngLift range_ EH.PrExpr_Forall) _contextIeh typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 290, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_Pred _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 139, column 9)
+              _lhsOfreeTvarS =
+                  _contextIfreeTvarS `Set.difference` Set.fromList typevariables_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _contextIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _contextIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _contextItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _contextIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _contextIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _contextOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _contextOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _contextOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _contextOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItem_Arrow :: Range ->
+                         T_ContextItem ->
+                         T_ContextItem ->
+                         T_ContextItem
+sem_ContextItem_Arrow range_ argument_ result_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _argumentOfixityGam :: FixityGam
+              _argumentOgUniq :: UID
+              _argumentOidGam :: IdDefOccGam
+              _argumentOnmLev :: NmLev
+              _argumentOopts :: EHCOpts
+              _argumentOpatchEhNmInInstance :: PatchEhNmInInstance
+              _argumentOtopInstanceNmL :: ([HsName])
+              _argumentOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _resultOfixityGam :: FixityGam
+              _resultOgUniq :: UID
+              _resultOidGam :: IdDefOccGam
+              _resultOnmLev :: NmLev
+              _resultOopts :: EHCOpts
+              _resultOpatchEhNmInInstance :: PatchEhNmInInstance
+              _resultOtopInstanceNmL :: ([HsName])
+              _resultOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _argumentIeh :: (EH.PrExpr)
+              _argumentIehTy :: (EH.TyExpr)
+              _argumentIerrSq :: ErrSq
+              _argumentIfreeTvarS :: HsNameS
+              _argumentIgUniq :: UID
+              _argumentIidUseOccGam :: IdUseOccGam
+              _argumentIpp :: PP_Doc
+              _argumentIppWrap :: (PP_Doc -> PP_Doc)
+              _argumentItopInstanceNmL :: ([HsName])
+              _argumentItrpp :: TrPP
+              _argumentIundefOccGam :: IdUseOccGam
+              _resultIeh :: (EH.PrExpr)
+              _resultIehTy :: (EH.TyExpr)
+              _resultIerrSq :: ErrSq
+              _resultIfreeTvarS :: HsNameS
+              _resultIgUniq :: UID
+              _resultIidUseOccGam :: IdUseOccGam
+              _resultIpp :: PP_Doc
+              _resultIppWrap :: (PP_Doc -> PP_Doc)
+              _resultItopInstanceNmL :: ([HsName])
+              _resultItrpp :: TrPP
+              _resultIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 170, column 9)
+              _pp =
+                  _argumentIpp >#< "->" >#< _resultIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 282, column 9)
+              _eh =
+                  rngLift range_ EH.PrExpr_Arrow _argumentIeh _resultIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 290, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_Pred _eh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _argumentIerrSq `Seq.union` _resultIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _argumentIfreeTvarS `Set.union` _resultIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _argumentIidUseOccGam `gamAddGam` _resultIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _argumentIppWrap . _resultIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _argumentItrpp >< _resultItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _argumentIundefOccGam `gamUnion` _resultIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _resultIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _resultItopInstanceNmL
+              -- copy rule (down)
+              _argumentOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _argumentOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _argumentOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _argumentOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _argumentOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _argumentOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _argumentOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _argumentOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _resultOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _resultOgUniq =
+                  _argumentIgUniq
+              -- copy rule (down)
+              _resultOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _resultOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _resultOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _resultOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _resultOtopInstanceNmL =
+                  _argumentItopInstanceNmL
+              -- copy rule (down)
+              _resultOtr =
+                  _lhsItr
+              ( _argumentIeh,_argumentIehTy,_argumentIerrSq,_argumentIfreeTvarS,_argumentIgUniq,_argumentIidUseOccGam,_argumentIpp,_argumentIppWrap,_argumentItopInstanceNmL,_argumentItrpp,_argumentIundefOccGam) =
+                  argument_ _argumentOfixityGam _argumentOgUniq _argumentOidGam _argumentOnmLev _argumentOopts _argumentOpatchEhNmInInstance _argumentOtopInstanceNmL _argumentOtr
+              ( _resultIeh,_resultIehTy,_resultIerrSq,_resultIfreeTvarS,_resultIgUniq,_resultIidUseOccGam,_resultIpp,_resultIppWrap,_resultItopInstanceNmL,_resultItrpp,_resultIundefOccGam) =
+                  result_ _resultOfixityGam _resultOgUniq _resultOidGam _resultOnmLev _resultOopts _resultOpatchEhNmInInstance _resultOtopInstanceNmL _resultOtr
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItem_Implicits :: Range ->
+                             T_ContextItem
+sem_ContextItem_Implicits range_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 164, column 9)
+              _pp =
+                  pp "..."
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 278, column 9)
+              _eh =
+                  undefined
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 292, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_Impls
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItem_NoImplicits :: Range ->
+                               T_ContextItem
+sem_ContextItem_NoImplicits range_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 166, column 9)
+              _pp =
+                  empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 278, column 9)
+              _eh =
+                  undefined
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 294, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_NoImpls
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItem_RowLacksLabel :: Range ->
+                                 Name ->
+                                 Name ->
+                                 T_ContextItem
+sem_ContextItem_RowLacksLabel range_ rowvariable_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOfreeTvarS :: HsNameS
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 168, column 9)
+              _pp =
+                  name_ >|< "\\" >|< rowvariable_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 280, column 9)
+              _eh =
+                  rngLift range_ EH.PrExpr_Lacks (rngLift range_ EH.RowTyExpr_Var rowvariable_) name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 290, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_Pred _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 141, column 9)
+              _lhsOfreeTvarS =
+                  Set.singleton rowvariable_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItem_Equal :: Range ->
+                         T_Type ->
+                         T_Type ->
+                         T_ContextItem
+sem_ContextItem_Equal range_ type1_ type2_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PrExpr)
+              _lhsOehTy :: (EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _type1OdoGenVarWild :: Bool
+              _type1OfixityGam :: FixityGam
+              _type1OgUniq :: UID
+              _type1OidGam :: IdDefOccGam
+              _type1OisAsPred :: Bool
+              _type1OnmLev :: NmLev
+              _type1Oopts :: EHCOpts
+              _type1OpatchEhNmInInstance :: PatchEhNmInInstance
+              _type1OtopInstanceNmL :: ([HsName])
+              _type1Otr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _type2OdoGenVarWild :: Bool
+              _type2OfixityGam :: FixityGam
+              _type2OgUniq :: UID
+              _type2OidGam :: IdDefOccGam
+              _type2OisAsPred :: Bool
+              _type2OnmLev :: NmLev
+              _type2Oopts :: EHCOpts
+              _type2OpatchEhNmInInstance :: PatchEhNmInInstance
+              _type2OtopInstanceNmL :: ([HsName])
+              _type2Otr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _type1IconNm :: Name
+              _type1Ieh :: (EH.TyExpr)
+              _type1IehMbAsPr :: (Maybe EH.PrExpr)
+              _type1IehMbAsPrL :: ([Maybe EH.PrExpr])
+              _type1IehMbAsTyPr :: (Maybe EH.TyExpr)
+              _type1IehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _type1IerrSq :: ErrSq
+              _type1IfreeTvarS :: HsNameS
+              _type1IgUniq :: UID
+              _type1IidUseOccGam :: IdUseOccGam
+              _type1ImbRefConNm :: (Maybe Name)
+              _type1IopChain :: (OpChain EH.TyExpr)
+              _type1IoperatorName :: MaybeName
+              _type1Ipp :: PP_Doc
+              _type1IppWrap :: (PP_Doc -> PP_Doc)
+              _type1ItopInstanceNmL :: ([HsName])
+              _type1Itrpp :: TrPP
+              _type1ItyConIs :: TypeConFixedMeaning
+              _type1IundefOccGam :: IdUseOccGam
+              _type2IconNm :: Name
+              _type2Ieh :: (EH.TyExpr)
+              _type2IehMbAsPr :: (Maybe EH.PrExpr)
+              _type2IehMbAsPrL :: ([Maybe EH.PrExpr])
+              _type2IehMbAsTyPr :: (Maybe EH.TyExpr)
+              _type2IehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _type2IerrSq :: ErrSq
+              _type2IfreeTvarS :: HsNameS
+              _type2IgUniq :: UID
+              _type2IidUseOccGam :: IdUseOccGam
+              _type2ImbRefConNm :: (Maybe Name)
+              _type2IopChain :: (OpChain EH.TyExpr)
+              _type2IoperatorName :: MaybeName
+              _type2Ipp :: PP_Doc
+              _type2IppWrap :: (PP_Doc -> PP_Doc)
+              _type2ItopInstanceNmL :: ([HsName])
+              _type2Itrpp :: TrPP
+              _type2ItyConIs :: TypeConFixedMeaning
+              _type2IundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 174, column 9)
+              _pp =
+                  _type1Ipp >#< hsnEqTilde >#< _type2Ipp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 286, column 9)
+              _eh =
+                  rngLift range_ EH.PrExpr_Eq _type1Ieh _type2Ieh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 290, column 9)
+              _ehTy =
+                  rngLift range_ EH.TyExpr_Pred _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 204, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 246, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _type1IerrSq `Seq.union` _type2IerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _type1IfreeTvarS `Set.union` _type2IfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _type1IidUseOccGam `gamAddGam` _type2IidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _type1IppWrap . _type2IppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _type1Itrpp >< _type2Itrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _type1IundefOccGam `gamUnion` _type2IundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehTy =
+                  _ehTy
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _type2IgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _type2ItopInstanceNmL
+              -- copy rule (from local)
+              _type1OdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _type1OfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _type1OgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _type1OidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _type1OisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _type1OnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _type1Oopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _type1OpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _type1OtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _type1Otr =
+                  _lhsItr
+              -- copy rule (from local)
+              _type2OdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _type2OfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _type2OgUniq =
+                  _type1IgUniq
+              -- copy rule (down)
+              _type2OidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _type2OisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _type2OnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _type2Oopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _type2OpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _type2OtopInstanceNmL =
+                  _type1ItopInstanceNmL
+              -- copy rule (down)
+              _type2Otr =
+                  _lhsItr
+              ( _type1IconNm,_type1Ieh,_type1IehMbAsPr,_type1IehMbAsPrL,_type1IehMbAsTyPr,_type1IehMbAsTyPrL,_type1IerrSq,_type1IfreeTvarS,_type1IgUniq,_type1IidUseOccGam,_type1ImbRefConNm,_type1IopChain,_type1IoperatorName,_type1Ipp,_type1IppWrap,_type1ItopInstanceNmL,_type1Itrpp,_type1ItyConIs,_type1IundefOccGam) =
+                  type1_ _type1OdoGenVarWild _type1OfixityGam _type1OgUniq _type1OidGam _type1OisAsPred _type1OnmLev _type1Oopts _type1OpatchEhNmInInstance _type1OtopInstanceNmL _type1Otr
+              ( _type2IconNm,_type2Ieh,_type2IehMbAsPr,_type2IehMbAsPrL,_type2IehMbAsTyPr,_type2IehMbAsTyPrL,_type2IerrSq,_type2IfreeTvarS,_type2IgUniq,_type2IidUseOccGam,_type2ImbRefConNm,_type2IopChain,_type2IoperatorName,_type2Ipp,_type2IppWrap,_type2ItopInstanceNmL,_type2Itrpp,_type2ItyConIs,_type2IundefOccGam) =
+                  type2_ _type2OdoGenVarWild _type2OfixityGam _type2OgUniq _type2OidGam _type2OisAsPred _type2OnmLev _type2Oopts _type2OpatchEhNmInInstance _type2OtopInstanceNmL _type2Otr
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ContextItems ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.PrExpr]
+         ehTy                 : [EH.TyExpr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : ContextItem 
+         child tl             : ContextItems 
+      alternative Nil:
+-}
+-- cata
+sem_ContextItems :: ContextItems ->
+                    T_ContextItems
+sem_ContextItems list =
+    (Prelude.foldr sem_ContextItems_Cons sem_ContextItems_Nil (Prelude.map sem_ContextItem list))
+-- semantic domain
+type T_ContextItems = FixityGam ->
+                      UID ->
+                      IdDefOccGam ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( ([EH.PrExpr]),([EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ContextItems_Cons :: T_ContextItem ->
+                         T_ContextItems ->
+                         T_ContextItems
+sem_ContextItems_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.PrExpr])
+              _lhsOehTy :: ([EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.PrExpr)
+              _hdIehTy :: (EH.TyExpr)
+              _hdIerrSq :: ErrSq
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.PrExpr])
+              _tlIehTy :: ([EH.TyExpr])
+              _tlIerrSq :: ErrSq
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 270, column 28)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 270, column 62)
+              _lhsOehTy =
+                  _hdIehTy : _tlIehTy
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIehTy,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIehTy,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextItems_Nil :: T_ContextItems
+sem_ContextItems_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.PrExpr])
+              _lhsOehTy :: ([EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 270, column 28)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 270, column 62)
+              _lhsOehTy =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ContextedExpression -----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : (EH.Expr,EH.PrExpr)
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Contexted:
+         child range          : {Range}
+         child expression     : Expression 
+         child context        : ContextItem 
+         visit 0:
+            local pp          : _
+-}
+-- cata
+sem_ContextedExpression :: ContextedExpression ->
+                           T_ContextedExpression
+sem_ContextedExpression (ContextedExpression_Contexted _range _expression _context) =
+    (sem_ContextedExpression_Contexted _range (sem_Expression _expression) (sem_ContextItem _context))
+-- semantic domain
+type T_ContextedExpression = UID ->
+                             FixityGam ->
+                             UID ->
+                             (Map.Map HsName [(HsName,HsName)]) ->
+                             IdDefOccGam ->
+                             HsName ->
+                             NmLev ->
+                             EHCOpts ->
+                             PatchEhNmInInstance ->
+                             (Set.Set Pragma.Pragma) ->
+                             ([HsName]) ->
+                             (TraceOn -> [PP_Doc] -> TrPP) ->
+                             ( ((EH.Expr,EH.PrExpr)),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ContextedExpression_Contexted :: Range ->
+                                     T_Expression ->
+                                     T_ContextItem ->
+                                     T_ContextedExpression
+sem_ContextedExpression_Contexted range_ expression_ context_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ((EH.Expr,EH.PrExpr))
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _contextIeh :: (EH.PrExpr)
+              _contextIehTy :: (EH.TyExpr)
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 259, column 9)
+              _pp =
+                  _expressionIpp >#< "<:" >#< _contextIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 551, column 9)
+              _lhsOeh =
+                  (_expressionIeh,_contextIeh)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq `Seq.union` _contextIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _contextIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _contextIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _contextItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _contextIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _contextIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _contextOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _contextOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _contextOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _contextOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _contextOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ContextedExpressions ----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [(EH.Expr,EH.PrExpr)]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : ContextedExpression 
+         child tl             : ContextedExpressions 
+      alternative Nil:
+-}
+-- cata
+sem_ContextedExpressions :: ContextedExpressions ->
+                            T_ContextedExpressions
+sem_ContextedExpressions list =
+    (Prelude.foldr sem_ContextedExpressions_Cons sem_ContextedExpressions_Nil (Prelude.map sem_ContextedExpression list))
+-- semantic domain
+type T_ContextedExpressions = UID ->
+                              FixityGam ->
+                              UID ->
+                              (Map.Map HsName [(HsName,HsName)]) ->
+                              IdDefOccGam ->
+                              HsName ->
+                              NmLev ->
+                              EHCOpts ->
+                              PatchEhNmInInstance ->
+                              (Set.Set Pragma.Pragma) ->
+                              ([HsName]) ->
+                              (TraceOn -> [PP_Doc] -> TrPP) ->
+                              ( ([(EH.Expr,EH.PrExpr)]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ContextedExpressions_Cons :: T_ContextedExpression ->
+                                 T_ContextedExpressions ->
+                                 T_ContextedExpressions
+sem_ContextedExpressions_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([(EH.Expr,EH.PrExpr)])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: ((EH.Expr,EH.PrExpr))
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([(EH.Expr,EH.PrExpr)])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 511, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 545, column 36)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextedExpressions_Nil :: T_ContextedExpressions
+sem_ContextedExpressions_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([(EH.Expr,EH.PrExpr)])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 513, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 545, column 36)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ContextedPattern --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : (EH.PatExpr,EH.PrExpr)
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Contexted:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child context        : ContextItem 
+         visit 0:
+            local pp          : _
+-}
+-- cata
+sem_ContextedPattern :: ContextedPattern ->
+                        T_ContextedPattern
+sem_ContextedPattern (ContextedPattern_Contexted _range _pattern _context) =
+    (sem_ContextedPattern_Contexted _range (sem_Pattern _pattern) (sem_ContextItem _context))
+-- semantic domain
+type T_ContextedPattern = FixityGam ->
+                          UID ->
+                          IdDefOccGam ->
+                          HsName ->
+                          NmLev ->
+                          EHCOpts ->
+                          PatchEhNmInInstance ->
+                          ([HsName]) ->
+                          (TraceOn -> [PP_Doc] -> TrPP) ->
+                          ( ((EH.PatExpr,EH.PrExpr)),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ContextedPattern_Contexted :: Range ->
+                                  T_Pattern ->
+                                  T_ContextItem ->
+                                  T_ContextedPattern
+sem_ContextedPattern_Contexted range_ pattern_ context_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ((EH.PatExpr,EH.PrExpr))
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _contextIeh :: (EH.PrExpr)
+              _contextIehTy :: (EH.TyExpr)
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 372, column 9)
+              _pp =
+                  _patternIpp >#< "<:" >#< _contextIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 853, column 9)
+              _lhsOeh =
+                  (_patternIeh,_contextIeh)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq `Seq.union` _contextIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _contextIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam `gamAddGam` _contextIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _contextIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp >< _contextItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam `gamUnion` _contextIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _contextIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _contextOgUniq =
+                  _patternIgUniq
+              -- copy rule (down)
+              _contextOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _contextOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _contextOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _contextOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ContextedPatterns -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [(EH.PatExpr,EH.PrExpr)]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : ContextedPattern 
+         child tl             : ContextedPatterns 
+      alternative Nil:
+-}
+-- cata
+sem_ContextedPatterns :: ContextedPatterns ->
+                         T_ContextedPatterns
+sem_ContextedPatterns list =
+    (Prelude.foldr sem_ContextedPatterns_Cons sem_ContextedPatterns_Nil (Prelude.map sem_ContextedPattern list))
+-- semantic domain
+type T_ContextedPatterns = FixityGam ->
+                           UID ->
+                           IdDefOccGam ->
+                           HsName ->
+                           NmLev ->
+                           EHCOpts ->
+                           PatchEhNmInInstance ->
+                           ([HsName]) ->
+                           (TraceOn -> [PP_Doc] -> TrPP) ->
+                           ( ([(EH.PatExpr,EH.PrExpr)]),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ContextedPatterns_Cons :: T_ContextedPattern ->
+                              T_ContextedPatterns ->
+                              T_ContextedPatterns
+sem_ContextedPatterns_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([(EH.PatExpr,EH.PrExpr)])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: ((EH.PatExpr,EH.PrExpr))
+              _hdIerrSq :: ErrSq
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([(EH.PatExpr,EH.PrExpr)])
+              _tlIerrSq :: ErrSq
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 517, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 847, column 33)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ContextedPatterns_Nil :: T_ContextedPatterns
+sem_ContextedPatterns_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([(EH.PatExpr,EH.PrExpr)])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 519, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 847, column 33)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Declaration -------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.Decl]
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative FunctionBindings:
+         child range          : {Range}
+         child bindings       : FunctionBindings 
+         visit 0:
+            local idInInstanceValDefOccGam : _
+            local idOccDefs   : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative PatternBinding:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child righthandside  : RightHandSide 
+         visit 0:
+            local trpp        : _
+            local idDefOccGamPat : _
+            local idDefOccGam : _
+            local idInInstanceValDefOccGam : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local idOccDef    : _
+            local idOccDefsPat : _
+            local idOccDefs   : _
+            local pp          : _
+            local eh          : _
+            local caseId      : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local lUniq       : {UID}
+      alternative TypeSignature:
+         child range          : {Range}
+         child names          : {Names}
+         child type           : Type 
+         visit 0:
+            local idDefOccGam : _
+            local idDefOccGamType : _
+            local idInClassTySigDefOccGam : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local refnames    : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local pp          : _
+            local mkEHSig     : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Fixity:
+         child range          : {Range}
+         child fixity         : {Fixity}
+         child priority       : {Maybe Int}
+         child operators      : {Names}
+         visit 0:
+            local idDefOccGam : _
+            local patchEhNmInInstance : _
+            local oprefnames  : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative FusionDeclaration:
+         child range          : {Range}
+         child fusename       : {Name}
+         visit 0:
+            local idDefOccGam : _
+            local reffusename : _
+            local idUseOccGamFusion : _
+            local errIdUse    : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local lUniq       : {UID}
+      alternative FusionConversion:
+         child range          : {Range}
+         child absname        : {Name}
+         child conname        : {Name}
+         visit 0:
+            local idDefOccGam : _
+            local refnames    : _
+            local idUseOccGamFusion : _
+            local errIdUse    : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local lUniq       : {UID}
+      alternative Empty:
+         child range          : {Range}
+         visit 0:
+            local patchEhNmInInstance : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Data:
+         child range          : {Range}
+         child context        : ContextItems 
+         child typelefthandside : TypeLeftHandSide 
+         child constructors   : Constructors 
+         child derivings      : Derivings 
+         visit 0:
+            local trpp        : _
+            local idDefOccGamType : _
+            local idDefOccGamType2 : _
+            local idDefOccGamConstrs : _
+            local idDefOccGamGener : _
+            local idDefOccGam : _
+            local idDefOccGamInside : _
+            local idGam       : _
+            local idUseOccGamVal : _
+            local errIdUseVal : _
+            local idUseOccGamClass : _
+            local errIdUseClass : _
+            local idUseOccGamGener : _
+            local errIdUseGener : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idUseOccGenerGam : _
+            local idUseHereGenerOccL : _
+            local undefGenerOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local typerefname : _
+            local idOccDef    : _
+            local idOccDefsCon : _
+            local idOccDefsFld : _
+            local generMaxRemArity : _
+            local idOccDefsGener : _
+            local generArities : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local errDupIntro : _
+            local locErrs     : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local mkEhGener   : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Newtype:
+         child range          : {Range}
+         child context        : ContextItems 
+         child typelefthandside : TypeLeftHandSide 
+         child constructors   : Constructor 
+         child derivings      : Derivings 
+         visit 0:
+            local idDefOccGamType : _
+            local idDefOccGamType2 : _
+            local idDefOccGamConstrs : _
+            local idDefOccGamGener : _
+            local idDefOccGam : _
+            local idDefOccGamInside : _
+            local idGam       : _
+            local idUseOccGamVal : _
+            local errIdUseVal : _
+            local idUseOccGamClass : _
+            local errIdUseClass : _
+            local idUseOccGamGener : _
+            local errIdUseGener : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idUseOccGenerGam : _
+            local idUseHereGenerOccL : _
+            local undefGenerOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local typerefname : _
+            local idOccDef    : _
+            local idOccDefsCon : _
+            local idOccDefsFld : _
+            local generMaxRemArity : _
+            local idOccDefsGener : _
+            local generArities : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local errNewtype  : _
+            local errDupIntro : _
+            local locErrs     : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local mkEhGener   : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative GADT:
+         child range          : {Range}
+         child context        : ContextItems 
+         child typelefthandside : TypeLeftHandSide 
+         child constructors   : Constructors 
+         child derivings      : Derivings 
+         visit 0:
+            local idDefOccGamType : _
+            local idDefOccGamType2 : _
+            local idDefOccGamConstrs : _
+            local idDefOccGamGener : _
+            local idDefOccGam : _
+            local idDefOccGamInside : _
+            local idGam       : _
+            local idUseOccGamVal : _
+            local errIdUseVal : _
+            local idUseOccGamClass : _
+            local errIdUseClass : _
+            local idUseOccGamGener : _
+            local errIdUseGener : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idUseOccGenerGam : _
+            local idUseHereGenerOccL : _
+            local undefGenerOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local typerefname : _
+            local idOccDef    : _
+            local idOccDefsCon : _
+            local idOccDefsFld : _
+            local generMaxRemArity : _
+            local idOccDefsGener : _
+            local generArities : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local errDupIntro : _
+            local locErrs     : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local mkEhGener   : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative KindSignature:
+         child range          : {Range}
+         child names          : {Names}
+         child kind           : Kind 
+         visit 0:
+            local idDefOccGam : _
+            local idDefOccGamKind : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local refnames    : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local pp          : _
+            local mkEHSig     : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative ForeignImport:
+         child range          : {Range}
+         child callconvention : {FFIWay}
+         child safety         : {Maybe String}
+         child importname     : {Maybe String}
+         child name           : {Name}
+         child type           : Type 
+         visit 0:
+            local idDefOccGamType : _
+            local idDefOccGam : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local refname     : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local errFFIWay   : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local nmForParse  : _
+            local ent         : _
+            local entErrs     : _
+      alternative ForeignExport:
+         child range          : {Range}
+         child callconvention : {FFIWay}
+         child exportname     : {Maybe String}
+         child name           : {Name}
+         child type           : Type 
+         visit 0:
+            local idDefOccGamType : _
+            local idDefOccGam : _
+            local refname     : _
+            local idUseOccGamExport : _
+            local errIdUse    : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local exportrefname : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local errFFIWay   : _
+            local errSq       : _
+            local pp          : _
+            local nmForParse  : _
+            local ent         : _
+            local entErrs     : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Class:
+         child range          : {Range}
+         child context        : ContextItems 
+         child typelefthandside : TypeLeftHandSide 
+         child dependencies   : FunctionalDependencies 
+         child where          : MaybeDeclarations 
+         visit 0:
+            local trpp        : _
+            local nameDeclCxt : _
+            local generderivnames : _
+            local idDefOccGamType : _
+            local idDefOccGamSigAsVar : _
+            local idDefOccGam : _
+            local idDefOccGamInside : _
+            local idGam       : _
+            local idDefOccGamInstForClass : _
+            local generderivrefnames : _
+            local idUseOccGamGenerDeriv : _
+            local errIdUseGenerDeriv : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local ehReorderedDecls : _
+            local errReorder  : _
+            local patchEhNmInInstance : _
+            local instancerefname : _
+            local classrefname : _
+            local idOccDef    : _
+            local idOccDefVal : _
+            local idOccDefsSig : _
+            local idOccDefs   : _
+            local instancename : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehInst      : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local mbPrevInstancename : _
+            local lUniq       : {UID}
+      alternative Instance:
+         child range          : {Range}
+         child instVariant    : {InstVariant}
+         child maybeinstancename : {MaybeName}
+         child useimplicitly  : {Bool}
+         child context        : ContextItems 
+         child type           : Type 
+         child where          : MaybeDeclarations 
+         visit 0:
+            local trpp        : _
+            local nameDeclCxt : _
+            local generRequiresReprTypes : _
+            local idDefOccGamType : _
+            local idDefOccGamValAsVar : _
+            local idDefOccGam : _
+            local idGam       : _
+            local classrefname : _
+            local idUseOccGamInst : _
+            local errIdUse    : _
+            local idUseOccGamGenerRepr : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idUseHereGenerReprOccL : _
+            local idDpdMp     : _
+            local ehReorderedDecls : _
+            local errReorder  : _
+            local instancerefname : _
+            local idOccDef    : _
+            local idOccDefVal : _
+            local idOccDefs   : _
+            local instancename : _
+            local nmLev       : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local mbPrevInstancename : _
+            local lUniq       : {UID}
+      alternative InstanceUseImplicitly:
+         child range          : {Range}
+         child expression     : Expression 
+         child type           : Type 
+         visit 0:
+            local trpp        : _
+            local idDefOccGam : _
+            local classrefname : _
+            local idUseOccGamInst : _
+            local errIdUse    : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local instancerefname : _
+            local idOccDef    : _
+            local idOccDefVal : _
+            local idOccDefs   : _
+            local instancename : _
+            local nmLev       : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local mbPrevInstancename : _
+            local lUniq       : {UID}
+      alternative Default:
+         child range          : {Range}
+         child name           : {MaybeName}
+         child types          : Types 
+         visit 0:
+            local idDefOccGam : _
+            local classrefname : _
+            local classrefnames : _
+            local idUseOccGamDflt : _
+            local errIdUse    : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local defaultname : _
+            local nmLev       : _
+            local errSq       : _
+            local pp          : _
+            local ignoredecl  : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local lUniq       : {UID}
+      alternative Type:
+         child range          : {Range}
+         child typelefthandside : TypeLeftHandSide 
+         child type           : Type 
+         visit 0:
+            local idDefOccGamType : _
+            local idDefOccGam : _
+            local idDefOccGamInside : _
+            local idGam       : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local patchEhNmInInstance : _
+            local typerefname : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Pragma:
+         child range          : {Range}
+         child pragma         : Pragma 
+         visit 0:
+            local patchEhNmInInstance : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Module:
+         child range          : {Range}
+         child name           : {MaybeName}
+         child exports        : MaybeExports 
+         visit 0:
+            local patchEhNmInInstance : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+            local isMainMod   : _
+            local isTopMod    : _
+-}
+-- cata
+sem_Declaration :: Declaration ->
+                   T_Declaration
+sem_Declaration (Declaration_FunctionBindings _range _bindings) =
+    (sem_Declaration_FunctionBindings _range (sem_FunctionBindings _bindings))
+sem_Declaration (Declaration_PatternBinding _range _pattern _righthandside) =
+    (sem_Declaration_PatternBinding _range (sem_Pattern _pattern) (sem_RightHandSide _righthandside))
+sem_Declaration (Declaration_TypeSignature _range _names _type) =
+    (sem_Declaration_TypeSignature _range _names (sem_Type _type))
+sem_Declaration (Declaration_Fixity _range _fixity _priority _operators) =
+    (sem_Declaration_Fixity _range _fixity _priority _operators)
+sem_Declaration (Declaration_FusionDeclaration _range _fusename) =
+    (sem_Declaration_FusionDeclaration _range _fusename)
+sem_Declaration (Declaration_FusionConversion _range _absname _conname) =
+    (sem_Declaration_FusionConversion _range _absname _conname)
+sem_Declaration (Declaration_Empty _range) =
+    (sem_Declaration_Empty _range)
+sem_Declaration (Declaration_Data _range _context _typelefthandside _constructors _derivings) =
+    (sem_Declaration_Data _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructors _constructors) (sem_Derivings _derivings))
+sem_Declaration (Declaration_Newtype _range _context _typelefthandside _constructors _derivings) =
+    (sem_Declaration_Newtype _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructor _constructors) (sem_Derivings _derivings))
+sem_Declaration (Declaration_GADT _range _context _typelefthandside _constructors _derivings) =
+    (sem_Declaration_GADT _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructors _constructors) (sem_Derivings _derivings))
+sem_Declaration (Declaration_KindSignature _range _names _kind) =
+    (sem_Declaration_KindSignature _range _names (sem_Kind _kind))
+sem_Declaration (Declaration_ForeignImport _range _callconvention _safety _importname _name _type) =
+    (sem_Declaration_ForeignImport _range _callconvention _safety _importname _name (sem_Type _type))
+sem_Declaration (Declaration_ForeignExport _range _callconvention _exportname _name _type) =
+    (sem_Declaration_ForeignExport _range _callconvention _exportname _name (sem_Type _type))
+sem_Declaration (Declaration_Class _range _context _typelefthandside _dependencies _where) =
+    (sem_Declaration_Class _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_FunctionalDependencies _dependencies) (sem_MaybeDeclarations _where))
+sem_Declaration (Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly _context _type _where) =
+    (sem_Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly (sem_ContextItems _context) (sem_Type _type) (sem_MaybeDeclarations _where))
+sem_Declaration (Declaration_InstanceUseImplicitly _range _expression _type) =
+    (sem_Declaration_InstanceUseImplicitly _range (sem_Expression _expression) (sem_Type _type))
+sem_Declaration (Declaration_Default _range _name _types) =
+    (sem_Declaration_Default _range _name (sem_Types _types))
+sem_Declaration (Declaration_Type _range _typelefthandside _type) =
+    (sem_Declaration_Type _range (sem_TypeLeftHandSide _typelefthandside) (sem_Type _type))
+sem_Declaration (Declaration_Pragma _range _pragma) =
+    (sem_Declaration_Pragma _range (sem_Pragma _pragma))
+sem_Declaration (Declaration_Module _range _name _exports) =
+    (sem_Declaration_Module _range _name (sem_MaybeExports _exports))
+-- semantic domain
+type T_Declaration = UID ->
+                     FixityGam ->
+                     UID ->
+                     (Map.Map HsName [(HsName,HsName)]) ->
+                     IdDefOccGam ->
+                     HsName ->
+                     NameDeclCxt ->
+                     NmLev ->
+                     EHCOpts ->
+                     PatchEhNmInInstance ->
+                     (Set.Set Pragma.Pragma) ->
+                     ([HsName]) ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
+                     ( ([EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Declaration_FunctionBindings :: Range ->
+                                    T_FunctionBindings ->
+                                    T_Declaration
+sem_Declaration_FunctionBindings range_ bindings_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _bindingsOcaseId :: UID
+              _bindingsOfixityGam :: FixityGam
+              _bindingsOgUniq :: UID
+              _bindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _bindingsOidGam :: IdDefOccGam
+              _bindingsOmoduleNm :: HsName
+              _bindingsOnameDeclCxt :: NameDeclCxt
+              _bindingsOnmLev :: NmLev
+              _bindingsOopts :: EHCOpts
+              _bindingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _bindingsOpragmas :: (Set.Set Pragma.Pragma)
+              _bindingsOtopInstanceNmL :: ([HsName])
+              _bindingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _bindingsIeh :: ([EH.Decl])
+              _bindingsIerrSq :: ErrSq
+              _bindingsIgUniq :: UID
+              _bindingsIidDefOccGam :: IdDefOccGam
+              _bindingsIidDpdMp :: IdDpdMp
+              _bindingsIidOccDefs :: ([IdOcc])
+              _bindingsIidUseOccGam :: IdUseOccGam
+              _bindingsIpp :: PP_Doc
+              _bindingsIppWrap :: (PP_Doc -> PP_Doc)
+              _bindingsItopInstanceNmL :: ([HsName])
+              _bindingsItrpp :: TrPP
+              _bindingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 347, column 9)
+              _idInInstanceValDefOccGam =
+                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Var) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 111, column 9)
+              _idOccDefs =
+                  _bindingsIidOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 76, column 9)
+              _lhsOeh =
+                  _bindingsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _bindingsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _bindingsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _bindingsIidDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _idInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _bindingsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _bindingsIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _bindingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _bindingsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _bindingsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _bindingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _bindingsItopInstanceNmL
+              -- copy rule (down)
+              _bindingsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _bindingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _bindingsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _bindingsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _bindingsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _bindingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _bindingsOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _bindingsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _bindingsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _bindingsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _bindingsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _bindingsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _bindingsOtr =
+                  _lhsItr
+              ( _bindingsIeh,_bindingsIerrSq,_bindingsIgUniq,_bindingsIidDefOccGam,_bindingsIidDpdMp,_bindingsIidOccDefs,_bindingsIidUseOccGam,_bindingsIpp,_bindingsIppWrap,_bindingsItopInstanceNmL,_bindingsItrpp,_bindingsIundefOccGam) =
+                  bindings_ _bindingsOcaseId _bindingsOfixityGam _bindingsOgUniq _bindingsOgenerDerivMp _bindingsOidGam _bindingsOmoduleNm _bindingsOnameDeclCxt _bindingsOnmLev _bindingsOopts _bindingsOpatchEhNmInInstance _bindingsOpragmas _bindingsOtopInstanceNmL _bindingsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_PatternBinding :: Range ->
+                                  T_Pattern ->
+                                  T_RightHandSide ->
+                                  T_Declaration
+sem_Declaration_PatternBinding range_ pattern_ righthandside_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _righthandsideOsepPP :: PP_Doc
+              _lhsOeh :: ([EH.Decl])
+              _righthandsideOmustBeMono :: Bool
+              _patternOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _righthandsideOcaseId :: UID
+              _righthandsideOfixityGam :: FixityGam
+              _righthandsideOgUniq :: UID
+              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _righthandsideOidGam :: IdDefOccGam
+              _righthandsideOmoduleNm :: HsName
+              _righthandsideOnmLev :: NmLev
+              _righthandsideOopts :: EHCOpts
+              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
+              _righthandsideOtopInstanceNmL :: ([HsName])
+              _righthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _righthandsideIeh :: (EH.Expr)
+              _righthandsideIerrSq :: ErrSq
+              _righthandsideIgUniq :: UID
+              _righthandsideIidUseOccGam :: IdUseOccGam
+              _righthandsideIpp :: PP_Doc
+              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _righthandsideItopInstanceNmL :: ([HsName])
+              _righthandsideItrpp :: TrPP
+              _righthandsideIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 24, column 9)
+              _trpp =
+                  (_lhsItr TraceOn_HsOcc $ [_idOccDef >#< " = PatternBinding"] ++ [ "idUseHereOccL=" >#< ppBracketsCommas _idUseHereOccL ])
+                  >< _patternItrpp >< _righthandsideItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 193, column 9)
+              _idDefOccGamPat =
+                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Pat _eh) _idOccDefsPat
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 193, column 9)
+              _idDefOccGam =
+                  _idDefOccGamPat `gamAddGam` _patternIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 347, column 9)
+              _idInInstanceValDefOccGam =
+                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Var) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 860, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam' (_lhsInameDeclCxt == NameDeclCxt_Instance) _lhsInmLev
+                       (gamUnions [_patternIidUseOccGam,_righthandsideIidUseOccGam])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 860, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                  `idDpdMpUnion`
+                  idToOccL2DpdMp [_idOccDef] (gamToAssocL _patternIidDefOccGam)
+                  `idDpdMpUnion`
+                  idFrOccGam2DpdMp _patternIidDefOccGam [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 868, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_righthandsideIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1260, column 9)
+              _righthandsideOpatchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
+              _idOccDef =
+                  IdOcc (maybe (mkHNm _lUniq) id _patternImbTopRefname) IdOcc_Pat
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
+              _idOccDefsPat =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
+              _idOccDefs =
+                  _patternIidOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 29, column 9)
+              _pp =
+                  _patternIpp >#< _righthandsideIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 30, column 9)
+              _righthandsideOsepPP =
+                  pp "="
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 78, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_Val _patternIeh _righthandsideIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 79, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 878, column 9)
+              _caseId =
+                  _lUniq
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 281, column 9)
+              _righthandsideOmustBeMono =
+                  not _patternIisVar
+              -- -- generated by the unique rule mechanism.
+              (_patternOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq `Seq.union` _righthandsideIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _idInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _righthandsideIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _righthandsideIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _righthandsideItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _righthandsideOcaseId =
+                  _caseId
+              -- copy rule (down)
+              _righthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _righthandsideOgUniq =
+                  _patternIgUniq
+              -- copy rule (down)
+              _righthandsideOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _righthandsideOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _righthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _righthandsideOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _righthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _righthandsideOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _righthandsideOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _righthandsideOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideItrpp,_righthandsideIundefOccGam) =
+                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL _righthandsideOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_TypeSignature :: Range ->
+                                 Names ->
+                                 T_Type ->
+                                 T_Declaration
+sem_Declaration_TypeSignature range_ names_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _typeOidGam :: IdDefOccGam
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 187, column 9)
+              _idDefOccGam =
+                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Sig (_mkEHSig (ioccNm o))) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 187, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _nmLev range_ _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 344, column 9)
+              _idInClassTySigDefOccGam =
+                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Var) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 439, column 9)
+              _typeOidGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 854, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam' (_lhsInameDeclCxt == NameDeclCxt_Class) _lhsInmLev
+                       _typeIidUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 854, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp (gamKeys _idDefOccGam) _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 858, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_typeIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 14, column 9)
+              _refnames =
+                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 9)
+              _idOccDefs =
+                  [ IdOcc n IdOcc_Val | n <- _refnames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 17, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 33, column 9)
+              _pp =
+                  ppCommas' names_ >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 81, column 9)
+              _mkEHSig =
+                  \n -> rngLift range_ EH.Decl_TySig n _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 82, column 9)
+              _lhsOeh =
+                  map _mkEHSig _refnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _idInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typeOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Fixity :: Range ->
+                          Fixity ->
+                          (Maybe Int) ->
+                          Names ->
+                          T_Declaration
+sem_Declaration_Fixity range_ fixity_ priority_ operators_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOgathFixityGam :: FixityGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Fix [ IdOcc n IdOcc_Val | n <- _oprefnames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 12, column 9)
+              _oprefnames =
+                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) operators_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 35, column 9)
+              _pp =
+                  fixity_ >#< maybe empty pp priority_ >#< ppCommas' operators_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 16, column 9)
+              _lhsOgathFixityGam =
+                  let p = maybe (fgiPrio defaultFixityGamInfo) id priority_
+                      mk n = (n,FixityGamInfo p fixity_)
+                  in  assocLToGam $ map mk $ _oprefnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 84, column 9)
+              _lhsOeh =
+                  []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_FusionDeclaration :: Range ->
+                                     Name ->
+                                     T_Declaration
+sem_Declaration_FusionDeclaration range_ fusename_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 266, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Fusion _eh) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 779, column 29)
+              (_reffusename,_,_idUseOccGamFusion,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [fusename_] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1003, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamFusion
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1003, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1006, column 9)
+              _lhsOundefOccGam =
+                  _undefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
+              _idOccDef =
+                  IdOcc (mkHNm _lUniq) IdOcc_Fusion
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 160, column 17)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 71, column 9)
+              _pp =
+                  "fuse" >#< fusename_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 99, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_FusionDecl _reffusename
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 103, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_lhsOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_FusionConversion :: Range ->
+                                    Name ->
+                                    Name ->
+                                    T_Declaration
+sem_Declaration_FusionConversion range_ absname_ conname_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 268, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ (IdAsp_Fusion_Conv _eh) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 782, column 29)
+              (_,_refnames,_idUseOccGamFusion,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [conname_,absname_] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1003, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamFusion
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1003, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1006, column 9)
+              _lhsOundefOccGam =
+                  _undefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
+              _idOccDef =
+                  IdOcc (mkHNm _lUniq) IdOcc_Fusion
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 160, column 17)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 73, column 9)
+              _pp =
+                  "convert" >#< ppCommas [conname_, absname_]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 101, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_FusionConv (_refnames !! 0) (_refnames !! 1)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 103, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_lhsOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Empty :: Range ->
+                         T_Declaration
+sem_Declaration_Empty range_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 37, column 9)
+              _pp =
+                  empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 86, column 9)
+              _lhsOeh =
+                  []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Data :: Range ->
+                        T_ContextItems ->
+                        T_TypeLeftHandSide ->
+                        T_Constructors ->
+                        T_Derivings ->
+                        T_Declaration
+sem_Declaration_Data range_ context_ typelefthandside_ constructors_ derivings_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOneedsError :: Bool
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _derivingsOidOccDefsData :: ([IdOcc])
+              _lhsOeh :: ([EH.Decl])
+              _derivingsOehDataTyExpr :: (EH.TyExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typelefthandsideOfixityGam :: FixityGam
+              _typelefthandsideOgUniq :: UID
+              _typelefthandsideOidGam :: IdDefOccGam
+              _typelefthandsideOmoduleNm :: HsName
+              _typelefthandsideOnmLev :: NmLev
+              _typelefthandsideOopts :: EHCOpts
+              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typelefthandsideOtopInstanceNmL :: ([HsName])
+              _typelefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _constructorsOfixityGam :: FixityGam
+              _constructorsOgUniq :: UID
+              _constructorsOidGam :: IdDefOccGam
+              _constructorsOmoduleNm :: HsName
+              _constructorsOnmLev :: NmLev
+              _constructorsOopts :: EHCOpts
+              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _constructorsOtopInstanceNmL :: ([HsName])
+              _constructorsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _derivingsOfixityGam :: FixityGam
+              _derivingsOgUniq :: UID
+              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _derivingsOidGam :: IdDefOccGam
+              _derivingsOmoduleNm :: HsName
+              _derivingsOnameDeclCxt :: NameDeclCxt
+              _derivingsOnmLev :: NmLev
+              _derivingsOopts :: EHCOpts
+              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
+              _derivingsOtopInstanceNmL :: ([HsName])
+              _derivingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _typelefthandsideIeh :: ([EH.TyVar])
+              _typelefthandsideIerrSq :: ErrSq
+              _typelefthandsideIfreeTvarS :: HsNameS
+              _typelefthandsideIgUniq :: UID
+              _typelefthandsideIidDefOccGam :: IdDefOccGam
+              _typelefthandsideIidOccDefs :: ([IdOcc])
+              _typelefthandsideIidUseOccGam :: IdUseOccGam
+              _typelefthandsideIname :: Name
+              _typelefthandsideIpp :: PP_Doc
+              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _typelefthandsideIrange :: Range
+              _typelefthandsideItopInstanceNmL :: ([HsName])
+              _typelefthandsideItrpp :: TrPP
+              _typelefthandsideItypevariables :: Names
+              _typelefthandsideIundefOccGam :: IdUseOccGam
+              _constructorsIconAndFldrefnames :: (AssocL Name Names)
+              _constructorsIconrefnames :: Names
+              _constructorsIeh :: ([EH.DataConstr])
+              _constructorsIerrSq :: ErrSq
+              _constructorsIfreeTvarS :: HsNameS
+              _constructorsIgUniq :: UID
+              _constructorsIhasFlds :: Bool
+              _constructorsIidUseOccGam :: IdUseOccGam
+              _constructorsIpp :: PP_Doc
+              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
+              _constructorsItopInstanceNmL :: ([HsName])
+              _constructorsItrpp :: TrPP
+              _constructorsIundefOccGam :: IdUseOccGam
+              _derivingsIerrSq :: ErrSq
+              _derivingsIgUniq :: UID
+              _derivingsIgathFixityGam :: FixityGam
+              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _derivingsIhasGenericDeriving :: Bool
+              _derivingsIidDefOccGam :: IdDefOccGam
+              _derivingsIidDpdMp :: IdDpdMp
+              _derivingsIidInClassTySigDefOccGam :: IdDefOccGam
+              _derivingsIidInInstanceValDefOccGam :: IdDefOccGam
+              _derivingsIidOccDefs :: ([IdOcc])
+              _derivingsIidUseOccGam :: IdUseOccGam
+              _derivingsIneedsError :: Bool
+              _derivingsIpp :: PP_Doc
+              _derivingsIppL :: ([PP_Doc])
+              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
+              _derivingsItopInstanceNmL :: ([HsName])
+              _derivingsItrpp :: TrPP
+              _derivingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 43, column 9)
+              _trpp =
+                  trppEmpty
+                  >< (_lhsItr TraceOn_HsOcc $ [_idOccDef >#< "= Data"] ++ [ "idOccDefs=" >#< ppBracketsCommas _idOccDefs, "idOccDefsGener=" >#< ppBracketsCommas _idOccDefsGener                                                                                             ])
+                  >< _contextItrpp
+                  >< _typelefthandsideItrpp >< _constructorsItrpp
+                  >< _derivingsItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamType2 =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamConstrs =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
+                  `gamAddGam`
+                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
+                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
+                                )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamGener =
+                  gamUnions $ zipWith (\arity def -> mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def $ _mkEhGener arity) [def]) _generArities _idOccDefsGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
+                  `gamAddGam` _idDefOccGamConstrs
+                  `gamAddGam` _derivingsIidDefOccGam
+                  `gamAddGam` _idDefOccGamGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 256, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 443, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 750, column 29)
+              (_,_,_idUseOccGamVal,_errIdUseVal) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 763, column 29)
+              (_,_,_idUseOccGamClass,_errIdUseClass) =
+                  mkUseOccGam _lhsIopts _lhsIidGam
+                              (if (ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving) && not (ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts)
+                               then assocLKeys builtinGenerClassNmL
+                               else [])
+                              IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 769, column 29)
+              (_,_,_idUseOccGamGener,_errIdUseGener) =
+                  mkUseOccGamDfltAsp _lhsIopts _lhsIidGam
+                      (if (ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving) && ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                       then builtinGenerClassNmL ++ builtinGenerTypeNmL ++ concat [builtinGenerClassArityNmL a ++ builtinGenerTypeArityNmL a | a <- [0 .. _generMaxRemArity]]
+                       else [])
+                      range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 803, column 9)
+              _lhsOneedsError =
+                  _constructorsIhasFlds
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 871, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev
+                      (gamUnions
+                          [ _constructorsIidUseOccGam
+                          , _idUseOccGamVal
+                          , _contextIidUseOccGam
+                          , if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then emptyGam else _idUseOccGamClass
+                                                                  , _typelefthandsideIidUseOccGam, _constructorsIidUseOccGam
+                          ]
+                      )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 882, column 29)
+              (_idUseOccGenerGam,_idUseHereGenerOccL,_,_undefGenerOccGam) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 871, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                  `idDpdMpUnion`
+                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
+                  `idDpdMpUnion`
+                  _derivingsIidDpdMp
+                  `idDpdMpUnion`
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then emptyIdDpdMp else idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef])
+                  `idDpdMpUnion`
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                   then idToOccL2DpdMp _idOccDefsGener _idUseHereGenerOccL
+                        `idDpdMpUnion`
+                        idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
+                   else emptyIdDpdMp
+                   )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 900, column 9)
+              _lhsOundefOccGam =
+                  gamUnions
+                                                              [ _undefOccGam
+                                                              , _undefGenerOccGam
+                                                              , _derivingsIundefOccGam
+                                                              , _contextIundefOccGam
+                                                              , _typelefthandsideIundefOccGam, _constructorsIundefOccGam
+                                                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 900, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions
+                                                              [ _idUseOccGam
+                                                              , _idUseOccGenerGam
+                                                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1050, column 9)
+              _derivingsOidOccDefsData =
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then _idOccDefsGener else [])
+                  ++ [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
+              _typerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDef =
+                  IdOcc _typerefname IdOcc_Type
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefsCon =
+                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefsFld =
+                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _generMaxRemArity =
+                  length _typelefthandsideItypevariables `min` 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 124, column 29)
+              (_idOccDefsGener,_generArities) =
+                  if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving
+                  then let arities = [0 .. _generMaxRemArity]
+                       in  ([IdOcc (hsnNm2GenerReprSyn a _typerefname) IdOcc_Type | a <- arities], arities)
+                  else ([], [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+                  ++ _idOccDefsCon
+                  ++ _idOccDefsFld
+                  ++ _idOccDefsGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamType2
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 72, column 9)
+              _locErrs =
+                  Seq.empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
+              _errSq =
+                  Seq.unions [ _locErrs
+                             , _typelefthandsideIerrSq
+                             , Seq.fromList _errDupIntro
+                             , Seq.fromList _errIdUseVal
+                             , _constructorsIerrSq
+                             , _contextIerrSq
+                             , _derivingsIerrSq
+                             , Seq.fromList _errIdUseGener
+                             , Seq.fromList _errIdUseClass
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 39, column 9)
+              _pp =
+                  "data" >#< _typelefthandsideIpp
+                         >#< "=" >#< _constructorsIpp
+                         >-< ppParensCommas _derivingsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 89, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_Data False _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) _constructorsIeh
+                          (if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving then Just _generMaxRemArity else Nothing)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 91, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
+              _mkEhGener =
+                  \arity -> rngLift range_ EH.Decl_GenerRep _generMaxRemArity arity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 165, column 9)
+              _derivingsOehDataTyExpr =
+                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _derivingsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _derivingsIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _derivingsIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _derivingsIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _derivingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _derivingsItopInstanceNmL
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _contextOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _contextOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _contextOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _contextOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _typelefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typelefthandsideOgUniq =
+                  _contextIgUniq
+              -- copy rule (from local)
+              _typelefthandsideOidGam =
+                  _idGam
+              -- copy rule (down)
+              _typelefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _typelefthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typelefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typelefthandsideOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _typelefthandsideOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _typelefthandsideOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _constructorsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _constructorsOgUniq =
+                  _typelefthandsideIgUniq
+              -- copy rule (from local)
+              _constructorsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _constructorsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _constructorsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _constructorsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _constructorsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _constructorsOtopInstanceNmL =
+                  _typelefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _constructorsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _derivingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _derivingsOgUniq =
+                  _constructorsIgUniq
+              -- copy rule (down)
+              _derivingsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _derivingsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _derivingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _derivingsOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (from local)
+              _derivingsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _derivingsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _derivingsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _derivingsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _derivingsOtopInstanceNmL =
+                  _constructorsItopInstanceNmL
+              -- copy rule (down)
+              _derivingsOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItrpp,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
+                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL _typelefthandsideOtr
+              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsItrpp,_constructorsIundefOccGam) =
+                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL _constructorsOtr
+              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIhasGenericDeriving,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidInClassTySigDefOccGam,_derivingsIidInInstanceValDefOccGam,_derivingsIidOccDefs,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsItrpp,_derivingsIundefOccGam) =
+                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefsData _derivingsOmoduleNm _derivingsOnameDeclCxt _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL _derivingsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Newtype :: Range ->
+                           T_ContextItems ->
+                           T_TypeLeftHandSide ->
+                           T_Constructor ->
+                           T_Derivings ->
+                           T_Declaration
+sem_Declaration_Newtype range_ context_ typelefthandside_ constructors_ derivings_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _derivingsOidOccDefsData :: ([IdOcc])
+              _lhsOeh :: ([EH.Decl])
+              _derivingsOehDataTyExpr :: (EH.TyExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typelefthandsideOfixityGam :: FixityGam
+              _typelefthandsideOgUniq :: UID
+              _typelefthandsideOidGam :: IdDefOccGam
+              _typelefthandsideOmoduleNm :: HsName
+              _typelefthandsideOnmLev :: NmLev
+              _typelefthandsideOopts :: EHCOpts
+              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typelefthandsideOtopInstanceNmL :: ([HsName])
+              _typelefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _constructorsOfixityGam :: FixityGam
+              _constructorsOgUniq :: UID
+              _constructorsOidGam :: IdDefOccGam
+              _constructorsOmoduleNm :: HsName
+              _constructorsOnmLev :: NmLev
+              _constructorsOopts :: EHCOpts
+              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _constructorsOtopInstanceNmL :: ([HsName])
+              _constructorsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _derivingsOfixityGam :: FixityGam
+              _derivingsOgUniq :: UID
+              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _derivingsOidGam :: IdDefOccGam
+              _derivingsOmoduleNm :: HsName
+              _derivingsOnameDeclCxt :: NameDeclCxt
+              _derivingsOnmLev :: NmLev
+              _derivingsOopts :: EHCOpts
+              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
+              _derivingsOtopInstanceNmL :: ([HsName])
+              _derivingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _typelefthandsideIeh :: ([EH.TyVar])
+              _typelefthandsideIerrSq :: ErrSq
+              _typelefthandsideIfreeTvarS :: HsNameS
+              _typelefthandsideIgUniq :: UID
+              _typelefthandsideIidDefOccGam :: IdDefOccGam
+              _typelefthandsideIidOccDefs :: ([IdOcc])
+              _typelefthandsideIidUseOccGam :: IdUseOccGam
+              _typelefthandsideIname :: Name
+              _typelefthandsideIpp :: PP_Doc
+              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _typelefthandsideIrange :: Range
+              _typelefthandsideItopInstanceNmL :: ([HsName])
+              _typelefthandsideItrpp :: TrPP
+              _typelefthandsideItypevariables :: Names
+              _typelefthandsideIundefOccGam :: IdUseOccGam
+              _constructorsIconAndFldrefnames :: (AssocL Name Names)
+              _constructorsIconrefnames :: Names
+              _constructorsIeh :: (EH.DataConstr)
+              _constructorsIerrSq :: ErrSq
+              _constructorsIfreeTvarS :: HsNameS
+              _constructorsIgUniq :: UID
+              _constructorsIhasFlds :: Bool
+              _constructorsIidUseOccGam :: IdUseOccGam
+              _constructorsIpp :: PP_Doc
+              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
+              _constructorsItopInstanceNmL :: ([HsName])
+              _constructorsItrpp :: TrPP
+              _constructorsIundefOccGam :: IdUseOccGam
+              _derivingsIerrSq :: ErrSq
+              _derivingsIgUniq :: UID
+              _derivingsIgathFixityGam :: FixityGam
+              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _derivingsIhasGenericDeriving :: Bool
+              _derivingsIidDefOccGam :: IdDefOccGam
+              _derivingsIidDpdMp :: IdDpdMp
+              _derivingsIidInClassTySigDefOccGam :: IdDefOccGam
+              _derivingsIidInInstanceValDefOccGam :: IdDefOccGam
+              _derivingsIidOccDefs :: ([IdOcc])
+              _derivingsIidUseOccGam :: IdUseOccGam
+              _derivingsIneedsError :: Bool
+              _derivingsIpp :: PP_Doc
+              _derivingsIppL :: ([PP_Doc])
+              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
+              _derivingsItopInstanceNmL :: ([HsName])
+              _derivingsItrpp :: TrPP
+              _derivingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamType2 =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamConstrs =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
+                  `gamAddGam`
+                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
+                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
+                                )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamGener =
+                  gamUnions $ zipWith (\arity def -> mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def $ _mkEhGener arity) [def]) _generArities _idOccDefsGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
+                  `gamAddGam` _idDefOccGamConstrs
+                  `gamAddGam` _derivingsIidDefOccGam
+                  `gamAddGam` _idDefOccGamGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 256, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 443, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 753, column 29)
+              (_,_,_idUseOccGamVal,_errIdUseVal) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnPrelId] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 763, column 29)
+              (_,_,_idUseOccGamClass,_errIdUseClass) =
+                  mkUseOccGam _lhsIopts _lhsIidGam
+                              (if (ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving) && not (ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts)
+                               then assocLKeys builtinGenerClassNmL
+                               else [])
+                              IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 769, column 29)
+              (_,_,_idUseOccGamGener,_errIdUseGener) =
+                  mkUseOccGamDfltAsp _lhsIopts _lhsIidGam
+                      (if (ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving) && ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                       then builtinGenerClassNmL ++ builtinGenerTypeNmL ++ concat [builtinGenerClassArityNmL a ++ builtinGenerTypeArityNmL a | a <- [0 .. _generMaxRemArity]]
+                       else [])
+                      range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 871, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev
+                      (gamUnions
+                          [ _constructorsIidUseOccGam
+                          , _idUseOccGamVal
+                          , _contextIidUseOccGam
+                          , if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then emptyGam else _idUseOccGamClass
+                                                                  , _typelefthandsideIidUseOccGam, _constructorsIidUseOccGam
+                          ]
+                      )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 882, column 29)
+              (_idUseOccGenerGam,_idUseHereGenerOccL,_,_undefGenerOccGam) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 871, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                  `idDpdMpUnion`
+                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
+                  `idDpdMpUnion`
+                  _derivingsIidDpdMp
+                  `idDpdMpUnion`
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then emptyIdDpdMp else idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef])
+                  `idDpdMpUnion`
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                   then idToOccL2DpdMp _idOccDefsGener _idUseHereGenerOccL
+                        `idDpdMpUnion`
+                        idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
+                   else emptyIdDpdMp
+                   )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 900, column 9)
+              _lhsOundefOccGam =
+                  gamUnions
+                                                              [ _undefOccGam
+                                                              , _undefGenerOccGam
+                                                              , _derivingsIundefOccGam
+                                                              , _contextIundefOccGam
+                                                              , _typelefthandsideIundefOccGam, _constructorsIundefOccGam
+                                                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 900, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions
+                                                              [ _idUseOccGam
+                                                              , _idUseOccGenerGam
+                                                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1050, column 9)
+              _derivingsOidOccDefsData =
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then _idOccDefsGener else [])
+                  ++ [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
+              _typerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDef =
+                  IdOcc _typerefname IdOcc_Type
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefsCon =
+                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefsFld =
+                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _generMaxRemArity =
+                  length _typelefthandsideItypevariables `min` 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 124, column 29)
+              (_idOccDefsGener,_generArities) =
+                  if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving
+                  then let arities = [0 .. _generMaxRemArity]
+                       in  ([IdOcc (hsnNm2GenerReprSyn a _typerefname) IdOcc_Type | a <- arities], arities)
+                  else ([], [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+                  ++ _idOccDefsCon
+                  ++ _idOccDefsFld
+                  ++ _idOccDefsGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 30, column 9)
+              _errNewtype =
+                  case _constructorsIeh of
+                    EH.DataConstr_Constr _
+                                         _
+                                         _
+                                         [_]
+                                         _
+                      -> []
+                    _ -> [rngLift range_ Err_Newtype _typelefthandsideIname]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamType2
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 74, column 9)
+              _locErrs =
+                  Seq.fromList _errNewtype
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
+              _errSq =
+                  Seq.unions [ _locErrs
+                             , _typelefthandsideIerrSq
+                             , Seq.fromList _errDupIntro
+                             , Seq.fromList _errIdUseVal
+                             , _constructorsIerrSq
+                             , _contextIerrSq
+                             , _derivingsIerrSq
+                             , Seq.fromList _errIdUseGener
+                             , Seq.fromList _errIdUseClass
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 43, column 9)
+              _pp =
+                  "newtype" >#< _typelefthandsideIpp
+                            >#< "=" >#< _constructorsIpp
+                            >-< ppParensCommas _derivingsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 93, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_Data True _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) [_constructorsIeh]
+                          (if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving then Just _generMaxRemArity else Nothing)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 95, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
+              _mkEhGener =
+                  \arity -> rngLift range_ EH.Decl_GenerRep _generMaxRemArity arity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 165, column 9)
+              _derivingsOehDataTyExpr =
+                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _derivingsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _derivingsIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _derivingsIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _derivingsIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _derivingsIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _contextItrpp >< _typelefthandsideItrpp >< _constructorsItrpp >< _derivingsItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _derivingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _derivingsItopInstanceNmL
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _contextOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _contextOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _contextOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _contextOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _typelefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typelefthandsideOgUniq =
+                  _contextIgUniq
+              -- copy rule (from local)
+              _typelefthandsideOidGam =
+                  _idGam
+              -- copy rule (down)
+              _typelefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _typelefthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typelefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typelefthandsideOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _typelefthandsideOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _typelefthandsideOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _constructorsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _constructorsOgUniq =
+                  _typelefthandsideIgUniq
+              -- copy rule (from local)
+              _constructorsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _constructorsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _constructorsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _constructorsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _constructorsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _constructorsOtopInstanceNmL =
+                  _typelefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _constructorsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _derivingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _derivingsOgUniq =
+                  _constructorsIgUniq
+              -- copy rule (down)
+              _derivingsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _derivingsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _derivingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _derivingsOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (from local)
+              _derivingsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _derivingsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _derivingsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _derivingsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _derivingsOtopInstanceNmL =
+                  _constructorsItopInstanceNmL
+              -- copy rule (down)
+              _derivingsOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItrpp,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
+                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL _typelefthandsideOtr
+              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsItrpp,_constructorsIundefOccGam) =
+                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL _constructorsOtr
+              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIhasGenericDeriving,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidInClassTySigDefOccGam,_derivingsIidInInstanceValDefOccGam,_derivingsIidOccDefs,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsItrpp,_derivingsIundefOccGam) =
+                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefsData _derivingsOmoduleNm _derivingsOnameDeclCxt _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL _derivingsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_GADT :: Range ->
+                        T_ContextItems ->
+                        T_TypeLeftHandSide ->
+                        T_Constructors ->
+                        T_Derivings ->
+                        T_Declaration
+sem_Declaration_GADT range_ context_ typelefthandside_ constructors_ derivings_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _derivingsOidOccDefsData :: ([IdOcc])
+              _lhsOeh :: ([EH.Decl])
+              _derivingsOehDataTyExpr :: (EH.TyExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typelefthandsideOfixityGam :: FixityGam
+              _typelefthandsideOgUniq :: UID
+              _typelefthandsideOidGam :: IdDefOccGam
+              _typelefthandsideOmoduleNm :: HsName
+              _typelefthandsideOnmLev :: NmLev
+              _typelefthandsideOopts :: EHCOpts
+              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typelefthandsideOtopInstanceNmL :: ([HsName])
+              _typelefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _constructorsOfixityGam :: FixityGam
+              _constructorsOgUniq :: UID
+              _constructorsOidGam :: IdDefOccGam
+              _constructorsOmoduleNm :: HsName
+              _constructorsOnmLev :: NmLev
+              _constructorsOopts :: EHCOpts
+              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _constructorsOtopInstanceNmL :: ([HsName])
+              _constructorsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _derivingsOfixityGam :: FixityGam
+              _derivingsOgUniq :: UID
+              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _derivingsOidGam :: IdDefOccGam
+              _derivingsOmoduleNm :: HsName
+              _derivingsOnameDeclCxt :: NameDeclCxt
+              _derivingsOnmLev :: NmLev
+              _derivingsOopts :: EHCOpts
+              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
+              _derivingsOtopInstanceNmL :: ([HsName])
+              _derivingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _typelefthandsideIeh :: ([EH.TyVar])
+              _typelefthandsideIerrSq :: ErrSq
+              _typelefthandsideIfreeTvarS :: HsNameS
+              _typelefthandsideIgUniq :: UID
+              _typelefthandsideIidDefOccGam :: IdDefOccGam
+              _typelefthandsideIidOccDefs :: ([IdOcc])
+              _typelefthandsideIidUseOccGam :: IdUseOccGam
+              _typelefthandsideIname :: Name
+              _typelefthandsideIpp :: PP_Doc
+              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _typelefthandsideIrange :: Range
+              _typelefthandsideItopInstanceNmL :: ([HsName])
+              _typelefthandsideItrpp :: TrPP
+              _typelefthandsideItypevariables :: Names
+              _typelefthandsideIundefOccGam :: IdUseOccGam
+              _constructorsIconAndFldrefnames :: (AssocL Name Names)
+              _constructorsIconrefnames :: Names
+              _constructorsIeh :: ([EH.DataConstr])
+              _constructorsIerrSq :: ErrSq
+              _constructorsIfreeTvarS :: HsNameS
+              _constructorsIgUniq :: UID
+              _constructorsIhasFlds :: Bool
+              _constructorsIidUseOccGam :: IdUseOccGam
+              _constructorsIpp :: PP_Doc
+              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
+              _constructorsItopInstanceNmL :: ([HsName])
+              _constructorsItrpp :: TrPP
+              _constructorsIundefOccGam :: IdUseOccGam
+              _derivingsIerrSq :: ErrSq
+              _derivingsIgUniq :: UID
+              _derivingsIgathFixityGam :: FixityGam
+              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _derivingsIhasGenericDeriving :: Bool
+              _derivingsIidDefOccGam :: IdDefOccGam
+              _derivingsIidDpdMp :: IdDpdMp
+              _derivingsIidInClassTySigDefOccGam :: IdDefOccGam
+              _derivingsIidInInstanceValDefOccGam :: IdDefOccGam
+              _derivingsIidOccDefs :: ([IdOcc])
+              _derivingsIidUseOccGam :: IdUseOccGam
+              _derivingsIneedsError :: Bool
+              _derivingsIpp :: PP_Doc
+              _derivingsIppL :: ([PP_Doc])
+              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
+              _derivingsItopInstanceNmL :: ([HsName])
+              _derivingsItrpp :: TrPP
+              _derivingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamType2 =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamConstrs =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
+                  `gamAddGam`
+                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
+                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
+                                )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGamGener =
+                  gamUnions $ zipWith (\arity def -> mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def $ _mkEhGener arity) [def]) _generArities _idOccDefsGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 198, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
+                  `gamAddGam` _idDefOccGamConstrs
+                  `gamAddGam` _derivingsIidDefOccGam
+                  `gamAddGam` _idDefOccGamGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 256, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 443, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 750, column 29)
+              (_,_,_idUseOccGamVal,_errIdUseVal) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 763, column 29)
+              (_,_,_idUseOccGamClass,_errIdUseClass) =
+                  mkUseOccGam _lhsIopts _lhsIidGam
+                              (if (ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving) && not (ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts)
+                               then assocLKeys builtinGenerClassNmL
+                               else [])
+                              IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 769, column 29)
+              (_,_,_idUseOccGamGener,_errIdUseGener) =
+                  mkUseOccGamDfltAsp _lhsIopts _lhsIidGam
+                      (if (ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving) && ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                       then builtinGenerClassNmL ++ builtinGenerTypeNmL ++ concat [builtinGenerClassArityNmL a ++ builtinGenerTypeArityNmL a | a <- [0 .. _generMaxRemArity]]
+                       else [])
+                      range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 871, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev
+                      (gamUnions
+                          [ _constructorsIidUseOccGam
+                          , _idUseOccGamVal
+                          , _contextIidUseOccGam
+                          , if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then emptyGam else _idUseOccGamClass
+                                                                  , _typelefthandsideIidUseOccGam, _constructorsIidUseOccGam
+                          ]
+                      )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 882, column 29)
+              (_idUseOccGenerGam,_idUseHereGenerOccL,_,_undefGenerOccGam) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 871, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                  `idDpdMpUnion`
+                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
+                  `idDpdMpUnion`
+                  _derivingsIidDpdMp
+                  `idDpdMpUnion`
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then emptyIdDpdMp else idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef])
+                  `idDpdMpUnion`
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                   then idToOccL2DpdMp _idOccDefsGener _idUseHereGenerOccL
+                        `idDpdMpUnion`
+                        idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
+                   else emptyIdDpdMp
+                   )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 900, column 9)
+              _lhsOundefOccGam =
+                  gamUnions
+                                                              [ _undefOccGam
+                                                              , _undefGenerOccGam
+                                                              , _derivingsIundefOccGam
+                                                              , _contextIundefOccGam
+                                                              , _typelefthandsideIundefOccGam, _constructorsIundefOccGam
+                                                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 900, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions
+                                                              [ _idUseOccGam
+                                                              , _idUseOccGenerGam
+                                                              ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1050, column 9)
+              _derivingsOidOccDefsData =
+                  (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then _idOccDefsGener else [])
+                  ++ [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
+              _typerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDef =
+                  IdOcc _typerefname IdOcc_Type
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefsCon =
+                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefsFld =
+                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _generMaxRemArity =
+                  length _typelefthandsideItypevariables `min` 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 124, column 29)
+              (_idOccDefsGener,_generArities) =
+                  if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving
+                  then let arities = [0 .. _generMaxRemArity]
+                       in  ([IdOcc (hsnNm2GenerReprSyn a _typerefname) IdOcc_Type | a <- arities], arities)
+                  else ([], [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+                  ++ _idOccDefsCon
+                  ++ _idOccDefsFld
+                  ++ _idOccDefsGener
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamType2
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 72, column 9)
+              _locErrs =
+                  Seq.empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
+              _errSq =
+                  Seq.unions [ _locErrs
+                             , _typelefthandsideIerrSq
+                             , Seq.fromList _errDupIntro
+                             , Seq.fromList _errIdUseVal
+                             , _constructorsIerrSq
+                             , _contextIerrSq
+                             , _derivingsIerrSq
+                             , Seq.fromList _errIdUseGener
+                             , Seq.fromList _errIdUseClass
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 47, column 9)
+              _pp =
+                  "data" >#< _typelefthandsideIpp
+                            >#< "where"
+                            >-< indent 2 (_constructorsIpp
+                                          >-< ppParensCommas _derivingsIppL
+                                         )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 89, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_Data False _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) _constructorsIeh
+                          (if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving then Just _generMaxRemArity else Nothing)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 91, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
+              _mkEhGener =
+                  \arity -> rngLift range_ EH.Decl_GenerRep _generMaxRemArity arity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 165, column 9)
+              _derivingsOehDataTyExpr =
+                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _derivingsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _derivingsIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _derivingsIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _derivingsIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _derivingsIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _contextItrpp >< _typelefthandsideItrpp >< _constructorsItrpp >< _derivingsItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _derivingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _derivingsItopInstanceNmL
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _contextOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _contextOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _contextOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _contextOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _typelefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typelefthandsideOgUniq =
+                  _contextIgUniq
+              -- copy rule (from local)
+              _typelefthandsideOidGam =
+                  _idGam
+              -- copy rule (down)
+              _typelefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _typelefthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typelefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typelefthandsideOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _typelefthandsideOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _typelefthandsideOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _constructorsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _constructorsOgUniq =
+                  _typelefthandsideIgUniq
+              -- copy rule (from local)
+              _constructorsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _constructorsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _constructorsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _constructorsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _constructorsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _constructorsOtopInstanceNmL =
+                  _typelefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _constructorsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _derivingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _derivingsOgUniq =
+                  _constructorsIgUniq
+              -- copy rule (down)
+              _derivingsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _derivingsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _derivingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _derivingsOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (from local)
+              _derivingsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _derivingsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _derivingsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _derivingsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _derivingsOtopInstanceNmL =
+                  _constructorsItopInstanceNmL
+              -- copy rule (down)
+              _derivingsOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItrpp,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
+                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL _typelefthandsideOtr
+              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsItrpp,_constructorsIundefOccGam) =
+                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL _constructorsOtr
+              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIhasGenericDeriving,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidInClassTySigDefOccGam,_derivingsIidInInstanceValDefOccGam,_derivingsIidOccDefs,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsItrpp,_derivingsIundefOccGam) =
+                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefsData _derivingsOmoduleNm _derivingsOnameDeclCxt _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL _derivingsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_KindSignature :: Range ->
+                                 Names ->
+                                 T_Kind ->
+                                 T_Declaration
+sem_Declaration_KindSignature range_ names_ kind_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _kindOidGam :: IdDefOccGam
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _kindOgUniq :: UID
+              _kindOnmLev :: NmLev
+              _kindOopts :: EHCOpts
+              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
+              _kindOtopInstanceNmL :: ([HsName])
+              _kindOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _kindIconNm :: Name
+              _kindIeh :: (EH.KiExpr)
+              _kindIerrSq :: ErrSq
+              _kindIfreeTvarS :: HsNameS
+              _kindIgUniq :: UID
+              _kindIidUseOccGam :: IdUseOccGam
+              _kindIpp :: PP_Doc
+              _kindIppWrap :: (PP_Doc -> PP_Doc)
+              _kindItopInstanceNmL :: ([HsName])
+              _kindItrpp :: TrPP
+              _kindIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 216, column 9)
+              _idDefOccGam =
+                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Type_Sig (_mkEHSig (ioccNm o))) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 216, column 9)
+              _idDefOccGamKind =
+                  kvarS2IdDefOccGam _nmLev range_ _kindIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 445, column 9)
+              _kindOidGam =
+                  gamUnion _idDefOccGamKind _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 915, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev _kindIidUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 915, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp (gamKeys _idDefOccGam) _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 918, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_kindIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 16, column 9)
+              _refnames =
+                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 134, column 9)
+              _idOccDefs =
+                  [ IdOcc n IdOcc_Type | n <- _refnames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 22, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 53, column 9)
+              _pp =
+                  ppCommas' names_ >#< "::" >#< _kindIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 105, column 9)
+              _mkEHSig =
+                  \n -> rngLift range_ EH.Decl_KiSig n _kindIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 106, column 9)
+              _lhsOeh =
+                  map _mkEHSig _refnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _kindIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _kindIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _kindItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _kindIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _kindItopInstanceNmL
+              -- copy rule (down)
+              _kindOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _kindOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _kindOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _kindOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _kindOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _kindOtr =
+                  _lhsItr
+              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindItrpp,_kindIundefOccGam) =
+                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL _kindOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_ForeignImport :: Range ->
+                                 FFIWay ->
+                                 (Maybe String) ->
+                                 (Maybe String) ->
+                                 Name ->
+                                 T_Type ->
+                                 T_Declaration
+sem_Declaration_ForeignImport range_ callconvention_ safety_ importname_ name_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _typeOidGam :: IdDefOccGam
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 260, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 264, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Foreign _eh) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 439, column 9)
+              _typeOidGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 920, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 920, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 923, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_typeIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 20, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 155, column 9)
+              _idOccDef =
+                  IdOcc _refname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 155, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 24, column 9)
+              _errFFIWay =
+                  if maybe False (callconvention_ `elem`) $ fmap targiAllowedFFI $ Map.lookup (ehcOptTarget _lhsIopts) allTargetInfoMp
+                  then []
+                  else [rngLift range_ Err_IllegalFFIWay callconvention_]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 149, column 9)
+              _errSq =
+                  Seq.unions [ Seq.fromList (rngLift range_ mkNestErr (pp ("Parse of foreign entity '" ++ _nmForParse ++ "'")) _entErrs)
+                             , _typeIerrSq
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 55, column 9)
+              _pp =
+                  "foreign import" >#< callconvention_ >#< safety_ >#< maybe empty (pp.show) importname_ >#< name_ >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 108, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_FFI callconvention_ (maybe "safe" id safety_) _ent _refname _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 109, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 324, column 9)
+              _nmForParse =
+                  maybe "" id importname_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 325, column 25)
+              (_ent,_entErrs) =
+                  parseForeignEnt ForeignDirection_Import callconvention_ (Just $ show name_) _nmForParse
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typeOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_ForeignExport :: Range ->
+                                 FFIWay ->
+                                 (Maybe String) ->
+                                 Name ->
+                                 T_Type ->
+                                 T_Declaration
+sem_Declaration_ForeignExport range_ callconvention_ exportname_ name_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _typeOidGam :: IdDefOccGam
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 260, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 264, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Foreign _eh) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 439, column 9)
+              _typeOidGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 758, column 29)
+              (_refname,_,_idUseOccGamExport,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 997, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev
+                      (gamUnions [_idUseOccGamExport,_typeIidUseOccGam])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 997, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1001, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_typeIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 32, column 9)
+              _exportrefname =
+                  hsnUniqify HsNameUniqifier_FFE name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 158, column 9)
+              _idOccDef =
+                  IdOcc _exportrefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 158, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 24, column 9)
+              _errFFIWay =
+                  if maybe False (callconvention_ `elem`) $ fmap targiAllowedFFI $ Map.lookup (ehcOptTarget _lhsIopts) allTargetInfoMp
+                  then []
+                  else [rngLift range_ Err_IllegalFFIWay callconvention_]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 153, column 9)
+              _errSq =
+                  Seq.unions [ Seq.fromList _errIdUse
+                             , Seq.fromList (rngLift range_ mkNestErr (pp ("Parse of foreign entity '" ++ _nmForParse ++ "'")) _entErrs)
+                             , _typeIerrSq
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 83, column 9)
+              _pp =
+                  "foreign export" >#< callconvention_ >#< exportname_ >#< name_ >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 142, column 9)
+              _nmForParse =
+                  maybe "" id exportname_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 143, column 25)
+              (_ent,_entErrs) =
+                  parseForeignEnt ForeignDirection_Export callconvention_ (Just $ show name_) _nmForParse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 142, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_FFE _exportrefname callconvention_ _ent (rngLift range_ EH.Expr_Var _refname) _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 146, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typeOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Class :: Range ->
+                         T_ContextItems ->
+                         T_TypeLeftHandSide ->
+                         T_FunctionalDependencies ->
+                         T_MaybeDeclarations ->
+                         T_Declaration
+sem_Declaration_Class range_ context_ typelefthandside_ dependencies_ where_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _contextOfixityGam :: FixityGam
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typelefthandsideOfixityGam :: FixityGam
+              _typelefthandsideOgUniq :: UID
+              _typelefthandsideOidGam :: IdDefOccGam
+              _typelefthandsideOmoduleNm :: HsName
+              _typelefthandsideOnmLev :: NmLev
+              _typelefthandsideOopts :: EHCOpts
+              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typelefthandsideOtopInstanceNmL :: ([HsName])
+              _typelefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _dependenciesOfixityGam :: FixityGam
+              _dependenciesOgUniq :: UID
+              _dependenciesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _dependenciesOidGam :: IdDefOccGam
+              _dependenciesOmoduleNm :: HsName
+              _dependenciesOnameDeclCxt :: NameDeclCxt
+              _dependenciesOnmLev :: NmLev
+              _dependenciesOopts :: EHCOpts
+              _dependenciesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _dependenciesOpragmas :: (Set.Set Pragma.Pragma)
+              _dependenciesOtopInstanceNmL :: ([HsName])
+              _dependenciesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _whereOcaseId :: UID
+              _whereOfixityGam :: FixityGam
+              _whereOgUniq :: UID
+              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _whereOidGam :: IdDefOccGam
+              _whereOmoduleNm :: HsName
+              _whereOnameDeclCxt :: NameDeclCxt
+              _whereOnmLev :: NmLev
+              _whereOopts :: EHCOpts
+              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
+              _whereOpragmas :: (Set.Set Pragma.Pragma)
+              _whereOtopInstanceNmL :: ([HsName])
+              _whereOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _typelefthandsideIeh :: ([EH.TyVar])
+              _typelefthandsideIerrSq :: ErrSq
+              _typelefthandsideIfreeTvarS :: HsNameS
+              _typelefthandsideIgUniq :: UID
+              _typelefthandsideIidDefOccGam :: IdDefOccGam
+              _typelefthandsideIidOccDefs :: ([IdOcc])
+              _typelefthandsideIidUseOccGam :: IdUseOccGam
+              _typelefthandsideIname :: Name
+              _typelefthandsideIpp :: PP_Doc
+              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _typelefthandsideIrange :: Range
+              _typelefthandsideItopInstanceNmL :: ([HsName])
+              _typelefthandsideItrpp :: TrPP
+              _typelefthandsideItypevariables :: Names
+              _typelefthandsideIundefOccGam :: IdUseOccGam
+              _dependenciesIeh :: ([EH.FuncDep])
+              _dependenciesIerrSq :: ErrSq
+              _dependenciesIgUniq :: UID
+              _dependenciesIgathFixityGam :: FixityGam
+              _dependenciesIgathPragmas :: (Set.Set Pragma.Pragma)
+              _dependenciesIidDefOccGam :: IdDefOccGam
+              _dependenciesIidDpdMp :: IdDpdMp
+              _dependenciesIidInClassTySigDefOccGam :: IdDefOccGam
+              _dependenciesIidInInstanceValDefOccGam :: IdDefOccGam
+              _dependenciesIidOccDefs :: ([IdOcc])
+              _dependenciesIidUseOccGam :: IdUseOccGam
+              _dependenciesIneedsError :: Bool
+              _dependenciesIpp :: PP_Doc
+              _dependenciesIppWrap :: (PP_Doc -> PP_Doc)
+              _dependenciesItopInstanceNmL :: ([HsName])
+              _dependenciesItrpp :: TrPP
+              _dependenciesIundefOccGam :: IdUseOccGam
+              _whereIeh :: (Maybe [EH.Decl])
+              _whereIerrSq :: ErrSq
+              _whereIgUniq :: UID
+              _whereIgathFixityGam :: FixityGam
+              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
+              _whereIidDefOccGam :: IdDefOccGam
+              _whereIidDpdMp :: IdDpdMp
+              _whereIidInClassTySigDefOccGam :: IdDefOccGam
+              _whereIidInInstanceValDefOccGam :: IdDefOccGam
+              _whereIidOccDefs :: ([IdOcc])
+              _whereIidUseOccGam :: IdUseOccGam
+              _whereIneedsError :: Bool
+              _whereIpp :: PP_Doc
+              _whereIppWrap :: (PP_Doc -> PP_Doc)
+              _whereItopInstanceNmL :: ([HsName])
+              _whereItrpp :: TrPP
+              _whereIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 27, column 9)
+              _trpp =
+                  (_lhsItr TraceOn_HsOcc $ [_idOccDef >#< "= Class" >#< _classrefname] ++ [ "idUseHereOccL=" >#< ppBracketsCommas _idUseHereOccL ])
+                  >< _contextItrpp >< _typelefthandsideItrpp
+                  >< _dependenciesItrpp
+                  >< _whereItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 21, column 9)
+              _nameDeclCxt =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then NameDeclCxt_Class else NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 15, column 9)
+              _generderivnames =
+                  Map.findWithDefault []
+                      (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then _typelefthandsideIname else _classrefname)
+                      _lhsIgenerDerivMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 220, column 9)
+              _idDefOccGamType =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 220, column 9)
+              _idDefOccGamSigAsVar =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then _whereIidInClassTySigDefOccGam
+                  else _whereIidInClassTySigDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 220, column 9)
+              _idDefOccGam =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Class_Def _eh _ehInst) [_idOccDef]
+                       `gamUnion` _idDefOccGamSigAsVar
+                  else mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Class_Def _eh _ehInst) [_idOccDef]
+                       `gamUnion` _idDefOccGamSigAsVar
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 256, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 448, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 448, column 9)
+              _idDefOccGamInstForClass =
+                  fst $ gamPartition (\_ d -> case doccAsp d of {IdAsp_Inst_Def _ n | n == _classrefname -> True ; _ -> False}) $ _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 789, column 29)
+              (_generderivrefnames,_idUseOccGamGenerDeriv,_errIdUseGenerDeriv) =
+                  let (ns,gs,es) = unzip3
+                        [ ((fld',dflt'),g,e)
+                        | (fld,dflt) <- _generderivnames
+                        , let (_,[fld',dflt'],g,e) = mkUseOccGam _lhsIopts _lhsIidGam [fld,dflt] IdOcc_Val IdAsp_Val_Var range_
+                        ]
+                  in  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                      then (ns, gamUnions gs, concat es)
+                      else (_generderivnames, emptyGam, [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 925, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev
+                      (gamUnions [ _contextIidUseOccGam,_whereIidUseOccGam
+                                 , if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then _idUseOccGamGenerDeriv else emptyGam
+                                 ])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 925, column 9)
+              _idDpdMp =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then idDpdMpUnions
+                           [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                           , idToOccGam2DpdMp [_idOccDef] _idDefOccGamSigAsVar
+                           , idFrOccGam2DpdMp _idDefOccGamSigAsVar [_idOccDef]
+                           , _whereIidDpdMp
+                           ]
+                  else idDpdMpUnions
+                           [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                           , idToOccGam2DpdMp [_idOccDef] _idDefOccGamSigAsVar
+                           , idFrOccGam2DpdMp _idDefOccGamSigAsVar [_idOccDef]
+                           , idFrOccGam2DpdMp _idDefOccGamSigAsVar (gamKeys _idDefOccGamInstForClass)
+                           , _whereIidDpdMp
+                           ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 949, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_whereIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1222, column 29)
+              (_,_ehReorderedDecls,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ False _whereIidDefOccGam Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
+              _instancerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
+                  $ maybe _instancename id _mbPrevInstancename
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 26, column 9)
+              _classrefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
+              _idOccDef =
+                  IdOcc _classrefname IdOcc_Class
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
+              _idOccDefVal =
+                  IdOcc _instancerefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
+              _idOccDefsSig =
+                  _whereIidOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
+              _idOccDefs =
+                  [_idOccDef] ++ _idOccDefsSig
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 242, column 9)
+              _instancename =
+                  hsnUniqifyUID HsNameUniqifier_Class _lUniq (mkHNm _typelefthandsideIname)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 131, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamType
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 130, column 9)
+              _errSq =
+                  Seq.unions [ Seq.fromList _errDupIntro, Seq.fromList _errReorder, _contextIerrSq, _typelefthandsideIerrSq
+                             , _dependenciesIerrSq
+                             , Seq.fromList _errIdUseGenerDeriv
+                             , _whereIerrSq
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 57, column 9)
+              _pp =
+                  "class" >#< ppParens _contextIpp >#< "=>" >#< _typelefthandsideIpp
+                  >#< "|" >#< _dependenciesIpp
+                  >-< indent 2 _whereIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 111, column 25)
+              (_eh,_ehInst) =
+                  let h = rngLift range_ EH.TyExpr_Pred
+                          $ rngLift range_ EH.PrExpr_Class _classrefname (map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
+                      c = map (rngLift range_ EH.TyExpr_Pred) _contextIeh
+                      a = appArr c h
+                      (vals,sigs) = partition EH.ehIsDeclVal $ concat _ehReorderedDecls
+                  in  ( rngLift range_ EH.Decl_Class _classrefname a
+                                _dependenciesIeh
+                                (Just _instancerefname) sigs
+                                _generderivrefnames
+                      , rngLift range_ EH.Decl_Instance (Just (_instancerefname,False)) InstDefault a vals
+                      )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 122, column 9)
+              _lhsOeh =
+                  [_eh,_ehInst]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 304, column 9)
+              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
+                  extrTopInstanceNm _lhsItopInstanceNmL
+              -- -- generated by the unique rule mechanism.
+              (_contextOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _dependenciesIgathFixityGam `gamAddGam` _whereIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _dependenciesIgathPragmas `Set.union` _whereIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _dependenciesIidInClassTySigDefOccGam `gamAddGam` _whereIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _dependenciesIidInInstanceValDefOccGam `gamAddGam` _whereIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _dependenciesIneedsError || _whereIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _typelefthandsideIppWrap . _dependenciesIppWrap . _whereIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _whereIgUniq
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (from local)
+              _contextOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _contextOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _contextOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _typelefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typelefthandsideOgUniq =
+                  _contextIgUniq
+              -- copy rule (from local)
+              _typelefthandsideOidGam =
+                  _idGam
+              -- copy rule (down)
+              _typelefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _typelefthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typelefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typelefthandsideOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _typelefthandsideOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _typelefthandsideOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _dependenciesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _dependenciesOgUniq =
+                  _typelefthandsideIgUniq
+              -- copy rule (down)
+              _dependenciesOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _dependenciesOidGam =
+                  _idGam
+              -- copy rule (down)
+              _dependenciesOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _dependenciesOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _dependenciesOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _dependenciesOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _dependenciesOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _dependenciesOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _dependenciesOtopInstanceNmL =
+                  _typelefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _dependenciesOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _whereOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _whereOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _whereOgUniq =
+                  _dependenciesIgUniq
+              -- copy rule (down)
+              _whereOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _whereOidGam =
+                  _idGam
+              -- copy rule (down)
+              _whereOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _whereOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _whereOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _whereOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _whereOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _whereOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _whereOtopInstanceNmL =
+                  _dependenciesItopInstanceNmL
+              -- copy rule (down)
+              _whereOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItrpp,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
+                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL _typelefthandsideOtr
+              ( _dependenciesIeh,_dependenciesIerrSq,_dependenciesIgUniq,_dependenciesIgathFixityGam,_dependenciesIgathPragmas,_dependenciesIidDefOccGam,_dependenciesIidDpdMp,_dependenciesIidInClassTySigDefOccGam,_dependenciesIidInInstanceValDefOccGam,_dependenciesIidOccDefs,_dependenciesIidUseOccGam,_dependenciesIneedsError,_dependenciesIpp,_dependenciesIppWrap,_dependenciesItopInstanceNmL,_dependenciesItrpp,_dependenciesIundefOccGam) =
+                  dependencies_ _dependenciesOfixityGam _dependenciesOgUniq _dependenciesOgenerDerivMp _dependenciesOidGam _dependenciesOmoduleNm _dependenciesOnameDeclCxt _dependenciesOnmLev _dependenciesOopts _dependenciesOpatchEhNmInInstance _dependenciesOpragmas _dependenciesOtopInstanceNmL _dependenciesOtr
+              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidInClassTySigDefOccGam,_whereIidInInstanceValDefOccGam,_whereIidOccDefs,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereItrpp,_whereIundefOccGam) =
+                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnameDeclCxt _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL _whereOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Instance :: Range ->
+                            InstVariant ->
+                            MaybeName ->
+                            Bool ->
+                            T_ContextItems ->
+                            T_Type ->
+                            T_MaybeDeclarations ->
+                            T_Declaration
+sem_Declaration_Instance range_ instVariant_ maybeinstancename_ useimplicitly_ context_ type_ where_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
+              _lhsOeh :: ([EH.Decl])
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _contextOfixityGam :: FixityGam
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _whereOcaseId :: UID
+              _whereOfixityGam :: FixityGam
+              _whereOgUniq :: UID
+              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _whereOidGam :: IdDefOccGam
+              _whereOmoduleNm :: HsName
+              _whereOnameDeclCxt :: NameDeclCxt
+              _whereOnmLev :: NmLev
+              _whereOopts :: EHCOpts
+              _whereOpragmas :: (Set.Set Pragma.Pragma)
+              _whereOtopInstanceNmL :: ([HsName])
+              _whereOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              _whereIeh :: (Maybe [EH.Decl])
+              _whereIerrSq :: ErrSq
+              _whereIgUniq :: UID
+              _whereIgathFixityGam :: FixityGam
+              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
+              _whereIidDefOccGam :: IdDefOccGam
+              _whereIidDpdMp :: IdDpdMp
+              _whereIidInClassTySigDefOccGam :: IdDefOccGam
+              _whereIidInInstanceValDefOccGam :: IdDefOccGam
+              _whereIidOccDefs :: ([IdOcc])
+              _whereIidUseOccGam :: IdUseOccGam
+              _whereIneedsError :: Bool
+              _whereIpp :: PP_Doc
+              _whereIppWrap :: (PP_Doc -> PP_Doc)
+              _whereItopInstanceNmL :: ([HsName])
+              _whereItrpp :: TrPP
+              _whereIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 32, column 9)
+              _trpp =
+                  (_lhsItr TraceOn_HsOcc $ [_idOccDef >#< "= Instance" >#< _classrefname]
+                                                      ++ [ "idUseHereOccL=" >#< ppBracketsCommas _idUseHereOccL
+                                                         , "generRequiresReprTypes=" >#< _generRequiresReprTypes
+                                                         , "idUseOccGamGenerRepr=" >#< ppGam _idUseOccGamGenerRepr
+                                                         , "idUseHereGenerReprOccL=" >#< ppBracketsCommas _idUseHereGenerReprOccL
+                                                         ])
+                  >< _contextItrpp >< _typeItrpp >< _whereItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 19, column 9)
+              _nameDeclCxt =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then NameDeclCxt_Instance else NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 20, column 9)
+              _generRequiresReprTypes =
+                  case (instVariant_, Map.lookup _typeIconNm _lhsIgenerDerivMp) of
+                      (InstDeriving InstDerivingFrom_Standalone, Just (_:_)) | ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                        -> True
+                      _ -> False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 232, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_  _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 232, column 9)
+              _idDefOccGamValAsVar =
+                  _whereIidInInstanceValDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 232, column 9)
+              _idDefOccGam =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) [_idOccDef]
+                       `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
+                  else mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) [_idOccDef]
+                       `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 452, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 702, column 29)
+              (_classrefname,_,_idUseOccGamInst,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [_typeIconNm] IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 705, column 29)
+              (_,_,_idUseOccGamGenerRepr,_) =
+                  mkUseOccGamDfltAsp _lhsIopts _lhsIidGam
+                      (if _generRequiresReprTypes
+                       then
+                            [(hsnNm2GenerReprSyn a $ ioccNm o, ioccKind o) | (o,_) <- gamToAssocL _typeIidUseOccGam, a <- [0 .. 1]]
+                       else [])
+                      range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 951, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then splitIdUseOccGam _lhsInmLev
+                         (gamUnions [_idUseOccGamInst,_contextIidUseOccGam,_typeIidUseOccGam,_whereIidUseOccGam])
+                  else splitIdUseOccGam _lhsInmLev
+                         (gamUnions [_idUseOccGamInst,_contextIidUseOccGam,_typeIidUseOccGam,_whereIidUseOccGam])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 957, column 29)
+              (_,_idUseHereGenerReprOccL,_,_) =
+                  splitIdUseOccGam _lhsInmLev _idUseOccGamGenerRepr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 951, column 9)
+              _idDpdMp =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then idDpdMpUnions
+                           [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                           , idDpdMpSingleton _idOccDefVal _idOccDef
+                           , idToOccL2DpdMp [_idOccDef] _idUseHereGenerReprOccL
+                           , _whereIidDpdMp
+                           ]
+                  else idDpdMpUnions
+                           [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                           , idDpdMpSingleton _idOccDefVal _idOccDef
+                           , _whereIidDpdMp
+                           ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 971, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_whereIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1222, column 29)
+              (_,_ehReorderedDecls,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ False _whereIidDefOccGam Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1257, column 9)
+              _whereOpatchEhNmInInstance =
+                  hsnSetQual (panicJust "Declaration.Instance.patchEhNmInInstance" $ hsnQualifier _classrefname)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
+              _instancerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
+                  $ maybe _instancename id _mbPrevInstancename
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 141, column 9)
+              _idOccDef =
+                  IdOcc _instancerefname IdOcc_Inst
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 141, column 9)
+              _idOccDefVal =
+                  IdOcc _instancerefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 141, column 9)
+              _idOccDefs =
+                  [_idOccDef,_idOccDefVal]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 240, column 9)
+              _instancename =
+                  maybe (hsnUniqifyUID HsNameUniqifier_ClassDict _lUniq (_typeIconNm)) id maybeinstancename_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 26, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 137, column 9)
+              _errSq =
+                  Seq.firstNotEmpty [Seq.fromList _errIdUse, _contextIerrSq, _typeIerrSq,                     _whereIerrSq, Seq.fromList _errReorder]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 61, column 9)
+              _pp =
+                  "instance" >|< ppInstNm useimplicitly_ maybeinstancename_
+                  >#< ppParens _contextIpp >#< "=>" >#< _typeIpp
+                  >-< indent 2 _whereIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 124, column 9)
+              _eh =
+                  let
+                      h = rngLift range_ EH.TyExpr_Pred $ panicJust "HS.ToEH.Instance.eh.type.ehMbAsPr" _typeIehMbAsPr
+                      c = map (rngLift range_ EH.TyExpr_Pred) _contextIeh
+                  in  rngLift range_ EH.Decl_Instance (Just (_instancerefname,useimplicitly_)) instVariant_ (appArr c h) (concat _ehReorderedDecls)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 128, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 193, column 9)
+              _isAsPred =
+                  True
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 304, column 9)
+              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
+                  extrTopInstanceNm _lhsItopInstanceNmL
+              -- -- generated by the unique rule mechanism.
+              (_contextOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _whereIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _whereIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _whereIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _whereIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _whereIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _typeIppWrap . _whereIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _whereIgUniq
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (from local)
+              _contextOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _contextOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _contextOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _contextIgUniq
+              -- copy rule (from local)
+              _typeOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _whereOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _whereOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _whereOgUniq =
+                  _typeIgUniq
+              -- copy rule (down)
+              _whereOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _whereOidGam =
+                  _idGam
+              -- copy rule (down)
+              _whereOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _whereOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _whereOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _whereOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _whereOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _whereOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _whereOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidInClassTySigDefOccGam,_whereIidInInstanceValDefOccGam,_whereIidOccDefs,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereItrpp,_whereIundefOccGam) =
+                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnameDeclCxt _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL _whereOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_InstanceUseImplicitly :: Range ->
+                                         T_Expression ->
+                                         T_Type ->
+                                         T_Declaration
+sem_Declaration_InstanceUseImplicitly range_ expression_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 40, column 9)
+              _trpp =
+                  (_lhsItr TraceOn_HsOcc $ [_idOccDef >#< "= InstanceUseImplicitly" >#< _classrefname] ++ [ "idUseHereOccL=" >#< ppBracketsCommas _idUseHereOccL ])
+                  >< _expressionItrpp >< _typeItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 242, column 9)
+              _idDefOccGam =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) [_idOccDef]
+                       `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
+                  else mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 715, column 29)
+              (_classrefname,_,_idUseOccGamInst,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [_typeIconNm] IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 973, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then splitIdUseOccGam _lhsInmLev
+                         (gamUnions [_idUseOccGamInst,_typeIidUseOccGam,_expressionIidUseOccGam])
+                  else splitIdUseOccGam _lhsInmLev
+                         (gamUnions [_idUseOccGamInst,_typeIidUseOccGam,_expressionIidUseOccGam])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 973, column 9)
+              _idDpdMp =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts
+                  then idDpdMpUnions
+                           [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+                           , idDpdMpSingleton _idOccDefVal _idOccDef
+                           ]
+                  else idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
+              _instancerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
+                  $ maybe _instancename id _mbPrevInstancename
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 145, column 9)
+              _idOccDef =
+                  IdOcc _instancerefname IdOcc_Inst
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 145, column 9)
+              _idOccDefVal =
+                  IdOcc _instancerefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 145, column 9)
+              _idOccDefs =
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then [_idOccDef,_idOccDefVal] else [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 244, column 9)
+              _instancename =
+                  mkHNm _lUniq
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 139, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq, _typeIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 65, column 9)
+              _pp =
+                  "instance" >#< _expressionIpp >#< "<:" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 130, column 9)
+              _eh =
+                  let
+                      h =                                       panicJust "HS.ToEH.InstanceUseImplicitly.eh.type.ehMbAsPr" _typeIehMbAsPr
+                  in  rngLift range_ EH.Decl_InstanceIntro (Just _instancerefname) _expressionIeh h
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 133, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 193, column 9)
+              _isAsPred =
+                  True
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 304, column 9)
+              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
+                  extrTopInstanceNm _lhsItopInstanceNmL
+              -- -- generated by the unique rule mechanism.
+              (_expressionOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _undefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _expressionOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _expressionOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typeOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Default :: Range ->
+                           MaybeName ->
+                           T_Types ->
+                           T_Declaration
+sem_Declaration_Default range_ name_ types_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _typesOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typesOfixityGam :: FixityGam
+              _typesOidGam :: IdDefOccGam
+              _typesOisAsPred :: Bool
+              _typesOnmLev :: NmLev
+              _typesOopts :: EHCOpts
+              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typesOtopInstanceNmL :: ([HsName])
+              _typesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typesIeh :: ([EH.TyExpr])
+              _typesIerrSq :: ErrSq
+              _typesIfreeTvarS :: HsNameS
+              _typesIgUniq :: UID
+              _typesIidUseOccGam :: IdUseOccGam
+              _typesIpp :: PP_Doc
+              _typesIppL :: ([PP_Doc])
+              _typesIppWrap :: (PP_Doc -> PP_Doc)
+              _typesItopInstanceNmL :: ([HsName])
+              _typesItrpp :: TrPP
+              _typesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 247, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ (IdAsp_Dflt_Def _eh _ignoredecl) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 718, column 29)
+              (_classrefname,_classrefnames,_idUseOccGamDflt,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam (catMaybes [name_]) IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 986, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev
+                      (gamUnions [_idUseOccGamDflt,_typesIidUseOccGam])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 986, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 990, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_typesIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 149, column 9)
+              _idOccDef =
+                  IdOcc _defaultname IdOcc_Dflt
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 149, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 246, column 9)
+              _defaultname =
+                  mkHNm _lUniq
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 141, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _typesIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 67, column 9)
+              _pp =
+                  "default" >#< maybe empty pp name_ >#< ppParensCommas _typesIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 135, column 9)
+              _ignoredecl =
+                  null _classrefnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 135, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_Default _classrefname _typesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 137, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_typesOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typesItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typesItopInstanceNmL
+              -- copy rule (down)
+              _typesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typesOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typesOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typesOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typesOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typesOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _typesOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typesOtr =
+                  _lhsItr
+              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesItrpp,_typesIundefOccGam) =
+                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL _typesOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Type :: Range ->
+                        T_TypeLeftHandSide ->
+                        T_Type ->
+                        T_Declaration
+sem_Declaration_Type range_ typelefthandside_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typelefthandsideOfixityGam :: FixityGam
+              _typelefthandsideOgUniq :: UID
+              _typelefthandsideOidGam :: IdDefOccGam
+              _typelefthandsideOmoduleNm :: HsName
+              _typelefthandsideOnmLev :: NmLev
+              _typelefthandsideOopts :: EHCOpts
+              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typelefthandsideOtopInstanceNmL :: ([HsName])
+              _typelefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typelefthandsideIeh :: ([EH.TyVar])
+              _typelefthandsideIerrSq :: ErrSq
+              _typelefthandsideIfreeTvarS :: HsNameS
+              _typelefthandsideIgUniq :: UID
+              _typelefthandsideIidDefOccGam :: IdDefOccGam
+              _typelefthandsideIidOccDefs :: ([IdOcc])
+              _typelefthandsideIidUseOccGam :: IdUseOccGam
+              _typelefthandsideIname :: Name
+              _typelefthandsideIpp :: PP_Doc
+              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _typelefthandsideIrange :: Range
+              _typelefthandsideItopInstanceNmL :: ([HsName])
+              _typelefthandsideItrpp :: TrPP
+              _typelefthandsideItypevariables :: Names
+              _typelefthandsideIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 249, column 9)
+              _idDefOccGamType =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 249, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 256, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 443, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 992, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 992, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 995, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_typeIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 28, column 9)
+              _typerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 152, column 9)
+              _idOccDef =
+                  IdOcc _typerefname IdOcc_Type
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 152, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 29, column 9)
+              _nmLev =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 141, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamType
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 145, column 9)
+              _errSq =
+                  Seq.unions [ Seq.fromList _errDupIntro, _typelefthandsideIerrSq, _typeIerrSq ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 69, column 9)
+              _pp =
+                  "type" >#< _typelefthandsideIpp >#< "=" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 139, column 9)
+              _eh =
+                  rngLift range_ EH.Decl_Type _typerefname (foldr (rngLift range_ EH.TyExpr_Lam) _typeIeh _typelefthandsideItypevariables)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 140, column 9)
+              _lhsOeh =
+                  [_eh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typelefthandsideIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typelefthandsideItrpp >< _typeItrpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _typelefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typelefthandsideOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _typelefthandsideOidGam =
+                  _idGam
+              -- copy rule (down)
+              _typelefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _typelefthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typelefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typelefthandsideOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _typelefthandsideOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typelefthandsideOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _typelefthandsideIgUniq
+              -- copy rule (from local)
+              _typeOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _typeOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _typelefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItrpp,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
+                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL _typelefthandsideOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Pragma :: Range ->
+                          T_Pragma ->
+                          T_Declaration
+sem_Declaration_Pragma range_ pragma_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _pragmaOgUniq :: UID
+              _pragmaOidGam :: IdDefOccGam
+              _pragmaOnmLev :: NmLev
+              _pragmaOopts :: EHCOpts
+              _pragmaOpatchEhNmInInstance :: PatchEhNmInInstance
+              _pragmaOtopInstanceNmL :: ([HsName])
+              _pragmaOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _pragmaIerrSq :: ErrSq
+              _pragmaIgUniq :: UID
+              _pragmaIgathPragmas :: (Set.Set Pragma.Pragma)
+              _pragmaIidUseOccGam :: IdUseOccGam
+              _pragmaIpp :: PP_Doc
+              _pragmaIppWrap :: (PP_Doc -> PP_Doc)
+              _pragmaItopInstanceNmL :: ([HsName])
+              _pragmaItrpp :: TrPP
+              _pragmaIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 75, column 9)
+              _pp =
+                  "{-#" >#< _pragmaIpp >#< "#-}"
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 148, column 9)
+              _eh =
+                  undefined
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 149, column 9)
+              _lhsOeh =
+                  []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _pragmaIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _pragmaIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _pragmaIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _pragmaIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _pragmaItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _pragmaIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _pragmaIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _pragmaItopInstanceNmL
+              -- copy rule (down)
+              _pragmaOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _pragmaOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _pragmaOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _pragmaOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _pragmaOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _pragmaOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _pragmaOtr =
+                  _lhsItr
+              ( _pragmaIerrSq,_pragmaIgUniq,_pragmaIgathPragmas,_pragmaIidUseOccGam,_pragmaIpp,_pragmaIppWrap,_pragmaItopInstanceNmL,_pragmaItrpp,_pragmaIundefOccGam) =
+                  pragma_ _pragmaOgUniq _pragmaOidGam _pragmaOnmLev _pragmaOopts _pragmaOpatchEhNmInInstance _pragmaOtopInstanceNmL _pragmaOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declaration_Module :: Range ->
+                          MaybeName ->
+                          T_MaybeExports ->
+                          T_Declaration
+sem_Declaration_Module range_ name_ exports_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _exportsOfixityGam :: FixityGam
+              _exportsOgUniq :: UID
+              _exportsOidGam :: IdDefOccGam
+              _exportsOisMainMod :: Bool
+              _exportsOisTopMod :: Bool
+              _exportsOmoduleNm :: HsName
+              _exportsOnmLev :: NmLev
+              _exportsOopts :: EHCOpts
+              _exportsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _exportsOtopInstanceNmL :: ([HsName])
+              _exportsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _exportsIerrSq :: ErrSq
+              _exportsIgUniq :: UID
+              _exportsIgathFixityGam :: FixityGam
+              _exportsIidUseOccGam :: IdUseOccGam
+              _exportsIpp :: PP_Doc
+              _exportsIppWrap :: (PP_Doc -> PP_Doc)
+              _exportsItopInstanceNmL :: ([HsName])
+              _exportsItrpp :: TrPP
+              _exportsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1263, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 148, column 9)
+              _eh =
+                  undefined
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 149, column 9)
+              _lhsOeh =
+                  []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 195, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 233, column 9)
+              _doGenVarWild =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
+              _isMainMod =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
+              _isTopMod =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _exportsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _exportsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _exportsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _exportsIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _exportsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _exportsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _exportsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _exportsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _exportsItopInstanceNmL
+              -- copy rule (down)
+              _exportsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _exportsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _exportsOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _exportsOisMainMod =
+                  _isMainMod
+              -- copy rule (from local)
+              _exportsOisTopMod =
+                  _isTopMod
+              -- copy rule (down)
+              _exportsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _exportsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _exportsOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _exportsOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _exportsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _exportsOtr =
+                  _lhsItr
+              ( _exportsIerrSq,_exportsIgUniq,_exportsIgathFixityGam,_exportsIidUseOccGam,_exportsIpp,_exportsIppWrap,_exportsItopInstanceNmL,_exportsItrpp,_exportsIundefOccGam) =
+                  exports_ _exportsOfixityGam _exportsOgUniq _exportsOidGam _exportsOisMainMod _exportsOisTopMod _exportsOmoduleNm _exportsOnmLev _exportsOopts _exportsOpatchEhNmInInstance _exportsOtopInstanceNmL _exportsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Declarations ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.Decl]
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Declaration 
+         child tl             : Declarations 
+      alternative Nil:
+-}
+-- cata
+sem_Declarations :: Declarations ->
+                    T_Declarations
+sem_Declarations list =
+    (Prelude.foldr sem_Declarations_Cons sem_Declarations_Nil (Prelude.map sem_Declaration list))
+-- semantic domain
+type T_Declarations = UID ->
+                      FixityGam ->
+                      UID ->
+                      (Map.Map HsName [(HsName,HsName)]) ->
+                      IdDefOccGam ->
+                      HsName ->
+                      NameDeclCxt ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      (Set.Set Pragma.Pragma) ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( ([EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Declarations_Cons :: T_Declaration ->
+                         T_Declarations ->
+                         T_Declarations
+sem_Declarations_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnameDeclCxt :: NameDeclCxt
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnameDeclCxt :: NameDeclCxt
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: ([EH.Decl])
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidDpdMp :: IdDpdMp
+              _hdIidInClassTySigDefOccGam :: IdDefOccGam
+              _hdIidInInstanceValDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIneedsError :: Bool
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.Decl])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathFixityGam :: FixityGam
+              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidDpdMp :: IdDpdMp
+              _tlIidInClassTySigDefOccGam :: IdDefOccGam
+              _tlIidInInstanceValDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIneedsError :: Bool
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 66, column 28)
+              _lhsOeh =
+                  _hdIeh ++ _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _hdIgathPragmas `Set.union` _tlIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _hdIidInClassTySigDefOccGam `gamAddGam` _tlIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _hdIidInInstanceValDefOccGam `gamAddGam` _tlIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _hdIneedsError || _tlIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidInClassTySigDefOccGam,_hdIidInInstanceValDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnameDeclCxt _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidInClassTySigDefOccGam,_tlIidInInstanceValDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnameDeclCxt _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Declarations_Nil :: T_Declarations
+sem_Declarations_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 66, column 28)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Deriving ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         ehDataTyExpr         : EH.TyExpr
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         idOccDefsData        : [IdOcc]
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         hasGenericDeriving   : Bool
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Deriving:
+         child range          : {Range}
+         child maybeinstancename : {MaybeName}
+         child useimplicitly  : {Bool}
+         child name           : {Name}
+         visit 0:
+            local idDefOccGam : _
+            local classrefname : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local instancerefname : _
+            local idOccDef    : _
+            local idOccDefVal : _
+            local idOccDefs   : _
+            local hasGenericDeriving : _
+            local instancename : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local mbPrevInstancename : _
+            local lUniq       : {UID}
+-}
+-- cata
+sem_Deriving :: Deriving ->
+                T_Deriving
+sem_Deriving (Deriving_Deriving _range _maybeinstancename _useimplicitly _name) =
+    (sem_Deriving_Deriving _range _maybeinstancename _useimplicitly _name)
+-- semantic domain
+type T_Deriving = (EH.TyExpr) ->
+                  FixityGam ->
+                  UID ->
+                  (Map.Map HsName [(HsName,HsName)]) ->
+                  IdDefOccGam ->
+                  ([IdOcc]) ->
+                  HsName ->
+                  NameDeclCxt ->
+                  NmLev ->
+                  EHCOpts ->
+                  PatchEhNmInInstance ->
+                  (Set.Set Pragma.Pragma) ->
+                  ([HsName]) ->
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
+                  ( ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),Bool,IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Deriving_Deriving :: Range ->
+                         MaybeName ->
+                         Bool ->
+                         Name ->
+                         T_Deriving
+sem_Deriving_Deriving range_ maybeinstancename_ useimplicitly_ name_ =
+    (\ _lhsIehDataTyExpr
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsIidOccDefsData
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidDpdMp :: IdDpdMp
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lhsOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOhasGenericDeriving :: Bool
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 329, column 9)
+              _idDefOccGam =
+                  if _hasGenericDeriving
+                  then emptyGam
+                  else
+                       mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) [_idOccDef]
+                       `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 723, column 29)
+              (_classrefname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1025, column 9)
+              _lhsOidDpdMp =
+                  if _hasGenericDeriving
+                  then emptyIdDpdMp
+                  else
+                       (if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then idToOccGam2DpdMp [_idOccDef] _idUseOccGam else emptyIdDpdMp)
+                       `idDpdMpUnion`
+                       idDpdMpUnions
+                           [ idDpdMpList _idOccDef _lhsIidOccDefsData
+                           , idDpdMpSingleton _idOccDefVal _idOccDef
+                           ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 37, column 9)
+              _instancerefname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
+                  $ maybe _instancename id _mbPrevInstancename
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 190, column 9)
+              _idOccDef =
+                  IdOcc _instancerefname IdOcc_Inst
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 190, column 9)
+              _idOccDefVal =
+                  IdOcc _instancerefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 190, column 9)
+              _idOccDefs =
+                  if _hasGenericDeriving then [] else
+                  [_idOccDef,_idOccDefVal]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 200, column 9)
+              _hasGenericDeriving =
+                  name_ == (hsnQualified $ ehbnGenerClassGeneric $ ehcOptBuiltinNames $ _lhsIopts)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 254, column 9)
+              _instancename =
+                  maybe (mkHNm _lUniq) id maybeinstancename_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 164, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 87, column 9)
+              _pp =
+                  ppInstNm useimplicitly_ maybeinstancename_ >#< name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 169, column 9)
+              _eh =
+                  let h = rngLift range_ EH.TyExpr_Pred
+                          $ rngLift range_ EH.PrExpr_Class _classrefname [rngLift range_ EH.TyExpr_Parens _lhsIehDataTyExpr]
+                  in  rngLift range_ EH.Decl_Instance (Just (_instancerefname,useimplicitly_)) (InstDeriving InstDerivingFrom_Datatype) h []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 309, column 9)
+              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
+                  extrTopInstanceNm _lhsItopInstanceNmL
+              -- -- generated by the unique rule mechanism.
+              (_lhsOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 196, column 43)
+              _lhsOhasGenericDeriving =
+                  _hasGenericDeriving
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOhasGenericDeriving,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Derivings ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         ehDataTyExpr         : EH.TyExpr
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         idOccDefsData        : [IdOcc]
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         hasGenericDeriving   : Bool
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Deriving 
+         child tl             : Derivings 
+      alternative Nil:
+-}
+-- cata
+sem_Derivings :: Derivings ->
+                 T_Derivings
+sem_Derivings list =
+    (Prelude.foldr sem_Derivings_Cons sem_Derivings_Nil (Prelude.map sem_Deriving list))
+-- semantic domain
+type T_Derivings = (EH.TyExpr) ->
+                   FixityGam ->
+                   UID ->
+                   (Map.Map HsName [(HsName,HsName)]) ->
+                   IdDefOccGam ->
+                   ([IdOcc]) ->
+                   HsName ->
+                   NameDeclCxt ->
+                   NmLev ->
+                   EHCOpts ->
+                   PatchEhNmInInstance ->
+                   (Set.Set Pragma.Pragma) ->
+                   ([HsName]) ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                   ( ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),Bool,IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Derivings_Cons :: T_Deriving ->
+                      T_Derivings ->
+                      T_Derivings
+sem_Derivings_Cons hd_ tl_ =
+    (\ _lhsIehDataTyExpr
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsIidOccDefsData
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOhasGenericDeriving :: Bool
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOehDataTyExpr :: (EH.TyExpr)
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOidOccDefsData :: ([IdOcc])
+              _hdOmoduleNm :: HsName
+              _hdOnameDeclCxt :: NameDeclCxt
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOehDataTyExpr :: (EH.TyExpr)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOidOccDefsData :: ([IdOcc])
+              _tlOmoduleNm :: HsName
+              _tlOnameDeclCxt :: NameDeclCxt
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
+              _hdIhasGenericDeriving :: Bool
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidDpdMp :: IdDpdMp
+              _hdIidInClassTySigDefOccGam :: IdDefOccGam
+              _hdIidInInstanceValDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIneedsError :: Bool
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathFixityGam :: FixityGam
+              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
+              _tlIhasGenericDeriving :: Bool
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidDpdMp :: IdDpdMp
+              _tlIidInClassTySigDefOccGam :: IdDefOccGam
+              _tlIidInInstanceValDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIneedsError :: Bool
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 528, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _hdIgathPragmas `Set.union` _tlIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 196, column 43)
+              _lhsOhasGenericDeriving =
+                  _hdIhasGenericDeriving || _tlIhasGenericDeriving
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _hdIidInClassTySigDefOccGam `gamAddGam` _tlIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _hdIidInInstanceValDefOccGam `gamAddGam` _tlIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _hdIneedsError || _tlIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOehDataTyExpr =
+                  _lhsIehDataTyExpr
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOidOccDefsData =
+                  _lhsIidOccDefsData
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOehDataTyExpr =
+                  _lhsIehDataTyExpr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOidOccDefsData =
+                  _lhsIidOccDefsData
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIhasGenericDeriving,_hdIidDefOccGam,_hdIidDpdMp,_hdIidInClassTySigDefOccGam,_hdIidInInstanceValDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOehDataTyExpr _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOidOccDefsData _hdOmoduleNm _hdOnameDeclCxt _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIhasGenericDeriving,_tlIidDefOccGam,_tlIidDpdMp,_tlIidInClassTySigDefOccGam,_tlIidInInstanceValDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOehDataTyExpr _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOidOccDefsData _tlOmoduleNm _tlOnameDeclCxt _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOhasGenericDeriving,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Derivings_Nil :: T_Derivings
+sem_Derivings_Nil =
+    (\ _lhsIehDataTyExpr
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsIidOccDefsData
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOhasGenericDeriving :: Bool
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 530, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 196, column 43)
+              _lhsOhasGenericDeriving =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOhasGenericDeriving,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Export ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+      alternative TypeOrClass:
+         child range          : {Range}
+         child name           : {Name}
+         child names          : {MaybeNames}
+      alternative TypeOrClassComplete:
+         child range          : {Range}
+         child name           : {Name}
+      alternative Module:
+         child range          : {Range}
+         child name           : {Name}
+-}
+-- cata
+sem_Export :: Export ->
+              T_Export
+sem_Export (Export_Variable _range _name) =
+    (sem_Export_Variable _range _name)
+sem_Export (Export_TypeOrClass _range _name _names) =
+    (sem_Export_TypeOrClass _range _name _names)
+sem_Export (Export_TypeOrClassComplete _range _name) =
+    (sem_Export_TypeOrClassComplete _range _name)
+sem_Export (Export_Module _range _name) =
+    (sem_Export_Module _range _name)
+-- semantic domain
+type T_Export = FixityGam ->
+                UID ->
+                IdDefOccGam ->
+                Bool ->
+                Bool ->
+                HsName ->
+                NmLev ->
+                EHCOpts ->
+                PatchEhNmInInstance ->
+                ([HsName]) ->
+                (TraceOn -> [PP_Doc] -> TrPP) ->
+                ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Export_Variable :: Range ->
+                       Name ->
+                       T_Export
+sem_Export_Variable range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Export_TypeOrClass :: Range ->
+                          Name ->
+                          MaybeNames ->
+                          T_Export
+sem_Export_TypeOrClass range_ name_ names_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Export_TypeOrClassComplete :: Range ->
+                                  Name ->
+                                  T_Export
+sem_Export_TypeOrClassComplete range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Export_Module :: Range ->
+                     Name ->
+                     T_Export
+sem_Export_Module range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Exports -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Export 
+         child tl             : Exports 
+      alternative Nil:
+-}
+-- cata
+sem_Exports :: Exports ->
+               T_Exports
+sem_Exports list =
+    (Prelude.foldr sem_Exports_Cons sem_Exports_Nil (Prelude.map sem_Export list))
+-- semantic domain
+type T_Exports = FixityGam ->
+                 UID ->
+                 IdDefOccGam ->
+                 Bool ->
+                 Bool ->
+                 HsName ->
+                 NmLev ->
+                 EHCOpts ->
+                 PatchEhNmInInstance ->
+                 ([HsName]) ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Exports_Cons :: T_Export ->
+                    T_Exports ->
+                    T_Exports
+sem_Exports_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOisMainMod :: Bool
+              _hdOisTopMod :: Bool
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOisMainMod :: Bool
+              _tlOisTopMod :: Bool
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathFixityGam :: FixityGam
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _hdOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _tlOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Exports_Nil :: T_Exports
+sem_Exports_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Expression --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         conNm                : Name
+         eh                   : EH.Expr
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         opChain              : OpChain EH.Expr
+         operatorName         : MaybeName
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Literal:
+         child range          : {Range}
+         child literal        : Literal 
+         visit 0:
+            local litnames    : _
+            local litrefname  : _
+            local litrefnames : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idAsp       : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Constructor:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idAsp       : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative TupleConstructor:
+         child range          : {Range}
+         child arity          : {Int}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Parenthesized:
+         child range          : {Range}
+         child expression     : Expression 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative NormalApplication:
+         child range          : {Range}
+         child function       : Expression 
+         child arguments      : Expressions 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative SectionApplication:
+         child range          : {Range}
+         child leftExpression : MaybeExpression 
+         child operator       : Expression 
+         child rightExpression : MaybeExpression 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local lUniq_1_nm  : {UID}
+      alternative InfixApplication:
+         child range          : {Range}
+         child leftExpression : Expression 
+         child operator       : Expression 
+         child rightExpression : Expression 
+         visit 0:
+            local pp          : _
+            local fgi         : _
+            local eh          : _
+            local isAsPred    : _
+      alternative InfixApplicationChainTop:
+         child range          : {Range}
+         child expression     : Expression 
+         visit 0:
+            local errSq       : _
+            local ehRearrOpChain : _
+            local errRearr    : _
+            local ehFromOpChain : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Lambda:
+         child range          : {Range}
+         child patterns       : Patterns 
+         child expression     : Expression 
+         visit 0:
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Let:
+         child range          : {Range}
+         child isStrict       : {Bool}
+         child declarations   : Declarations 
+         child expression     : Expression 
+         visit 0:
+            local nameDeclCxt : _
+            local idGam       : _
+            local sccOrder    : _
+            local mkSccLet    : _
+            local errReorder  : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local ppExtra     : _
+            local fixityGam   : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Tuple:
+         child range          : {Range}
+         child expressions    : Expressions 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Typed:
+         child range          : {Range}
+         child expression     : Expression 
+         child type           : Type 
+         visit 0:
+            local idDefOccGamType : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative Negate:
+         child range          : {Range}
+         child expression     : Expression 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Annotate:
+         child range          : {Range}
+         child annotation     : ExpressionAnnotation 
+         child expression     : Expression 
+         visit 0:
+            local eh          : _
+            local isAsPred    : _
+      alternative ImpredicativeApplication:
+         child range          : {Range}
+         child function       : Expression 
+         child arguments      : Expressions 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative If:
+         child range          : {Range}
+         child guardExpression : Expression 
+         child thenExpression : Expression 
+         child elseExpression : Expression 
+         visit 0:
+            local valrefnames : _
+            local idUseOccGamVal : _
+            local errIdUseVal : _
+            local typerefname : _
+            local idUseOccGamType : _
+            local errIdUseType : _
+            local idUseOccGam : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Case:
+         child range          : {Range}
+         child expression     : Expression 
+         child alternatives   : Alternatives 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local caseId      : _
+            local isAsPred    : _
+            local lUniq       : {UID}
+      alternative List:
+         child range          : {Range}
+         child expressions    : Expressions 
+         visit 0:
+            local refnames    : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Enum:
+         child range          : {Range}
+         child from           : Expression 
+         child then           : MaybeExpression 
+         child to             : MaybeExpression 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local enumNm      : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Comprehension:
+         child range          : {Range}
+         child expression     : Expression 
+         child qualifiers     : Qualifiers 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative RecordConstruction:
+         child range          : {Range}
+         child name           : {Name}
+         child recordExpressionBindings : RecordExpressionBindings 
+         visit 0:
+            local idAsp       : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative RecordUpdate:
+         child range          : {Range}
+         child expression     : Expression 
+         child recordExpressionBindings : RecordExpressionBindings 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative RowRecordUpdate:
+         child range          : {Range}
+         child expression     : Expression 
+         child rowRecordExpressionUpdates : RowRecordExpressionUpdates 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative RowRecordEmpty:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative RowRecordSelect:
+         child range          : {Range}
+         child expression     : Expression 
+         child name           : {Name}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative Do:
+         child range          : {Range}
+         child statements     : Statements 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative ImplicitApplication:
+         child range          : {Range}
+         child function       : Expression 
+         child arguments      : ContextedExpressions 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+      alternative ImplicitLambda:
+         child range          : {Range}
+         child patterns       : ContextedPatterns 
+         child expression     : Expression 
+         visit 0:
+            local idDefOccGamType : _
+            local idGam       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local isAsPred    : _
+-}
+-- cata
+sem_Expression :: Expression ->
+                  T_Expression
+sem_Expression (Expression_Literal _range _literal) =
+    (sem_Expression_Literal _range (sem_Literal _literal))
+sem_Expression (Expression_Variable _range _name) =
+    (sem_Expression_Variable _range _name)
+sem_Expression (Expression_Constructor _range _name) =
+    (sem_Expression_Constructor _range _name)
+sem_Expression (Expression_TupleConstructor _range _arity) =
+    (sem_Expression_TupleConstructor _range _arity)
+sem_Expression (Expression_Parenthesized _range _expression) =
+    (sem_Expression_Parenthesized _range (sem_Expression _expression))
+sem_Expression (Expression_NormalApplication _range _function _arguments) =
+    (sem_Expression_NormalApplication _range (sem_Expression _function) (sem_Expressions _arguments))
+sem_Expression (Expression_SectionApplication _range _leftExpression _operator _rightExpression) =
+    (sem_Expression_SectionApplication _range (sem_MaybeExpression _leftExpression) (sem_Expression _operator) (sem_MaybeExpression _rightExpression))
+sem_Expression (Expression_InfixApplication _range _leftExpression _operator _rightExpression) =
+    (sem_Expression_InfixApplication _range (sem_Expression _leftExpression) (sem_Expression _operator) (sem_Expression _rightExpression))
+sem_Expression (Expression_InfixApplicationChainTop _range _expression) =
+    (sem_Expression_InfixApplicationChainTop _range (sem_Expression _expression))
+sem_Expression (Expression_Lambda _range _patterns _expression) =
+    (sem_Expression_Lambda _range (sem_Patterns _patterns) (sem_Expression _expression))
+sem_Expression (Expression_Let _range _isStrict _declarations _expression) =
+    (sem_Expression_Let _range _isStrict (sem_Declarations _declarations) (sem_Expression _expression))
+sem_Expression (Expression_Tuple _range _expressions) =
+    (sem_Expression_Tuple _range (sem_Expressions _expressions))
+sem_Expression (Expression_Typed _range _expression _type) =
+    (sem_Expression_Typed _range (sem_Expression _expression) (sem_Type _type))
+sem_Expression (Expression_Negate _range _expression) =
+    (sem_Expression_Negate _range (sem_Expression _expression))
+sem_Expression (Expression_Annotate _range _annotation _expression) =
+    (sem_Expression_Annotate _range (sem_ExpressionAnnotation _annotation) (sem_Expression _expression))
+sem_Expression (Expression_ImpredicativeApplication _range _function _arguments) =
+    (sem_Expression_ImpredicativeApplication _range (sem_Expression _function) (sem_Expressions _arguments))
+sem_Expression (Expression_If _range _guardExpression _thenExpression _elseExpression) =
+    (sem_Expression_If _range (sem_Expression _guardExpression) (sem_Expression _thenExpression) (sem_Expression _elseExpression))
+sem_Expression (Expression_Case _range _expression _alternatives) =
+    (sem_Expression_Case _range (sem_Expression _expression) (sem_Alternatives _alternatives))
+sem_Expression (Expression_List _range _expressions) =
+    (sem_Expression_List _range (sem_Expressions _expressions))
+sem_Expression (Expression_Enum _range _from _then _to) =
+    (sem_Expression_Enum _range (sem_Expression _from) (sem_MaybeExpression _then) (sem_MaybeExpression _to))
+sem_Expression (Expression_Comprehension _range _expression _qualifiers) =
+    (sem_Expression_Comprehension _range (sem_Expression _expression) (sem_Qualifiers _qualifiers))
+sem_Expression (Expression_RecordConstruction _range _name _recordExpressionBindings) =
+    (sem_Expression_RecordConstruction _range _name (sem_RecordExpressionBindings _recordExpressionBindings))
+sem_Expression (Expression_RecordUpdate _range _expression _recordExpressionBindings) =
+    (sem_Expression_RecordUpdate _range (sem_Expression _expression) (sem_RecordExpressionBindings _recordExpressionBindings))
+sem_Expression (Expression_RowRecordUpdate _range _expression _rowRecordExpressionUpdates) =
+    (sem_Expression_RowRecordUpdate _range (sem_Expression _expression) (sem_RowRecordExpressionUpdates _rowRecordExpressionUpdates))
+sem_Expression (Expression_RowRecordEmpty _range) =
+    (sem_Expression_RowRecordEmpty _range)
+sem_Expression (Expression_RowRecordSelect _range _expression _name) =
+    (sem_Expression_RowRecordSelect _range (sem_Expression _expression) _name)
+sem_Expression (Expression_Do _range _statements) =
+    (sem_Expression_Do _range (sem_Statements _statements))
+sem_Expression (Expression_ImplicitApplication _range _function _arguments) =
+    (sem_Expression_ImplicitApplication _range (sem_Expression _function) (sem_ContextedExpressions _arguments))
+sem_Expression (Expression_ImplicitLambda _range _patterns _expression) =
+    (sem_Expression_ImplicitLambda _range (sem_ContextedPatterns _patterns) (sem_Expression _expression))
+-- semantic domain
+type T_Expression = UID ->
+                    FixityGam ->
+                    UID ->
+                    (Map.Map HsName [(HsName,HsName)]) ->
+                    IdDefOccGam ->
+                    HsName ->
+                    NmLev ->
+                    EHCOpts ->
+                    PatchEhNmInInstance ->
+                    (Set.Set Pragma.Pragma) ->
+                    ([HsName]) ->
+                    (TraceOn -> [PP_Doc] -> TrPP) ->
+                    ( Name,(EH.Expr),ErrSq,UID,IdUseOccGam,(OpChain EH.Expr),MaybeName,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Expression_Literal :: Range ->
+                          T_Literal ->
+                          T_Expression
+sem_Expression_Literal range_ literal_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _literalOgUniq :: UID
+              _literalOidGam :: IdDefOccGam
+              _literalOnmLev :: NmLev
+              _literalOopts :: EHCOpts
+              _literalOpatchEhNmInInstance :: PatchEhNmInInstance
+              _literalOtopInstanceNmL :: ([HsName])
+              _literalOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _literalIeh :: Literal
+              _literalIerrSq :: ErrSq
+              _literalIgUniq :: UID
+              _literalIidUseOccGam :: IdUseOccGam
+              _literalIpp :: PP_Doc
+              _literalIppWrap :: (PP_Doc -> PP_Doc)
+              _literalItopInstanceNmL :: ([HsName])
+              _literalItrpp :: TrPP
+              _literalIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 554, column 9)
+              _litnames =
+                  litNames _lhsIopts _literalIeh False 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 555, column 29)
+              (_litrefname,_litrefnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam' _lhsIopts _lhsIidGam _litnames range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 557, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam, _literalIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 13, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _literalIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 467, column 9)
+              _eh =
+                  case _literalIeh of
+                    Literal_Int    r b s -> fst $ ehExpLitInt r b s 1 _litrefnames
+                    Literal_Char   r s -> rngLift r EH.Expr_CConst (head s)
+                    Literal_String r s -> fst $ ehExpLitString _lhsIopts r s _litrefnames
+                    Literal_Float  r s -> fst $ ehExpLitFloat r s 1 _litrefnames
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _literalIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _literalIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _literalItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _literalIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _literalIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _literalItopInstanceNmL
+              -- copy rule (down)
+              _literalOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _literalOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _literalOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _literalOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _literalOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _literalOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _literalOtr =
+                  _lhsItr
+              ( _literalIeh,_literalIerrSq,_literalIgUniq,_literalIidUseOccGam,_literalIpp,_literalIppWrap,_literalItopInstanceNmL,_literalItrpp,_literalIundefOccGam) =
+                  literal_ _literalOgUniq _literalOidGam _literalOnmLev _literalOopts _literalOpatchEhNmInInstance _literalOtopInstanceNmL _literalOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Variable :: Range ->
+                           Name ->
+                           T_Expression
+sem_Expression_Variable range_ name_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 9)
+              _idAsp =
+                  IdAsp_Val_Var
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 565, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
+                      dbgnm = mkHNm "putStrLn"
+                      dbgoc = IdOcc dbgnm IdOcc_Val
+                  in
+                              x
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 15, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 194, column 9)
+              _pp =
+                  pp name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
+              _lhsOoperatorName =
+                  Just _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 473, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_Var _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Constructor :: Range ->
+                              Name ->
+                              T_Expression
+sem_Expression_Constructor range_ name_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 562, column 9)
+              _idAsp =
+                  IdAsp_Val_Con
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 565, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
+                      dbgnm = mkHNm "putStrLn"
+                      dbgoc = IdOcc dbgnm IdOcc_Val
+                  in
+                              x
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 270, column 9)
+              _lhsOconNm =
+                  name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 15, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 196, column 9)
+              _pp =
+                  ppCon name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
+              _lhsOoperatorName =
+                  Just _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 475, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_Con _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_TupleConstructor :: Range ->
+                                   Int ->
+                                   T_Expression
+sem_Expression_TupleConstructor range_ arity_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 198, column 9)
+              _pp =
+                  ppParens (replicate (arity_ - 1) (','))
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 477, column 9)
+              _eh =
+                  ehTupleConstructor range_ arity_ EH.Expr_Var EH.PatExpr_Var EH.Expr_Lam
+                      (\_ x -> x) EH.Expr_Rec EH.RecExpr_Ext EH.RecExpr_Empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Parenthesized :: Range ->
+                                T_Expression ->
+                                T_Expression
+sem_Expression_Parenthesized range_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 200, column 9)
+              _pp =
+                  ppParens _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 480, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_Parens _expressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_NormalApplication :: Range ->
+                                    T_Expression ->
+                                    T_Expressions ->
+                                    T_Expression
+sem_Expression_NormalApplication range_ function_ arguments_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _functionOcaseId :: UID
+              _functionOfixityGam :: FixityGam
+              _functionOgUniq :: UID
+              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _functionOidGam :: IdDefOccGam
+              _functionOmoduleNm :: HsName
+              _functionOnmLev :: NmLev
+              _functionOopts :: EHCOpts
+              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _functionOpragmas :: (Set.Set Pragma.Pragma)
+              _functionOtopInstanceNmL :: ([HsName])
+              _functionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _argumentsOcaseId :: UID
+              _argumentsOfixityGam :: FixityGam
+              _argumentsOgUniq :: UID
+              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _argumentsOidGam :: IdDefOccGam
+              _argumentsOmoduleNm :: HsName
+              _argumentsOnmLev :: NmLev
+              _argumentsOopts :: EHCOpts
+              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
+              _argumentsOtopInstanceNmL :: ([HsName])
+              _argumentsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _functionIconNm :: Name
+              _functionIeh :: (EH.Expr)
+              _functionIerrSq :: ErrSq
+              _functionIgUniq :: UID
+              _functionIidUseOccGam :: IdUseOccGam
+              _functionIopChain :: (OpChain EH.Expr)
+              _functionIoperatorName :: MaybeName
+              _functionIpp :: PP_Doc
+              _functionIppWrap :: (PP_Doc -> PP_Doc)
+              _functionItopInstanceNmL :: ([HsName])
+              _functionItrpp :: TrPP
+              _functionIundefOccGam :: IdUseOccGam
+              _argumentsIeh :: ([EH.Expr])
+              _argumentsIerrSq :: ErrSq
+              _argumentsIgUniq :: UID
+              _argumentsIidUseOccGam :: IdUseOccGam
+              _argumentsIpp :: PP_Doc
+              _argumentsIppL :: ([PP_Doc])
+              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
+              _argumentsItopInstanceNmL :: ([HsName])
+              _argumentsItrpp :: TrPP
+              _argumentsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 202, column 9)
+              _pp =
+                  ppAppTop  (_functionIconNm,_functionIpp)
+                            _argumentsIppL (_functionIpp >#< ppSpaces _argumentsIppL)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 482, column 9)
+              _eh =
+                  appRngTopApp range_ (_functionIeh : _argumentsIeh)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _functionIerrSq `Seq.union` _argumentsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _functionIppWrap . _argumentsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _functionItrpp >< _argumentsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _argumentsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _argumentsItopInstanceNmL
+              -- copy rule (down)
+              _functionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _functionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _functionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _functionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _functionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _functionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _functionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _functionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _functionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _functionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _functionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _functionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _argumentsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _argumentsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _argumentsOgUniq =
+                  _functionIgUniq
+              -- copy rule (down)
+              _argumentsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _argumentsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _argumentsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _argumentsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _argumentsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _argumentsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _argumentsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _argumentsOtopInstanceNmL =
+                  _functionItopInstanceNmL
+              -- copy rule (down)
+              _argumentsOtr =
+                  _lhsItr
+              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItrpp,_functionIundefOccGam) =
+                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL _functionOtr
+              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsItrpp,_argumentsIundefOccGam) =
+                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL _argumentsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_SectionApplication :: Range ->
+                                     T_MaybeExpression ->
+                                     T_Expression ->
+                                     T_MaybeExpression ->
+                                     T_Expression
+sem_Expression_SectionApplication range_ leftExpression_ operator_ rightExpression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _leftExpressionOgUniq :: UID
+              _lUniq_1_nm :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftExpressionOcaseId :: UID
+              _leftExpressionOfixityGam :: FixityGam
+              _leftExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _leftExpressionOidGam :: IdDefOccGam
+              _leftExpressionOmoduleNm :: HsName
+              _leftExpressionOnmLev :: NmLev
+              _leftExpressionOopts :: EHCOpts
+              _leftExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _leftExpressionOtopInstanceNmL :: ([HsName])
+              _leftExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _operatorOcaseId :: UID
+              _operatorOfixityGam :: FixityGam
+              _operatorOgUniq :: UID
+              _operatorOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _operatorOidGam :: IdDefOccGam
+              _operatorOmoduleNm :: HsName
+              _operatorOnmLev :: NmLev
+              _operatorOopts :: EHCOpts
+              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
+              _operatorOpragmas :: (Set.Set Pragma.Pragma)
+              _operatorOtopInstanceNmL :: ([HsName])
+              _operatorOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightExpressionOcaseId :: UID
+              _rightExpressionOfixityGam :: FixityGam
+              _rightExpressionOgUniq :: UID
+              _rightExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _rightExpressionOidGam :: IdDefOccGam
+              _rightExpressionOmoduleNm :: HsName
+              _rightExpressionOnmLev :: NmLev
+              _rightExpressionOopts :: EHCOpts
+              _rightExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _rightExpressionOtopInstanceNmL :: ([HsName])
+              _rightExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftExpressionIeh :: (Maybe EH.Expr)
+              _leftExpressionIerrSq :: ErrSq
+              _leftExpressionIgUniq :: UID
+              _leftExpressionIidUseOccGam :: IdUseOccGam
+              _leftExpressionIpp :: PP_Doc
+              _leftExpressionIppMb :: (Maybe PP_Doc)
+              _leftExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _leftExpressionItopInstanceNmL :: ([HsName])
+              _leftExpressionItrpp :: TrPP
+              _leftExpressionIundefOccGam :: IdUseOccGam
+              _operatorIconNm :: Name
+              _operatorIeh :: (EH.Expr)
+              _operatorIerrSq :: ErrSq
+              _operatorIgUniq :: UID
+              _operatorIidUseOccGam :: IdUseOccGam
+              _operatorIopChain :: (OpChain EH.Expr)
+              _operatorIoperatorName :: MaybeName
+              _operatorIpp :: PP_Doc
+              _operatorIppWrap :: (PP_Doc -> PP_Doc)
+              _operatorItopInstanceNmL :: ([HsName])
+              _operatorItrpp :: TrPP
+              _operatorIundefOccGam :: IdUseOccGam
+              _rightExpressionIeh :: (Maybe EH.Expr)
+              _rightExpressionIerrSq :: ErrSq
+              _rightExpressionIgUniq :: UID
+              _rightExpressionIidUseOccGam :: IdUseOccGam
+              _rightExpressionIpp :: PP_Doc
+              _rightExpressionIppMb :: (Maybe PP_Doc)
+              _rightExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _rightExpressionItopInstanceNmL :: ([HsName])
+              _rightExpressionItrpp :: TrPP
+              _rightExpressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 207, column 9)
+              _pp =
+                  let e = case (_leftExpressionIppMb,_rightExpressionIppMb) of
+                            (Just l ,Nothing) -> l >#< _operatorIpp
+                            (Nothing,Just r ) ->       _operatorIpp >#< r
+                            (Nothing,Nothing) ->       _operatorIpp
+                  in  ppParens e
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 488, column 9)
+              _eh =
+                  ehSection
+                      _lUniq_1_nm range_
+                      EH.Expr_Var EH.PatExpr_Var EH.Expr_Lam
+                      _leftExpressionIeh _operatorIeh _rightExpressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_leftExpressionOgUniq,_lUniq_1_nm) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_1_nm) -> (__cont,lUniq_1_nm)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftExpressionIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightExpressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftExpressionIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightExpressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftExpressionIppWrap . _operatorIppWrap . _rightExpressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftExpressionItrpp >< _operatorItrpp >< _rightExpressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftExpressionIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightExpressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightExpressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightExpressionItopInstanceNmL
+              -- copy rule (down)
+              _leftExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _leftExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _leftExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _leftExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _leftExpressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftExpressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _operatorOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _operatorOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _operatorOgUniq =
+                  _leftExpressionIgUniq
+              -- copy rule (down)
+              _operatorOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _operatorOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _operatorOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _operatorOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _operatorOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _operatorOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _operatorOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _operatorOtopInstanceNmL =
+                  _leftExpressionItopInstanceNmL
+              -- copy rule (down)
+              _operatorOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rightExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _rightExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightExpressionOgUniq =
+                  _operatorIgUniq
+              -- copy rule (down)
+              _rightExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _rightExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rightExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _rightExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _rightExpressionOtopInstanceNmL =
+                  _operatorItopInstanceNmL
+              -- copy rule (down)
+              _rightExpressionOtr =
+                  _lhsItr
+              ( _leftExpressionIeh,_leftExpressionIerrSq,_leftExpressionIgUniq,_leftExpressionIidUseOccGam,_leftExpressionIpp,_leftExpressionIppMb,_leftExpressionIppWrap,_leftExpressionItopInstanceNmL,_leftExpressionItrpp,_leftExpressionIundefOccGam) =
+                  leftExpression_ _leftExpressionOcaseId _leftExpressionOfixityGam _leftExpressionOgUniq _leftExpressionOgenerDerivMp _leftExpressionOidGam _leftExpressionOmoduleNm _leftExpressionOnmLev _leftExpressionOopts _leftExpressionOpatchEhNmInInstance _leftExpressionOpragmas _leftExpressionOtopInstanceNmL _leftExpressionOtr
+              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIgUniq,_operatorIidUseOccGam,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItrpp,_operatorIundefOccGam) =
+                  operator_ _operatorOcaseId _operatorOfixityGam _operatorOgUniq _operatorOgenerDerivMp _operatorOidGam _operatorOmoduleNm _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOpragmas _operatorOtopInstanceNmL _operatorOtr
+              ( _rightExpressionIeh,_rightExpressionIerrSq,_rightExpressionIgUniq,_rightExpressionIidUseOccGam,_rightExpressionIpp,_rightExpressionIppMb,_rightExpressionIppWrap,_rightExpressionItopInstanceNmL,_rightExpressionItrpp,_rightExpressionIundefOccGam) =
+                  rightExpression_ _rightExpressionOcaseId _rightExpressionOfixityGam _rightExpressionOgUniq _rightExpressionOgenerDerivMp _rightExpressionOidGam _rightExpressionOmoduleNm _rightExpressionOnmLev _rightExpressionOopts _rightExpressionOpatchEhNmInInstance _rightExpressionOpragmas _rightExpressionOtopInstanceNmL _rightExpressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_InfixApplication :: Range ->
+                                   T_Expression ->
+                                   T_Expression ->
+                                   T_Expression ->
+                                   T_Expression
+sem_Expression_InfixApplication range_ leftExpression_ operator_ rightExpression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftExpressionOcaseId :: UID
+              _leftExpressionOfixityGam :: FixityGam
+              _leftExpressionOgUniq :: UID
+              _leftExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _leftExpressionOidGam :: IdDefOccGam
+              _leftExpressionOmoduleNm :: HsName
+              _leftExpressionOnmLev :: NmLev
+              _leftExpressionOopts :: EHCOpts
+              _leftExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _leftExpressionOtopInstanceNmL :: ([HsName])
+              _leftExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _operatorOcaseId :: UID
+              _operatorOfixityGam :: FixityGam
+              _operatorOgUniq :: UID
+              _operatorOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _operatorOidGam :: IdDefOccGam
+              _operatorOmoduleNm :: HsName
+              _operatorOnmLev :: NmLev
+              _operatorOopts :: EHCOpts
+              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
+              _operatorOpragmas :: (Set.Set Pragma.Pragma)
+              _operatorOtopInstanceNmL :: ([HsName])
+              _operatorOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightExpressionOcaseId :: UID
+              _rightExpressionOfixityGam :: FixityGam
+              _rightExpressionOgUniq :: UID
+              _rightExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _rightExpressionOidGam :: IdDefOccGam
+              _rightExpressionOmoduleNm :: HsName
+              _rightExpressionOnmLev :: NmLev
+              _rightExpressionOopts :: EHCOpts
+              _rightExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _rightExpressionOtopInstanceNmL :: ([HsName])
+              _rightExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftExpressionIconNm :: Name
+              _leftExpressionIeh :: (EH.Expr)
+              _leftExpressionIerrSq :: ErrSq
+              _leftExpressionIgUniq :: UID
+              _leftExpressionIidUseOccGam :: IdUseOccGam
+              _leftExpressionIopChain :: (OpChain EH.Expr)
+              _leftExpressionIoperatorName :: MaybeName
+              _leftExpressionIpp :: PP_Doc
+              _leftExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _leftExpressionItopInstanceNmL :: ([HsName])
+              _leftExpressionItrpp :: TrPP
+              _leftExpressionIundefOccGam :: IdUseOccGam
+              _operatorIconNm :: Name
+              _operatorIeh :: (EH.Expr)
+              _operatorIerrSq :: ErrSq
+              _operatorIgUniq :: UID
+              _operatorIidUseOccGam :: IdUseOccGam
+              _operatorIopChain :: (OpChain EH.Expr)
+              _operatorIoperatorName :: MaybeName
+              _operatorIpp :: PP_Doc
+              _operatorIppWrap :: (PP_Doc -> PP_Doc)
+              _operatorItopInstanceNmL :: ([HsName])
+              _operatorItrpp :: TrPP
+              _operatorIundefOccGam :: IdUseOccGam
+              _rightExpressionIconNm :: Name
+              _rightExpressionIeh :: (EH.Expr)
+              _rightExpressionIerrSq :: ErrSq
+              _rightExpressionIgUniq :: UID
+              _rightExpressionIidUseOccGam :: IdUseOccGam
+              _rightExpressionIopChain :: (OpChain EH.Expr)
+              _rightExpressionIoperatorName :: MaybeName
+              _rightExpressionIpp :: PP_Doc
+              _rightExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _rightExpressionItopInstanceNmL :: ([HsName])
+              _rightExpressionItrpp :: TrPP
+              _rightExpressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 205, column 9)
+              _pp =
+                  _leftExpressionIpp >#< _operatorIpp >#< _rightExpressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 58, column 9)
+              _fgi =
+                  case _operatorIoperatorName of
+                    Just n
+                      -> fixityGamLookup n _lhsIfixityGam
+                    _ -> defaultFixityGamInfo
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 100, column 9)
+              _lhsOopChain =
+                  OpChain_Op _operatorIeh _operatorIpp (fgiFixity _fgi) (fgiPrio _fgi) range_ _leftExpressionIopChain _rightExpressionIopChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 484, column 9)
+              _eh =
+                  appRngParApp range_ [_operatorIeh,_leftExpressionIeh,_rightExpressionIeh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftExpressionIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightExpressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftExpressionIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightExpressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftExpressionIppWrap . _operatorIppWrap . _rightExpressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftExpressionItrpp >< _operatorItrpp >< _rightExpressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftExpressionIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightExpressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightExpressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightExpressionItopInstanceNmL
+              -- copy rule (down)
+              _leftExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _leftExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftExpressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _leftExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _leftExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _leftExpressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftExpressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _operatorOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _operatorOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _operatorOgUniq =
+                  _leftExpressionIgUniq
+              -- copy rule (down)
+              _operatorOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _operatorOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _operatorOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _operatorOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _operatorOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _operatorOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _operatorOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _operatorOtopInstanceNmL =
+                  _leftExpressionItopInstanceNmL
+              -- copy rule (down)
+              _operatorOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rightExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _rightExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightExpressionOgUniq =
+                  _operatorIgUniq
+              -- copy rule (down)
+              _rightExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _rightExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rightExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _rightExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _rightExpressionOtopInstanceNmL =
+                  _operatorItopInstanceNmL
+              -- copy rule (down)
+              _rightExpressionOtr =
+                  _lhsItr
+              ( _leftExpressionIconNm,_leftExpressionIeh,_leftExpressionIerrSq,_leftExpressionIgUniq,_leftExpressionIidUseOccGam,_leftExpressionIopChain,_leftExpressionIoperatorName,_leftExpressionIpp,_leftExpressionIppWrap,_leftExpressionItopInstanceNmL,_leftExpressionItrpp,_leftExpressionIundefOccGam) =
+                  leftExpression_ _leftExpressionOcaseId _leftExpressionOfixityGam _leftExpressionOgUniq _leftExpressionOgenerDerivMp _leftExpressionOidGam _leftExpressionOmoduleNm _leftExpressionOnmLev _leftExpressionOopts _leftExpressionOpatchEhNmInInstance _leftExpressionOpragmas _leftExpressionOtopInstanceNmL _leftExpressionOtr
+              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIgUniq,_operatorIidUseOccGam,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItrpp,_operatorIundefOccGam) =
+                  operator_ _operatorOcaseId _operatorOfixityGam _operatorOgUniq _operatorOgenerDerivMp _operatorOidGam _operatorOmoduleNm _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOpragmas _operatorOtopInstanceNmL _operatorOtr
+              ( _rightExpressionIconNm,_rightExpressionIeh,_rightExpressionIerrSq,_rightExpressionIgUniq,_rightExpressionIidUseOccGam,_rightExpressionIopChain,_rightExpressionIoperatorName,_rightExpressionIpp,_rightExpressionIppWrap,_rightExpressionItopInstanceNmL,_rightExpressionItrpp,_rightExpressionIundefOccGam) =
+                  rightExpression_ _rightExpressionOcaseId _rightExpressionOfixityGam _rightExpressionOgUniq _rightExpressionOgenerDerivMp _rightExpressionOidGam _rightExpressionOmoduleNm _rightExpressionOnmLev _rightExpressionOopts _rightExpressionOpatchEhNmInInstance _rightExpressionOpragmas _rightExpressionOtopInstanceNmL _rightExpressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_InfixApplicationChainTop :: Range ->
+                                           T_Expression ->
+                                           T_Expression
+sem_Expression_InfixApplicationChainTop range_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 22, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errRearr, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 106, column 25)
+              (_ehRearrOpChain,_errRearr) =
+                  opChainReArrange _expressionIopChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 106, column 9)
+              _ehFromOpChain =
+                  unOpChain _ehRearrOpChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 486, column 9)
+              _eh =
+                  _ehFromOpChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _expressionIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Lambda :: Range ->
+                         T_Patterns ->
+                         T_Expression ->
+                         T_Expression
+sem_Expression_Lambda range_ patterns_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _expressionOidGam :: IdDefOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([EH.PatExpr])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 417, column 9)
+              _expressionOidGam =
+                  gamUnion _patternsIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 104, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _patternsIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 20, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, _patternsIerrSq, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 213, column 9)
+              _pp =
+                  "\\" >|< ppSpaces _patternsIppL >#< "->" >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 494, column 9)
+              _eh =
+                  foldr (rngLift range_ EH.Expr_Lam) _expressionIeh _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _patternsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _patternsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _expressionOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Let :: Range ->
+                      Bool ->
+                      T_Declarations ->
+                      T_Expression ->
+                      T_Expression
+sem_Expression_Let range_ isStrict_ declarations_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _declarationsOcaseId :: UID
+              _declarationsOfixityGam :: FixityGam
+              _declarationsOgUniq :: UID
+              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _declarationsOidGam :: IdDefOccGam
+              _declarationsOmoduleNm :: HsName
+              _declarationsOnameDeclCxt :: NameDeclCxt
+              _declarationsOnmLev :: NmLev
+              _declarationsOopts :: EHCOpts
+              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
+              _declarationsOtopInstanceNmL :: ([HsName])
+              _declarationsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _declarationsIeh :: ([EH.Decl])
+              _declarationsIerrSq :: ErrSq
+              _declarationsIgUniq :: UID
+              _declarationsIgathFixityGam :: FixityGam
+              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _declarationsIidDefOccGam :: IdDefOccGam
+              _declarationsIidDpdMp :: IdDpdMp
+              _declarationsIidInClassTySigDefOccGam :: IdDefOccGam
+              _declarationsIidInInstanceValDefOccGam :: IdDefOccGam
+              _declarationsIidOccDefs :: ([IdOcc])
+              _declarationsIidUseOccGam :: IdUseOccGam
+              _declarationsIneedsError :: Bool
+              _declarationsIpp :: PP_Doc
+              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
+              _declarationsItopInstanceNmL :: ([HsName])
+              _declarationsItrpp :: TrPP
+              _declarationsIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 31, column 9)
+              _nameDeclCxt =
+                  NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 415, column 9)
+              _idGam =
+                  gamUnion _declarationsIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1074, column 9)
+              _sccOrder =
+                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1206, column 29)
+              (_mkSccLet,_,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ isStrict_ _declarationsIidDefOccGam (Just _sccOrder)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 101, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 17, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errReorder, _declarationsIerrSq, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 215, column 9)
+              _pp =
+                  "let" >|< (if isStrict_ then pp "!" else empty) >#< (_declarationsIpp >-< _ppExtra) >#< "in" >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 216, column 17)
+              _ppExtra =
+                  empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 26, column 9)
+              _fixityGam =
+                  _declarationsIgathFixityGam `gamUnion` _lhsIfixityGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 496, column 9)
+              _eh =
+                  _mkSccLet _expressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _declarationsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _declarationsIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _declarationsItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _declarationsIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _declarationsOfixityGam =
+                  _fixityGam
+              -- copy rule (down)
+              _declarationsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _declarationsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _declarationsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _declarationsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _declarationsOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _declarationsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _declarationsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _declarationsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _declarationsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _declarationsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _expressionOfixityGam =
+                  _fixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _declarationsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _expressionOidGam =
+                  _idGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _expressionOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _declarationsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidInClassTySigDefOccGam,_declarationsIidInInstanceValDefOccGam,_declarationsIidOccDefs,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsItrpp,_declarationsIundefOccGam) =
+                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnameDeclCxt _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL _declarationsOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Tuple :: Range ->
+                        T_Expressions ->
+                        T_Expression
+sem_Expression_Tuple range_ expressions_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionsOcaseId :: UID
+              _expressionsOfixityGam :: FixityGam
+              _expressionsOgUniq :: UID
+              _expressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionsOidGam :: IdDefOccGam
+              _expressionsOmoduleNm :: HsName
+              _expressionsOnmLev :: NmLev
+              _expressionsOopts :: EHCOpts
+              _expressionsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionsOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionsOtopInstanceNmL :: ([HsName])
+              _expressionsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionsIeh :: ([EH.Expr])
+              _expressionsIerrSq :: ErrSq
+              _expressionsIgUniq :: UID
+              _expressionsIidUseOccGam :: IdUseOccGam
+              _expressionsIpp :: PP_Doc
+              _expressionsIppL :: ([PP_Doc])
+              _expressionsIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionsItopInstanceNmL :: ([HsName])
+              _expressionsItrpp :: TrPP
+              _expressionsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 218, column 9)
+              _pp =
+                  ppParensCommas _expressionsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 498, column 9)
+              _eh =
+                  ehExpConApp range_ (hsnProd (length _expressionsIeh)) _expressionsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionsItopInstanceNmL
+              -- copy rule (down)
+              _expressionsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionsOtr =
+                  _lhsItr
+              ( _expressionsIeh,_expressionsIerrSq,_expressionsIgUniq,_expressionsIidUseOccGam,_expressionsIpp,_expressionsIppL,_expressionsIppWrap,_expressionsItopInstanceNmL,_expressionsItrpp,_expressionsIundefOccGam) =
+                  expressions_ _expressionsOcaseId _expressionsOfixityGam _expressionsOgUniq _expressionsOgenerDerivMp _expressionsOidGam _expressionsOmoduleNm _expressionsOnmLev _expressionsOopts _expressionsOpatchEhNmInInstance _expressionsOpragmas _expressionsOtopInstanceNmL _expressionsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Typed :: Range ->
+                        T_Expression ->
+                        T_Type ->
+                        T_Expression
+sem_Expression_Typed range_ expression_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _typeOidGam :: IdDefOccGam
+              _lhsOconNm :: Name
+              _typeOnmLev :: NmLev
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOisAsPred :: Bool
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 299, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 419, column 9)
+              _typeOidGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 52, column 9)
+              _typeOnmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 220, column 9)
+              _pp =
+                  _expressionIpp >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 500, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_TypeAs False _typeIeh _expressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 229, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq `Seq.union` _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _typeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _expressionIgUniq
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Negate :: Range ->
+                         T_Expression ->
+                         T_Expression
+sem_Expression_Negate range_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 575, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnNegate] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_expressionIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 24, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 222, column 9)
+              _pp =
+                  "-" >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 502, column 9)
+              _eh =
+                  ehExpVarApp range_ _refname [_expressionIeh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Annotate :: Range ->
+                           T_ExpressionAnnotation ->
+                           T_Expression ->
+                           T_Expression
+sem_Expression_Annotate range_ annotation_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _annotationOcaseId :: UID
+              _annotationOfixityGam :: FixityGam
+              _annotationOgUniq :: UID
+              _annotationOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _annotationOidGam :: IdDefOccGam
+              _annotationOmoduleNm :: HsName
+              _annotationOnmLev :: NmLev
+              _annotationOopts :: EHCOpts
+              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
+              _annotationOpragmas :: (Set.Set Pragma.Pragma)
+              _annotationOtopInstanceNmL :: ([HsName])
+              _annotationOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _annotationIeh :: (EH.ExprAnn)
+              _annotationIerrSq :: ErrSq
+              _annotationIgUniq :: UID
+              _annotationIidUseOccGam :: IdUseOccGam
+              _annotationIpp :: PP_Doc
+              _annotationIppWrap :: (PP_Doc -> PP_Doc)
+              _annotationItopInstanceNmL :: ([HsName])
+              _annotationItrpp :: TrPP
+              _annotationIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 504, column 17)
+              _eh =
+                  rngLift range_ EH.Expr_Ann _annotationIeh _expressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _annotationIerrSq `Seq.union` _expressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _annotationIidUseOccGam `gamAddGam` _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _annotationIpp >-< _expressionIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _annotationIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _annotationItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _annotationIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _annotationOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _annotationOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _annotationOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _annotationOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _annotationOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _annotationOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _annotationOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _annotationOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _annotationOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _annotationOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _annotationOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _annotationOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _annotationIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _annotationItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _annotationIeh,_annotationIerrSq,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationItrpp,_annotationIundefOccGam) =
+                  annotation_ _annotationOcaseId _annotationOfixityGam _annotationOgUniq _annotationOgenerDerivMp _annotationOidGam _annotationOmoduleNm _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOpragmas _annotationOtopInstanceNmL _annotationOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_ImpredicativeApplication :: Range ->
+                                           T_Expression ->
+                                           T_Expressions ->
+                                           T_Expression
+sem_Expression_ImpredicativeApplication range_ function_ arguments_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _functionOcaseId :: UID
+              _functionOfixityGam :: FixityGam
+              _functionOgUniq :: UID
+              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _functionOidGam :: IdDefOccGam
+              _functionOmoduleNm :: HsName
+              _functionOnmLev :: NmLev
+              _functionOopts :: EHCOpts
+              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _functionOpragmas :: (Set.Set Pragma.Pragma)
+              _functionOtopInstanceNmL :: ([HsName])
+              _functionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _argumentsOcaseId :: UID
+              _argumentsOfixityGam :: FixityGam
+              _argumentsOgUniq :: UID
+              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _argumentsOidGam :: IdDefOccGam
+              _argumentsOmoduleNm :: HsName
+              _argumentsOnmLev :: NmLev
+              _argumentsOopts :: EHCOpts
+              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
+              _argumentsOtopInstanceNmL :: ([HsName])
+              _argumentsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _functionIconNm :: Name
+              _functionIeh :: (EH.Expr)
+              _functionIerrSq :: ErrSq
+              _functionIgUniq :: UID
+              _functionIidUseOccGam :: IdUseOccGam
+              _functionIopChain :: (OpChain EH.Expr)
+              _functionIoperatorName :: MaybeName
+              _functionIpp :: PP_Doc
+              _functionIppWrap :: (PP_Doc -> PP_Doc)
+              _functionItopInstanceNmL :: ([HsName])
+              _functionItrpp :: TrPP
+              _functionIundefOccGam :: IdUseOccGam
+              _argumentsIeh :: ([EH.Expr])
+              _argumentsIerrSq :: ErrSq
+              _argumentsIgUniq :: UID
+              _argumentsIidUseOccGam :: IdUseOccGam
+              _argumentsIpp :: PP_Doc
+              _argumentsIppL :: ([PP_Doc])
+              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
+              _argumentsItopInstanceNmL :: ([HsName])
+              _argumentsItrpp :: TrPP
+              _argumentsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 224, column 9)
+              _pp =
+                  _functionIpp >#< "~" >|< _argumentsIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 506, column 9)
+              _eh =
+                  ehExpApp' (rngLift range_ EH.Expr_AppImpred) range_ _functionIeh _argumentsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _functionIerrSq `Seq.union` _argumentsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _functionIppWrap . _argumentsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _functionItrpp >< _argumentsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _argumentsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _argumentsItopInstanceNmL
+              -- copy rule (down)
+              _functionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _functionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _functionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _functionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _functionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _functionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _functionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _functionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _functionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _functionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _functionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _functionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _argumentsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _argumentsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _argumentsOgUniq =
+                  _functionIgUniq
+              -- copy rule (down)
+              _argumentsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _argumentsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _argumentsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _argumentsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _argumentsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _argumentsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _argumentsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _argumentsOtopInstanceNmL =
+                  _functionItopInstanceNmL
+              -- copy rule (down)
+              _argumentsOtr =
+                  _lhsItr
+              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItrpp,_functionIundefOccGam) =
+                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL _functionOtr
+              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsItrpp,_argumentsIundefOccGam) =
+                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL _argumentsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_If :: Range ->
+                     T_Expression ->
+                     T_Expression ->
+                     T_Expression ->
+                     T_Expression
+sem_Expression_If range_ guardExpression_ thenExpression_ elseExpression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _guardExpressionOcaseId :: UID
+              _guardExpressionOfixityGam :: FixityGam
+              _guardExpressionOgUniq :: UID
+              _guardExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _guardExpressionOidGam :: IdDefOccGam
+              _guardExpressionOmoduleNm :: HsName
+              _guardExpressionOnmLev :: NmLev
+              _guardExpressionOopts :: EHCOpts
+              _guardExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _guardExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _guardExpressionOtopInstanceNmL :: ([HsName])
+              _guardExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _thenExpressionOcaseId :: UID
+              _thenExpressionOfixityGam :: FixityGam
+              _thenExpressionOgUniq :: UID
+              _thenExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _thenExpressionOidGam :: IdDefOccGam
+              _thenExpressionOmoduleNm :: HsName
+              _thenExpressionOnmLev :: NmLev
+              _thenExpressionOopts :: EHCOpts
+              _thenExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _thenExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _thenExpressionOtopInstanceNmL :: ([HsName])
+              _thenExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _elseExpressionOcaseId :: UID
+              _elseExpressionOfixityGam :: FixityGam
+              _elseExpressionOgUniq :: UID
+              _elseExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _elseExpressionOidGam :: IdDefOccGam
+              _elseExpressionOmoduleNm :: HsName
+              _elseExpressionOnmLev :: NmLev
+              _elseExpressionOopts :: EHCOpts
+              _elseExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _elseExpressionOpragmas :: (Set.Set Pragma.Pragma)
+              _elseExpressionOtopInstanceNmL :: ([HsName])
+              _elseExpressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _guardExpressionIconNm :: Name
+              _guardExpressionIeh :: (EH.Expr)
+              _guardExpressionIerrSq :: ErrSq
+              _guardExpressionIgUniq :: UID
+              _guardExpressionIidUseOccGam :: IdUseOccGam
+              _guardExpressionIopChain :: (OpChain EH.Expr)
+              _guardExpressionIoperatorName :: MaybeName
+              _guardExpressionIpp :: PP_Doc
+              _guardExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _guardExpressionItopInstanceNmL :: ([HsName])
+              _guardExpressionItrpp :: TrPP
+              _guardExpressionIundefOccGam :: IdUseOccGam
+              _thenExpressionIconNm :: Name
+              _thenExpressionIeh :: (EH.Expr)
+              _thenExpressionIerrSq :: ErrSq
+              _thenExpressionIgUniq :: UID
+              _thenExpressionIidUseOccGam :: IdUseOccGam
+              _thenExpressionIopChain :: (OpChain EH.Expr)
+              _thenExpressionIoperatorName :: MaybeName
+              _thenExpressionIpp :: PP_Doc
+              _thenExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _thenExpressionItopInstanceNmL :: ([HsName])
+              _thenExpressionItrpp :: TrPP
+              _thenExpressionIundefOccGam :: IdUseOccGam
+              _elseExpressionIconNm :: Name
+              _elseExpressionIeh :: (EH.Expr)
+              _elseExpressionIerrSq :: ErrSq
+              _elseExpressionIgUniq :: UID
+              _elseExpressionIidUseOccGam :: IdUseOccGam
+              _elseExpressionIopChain :: (OpChain EH.Expr)
+              _elseExpressionIoperatorName :: MaybeName
+              _elseExpressionIpp :: PP_Doc
+              _elseExpressionIppWrap :: (PP_Doc -> PP_Doc)
+              _elseExpressionItopInstanceNmL :: ([HsName])
+              _elseExpressionItrpp :: TrPP
+              _elseExpressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 587, column 29)
+              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 589, column 29)
+              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 587, column 9)
+              _idUseOccGam =
+                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 592, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_guardExpressionIidUseOccGam,_thenExpressionIidUseOccGam,_elseExpressionIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 30, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardExpressionIerrSq, _thenExpressionIerrSq, _elseExpressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 226, column 9)
+              _pp =
+                  "if" >#< _guardExpressionIpp >-< "then" >#< _thenExpressionIpp >-< "else" >#< _elseExpressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 508, column 9)
+              _eh =
+                  EH.mkIf' (_typerefname : _valrefnames) range_ _guardExpressionIeh _thenExpressionIeh _elseExpressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _guardExpressionIppWrap . _thenExpressionIppWrap . _elseExpressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _guardExpressionItrpp >< _thenExpressionItrpp >< _elseExpressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _guardExpressionIundefOccGam `gamUnion` _thenExpressionIundefOccGam `gamUnion` _elseExpressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _elseExpressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _elseExpressionItopInstanceNmL
+              -- copy rule (down)
+              _guardExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _guardExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _guardExpressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _guardExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _guardExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _guardExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _guardExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _guardExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _guardExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _guardExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _guardExpressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _guardExpressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _thenExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _thenExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _thenExpressionOgUniq =
+                  _guardExpressionIgUniq
+              -- copy rule (down)
+              _thenExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _thenExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _thenExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _thenExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _thenExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _thenExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _thenExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _thenExpressionOtopInstanceNmL =
+                  _guardExpressionItopInstanceNmL
+              -- copy rule (down)
+              _thenExpressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _elseExpressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _elseExpressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _elseExpressionOgUniq =
+                  _thenExpressionIgUniq
+              -- copy rule (down)
+              _elseExpressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _elseExpressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _elseExpressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _elseExpressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _elseExpressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _elseExpressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _elseExpressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _elseExpressionOtopInstanceNmL =
+                  _thenExpressionItopInstanceNmL
+              -- copy rule (down)
+              _elseExpressionOtr =
+                  _lhsItr
+              ( _guardExpressionIconNm,_guardExpressionIeh,_guardExpressionIerrSq,_guardExpressionIgUniq,_guardExpressionIidUseOccGam,_guardExpressionIopChain,_guardExpressionIoperatorName,_guardExpressionIpp,_guardExpressionIppWrap,_guardExpressionItopInstanceNmL,_guardExpressionItrpp,_guardExpressionIundefOccGam) =
+                  guardExpression_ _guardExpressionOcaseId _guardExpressionOfixityGam _guardExpressionOgUniq _guardExpressionOgenerDerivMp _guardExpressionOidGam _guardExpressionOmoduleNm _guardExpressionOnmLev _guardExpressionOopts _guardExpressionOpatchEhNmInInstance _guardExpressionOpragmas _guardExpressionOtopInstanceNmL _guardExpressionOtr
+              ( _thenExpressionIconNm,_thenExpressionIeh,_thenExpressionIerrSq,_thenExpressionIgUniq,_thenExpressionIidUseOccGam,_thenExpressionIopChain,_thenExpressionIoperatorName,_thenExpressionIpp,_thenExpressionIppWrap,_thenExpressionItopInstanceNmL,_thenExpressionItrpp,_thenExpressionIundefOccGam) =
+                  thenExpression_ _thenExpressionOcaseId _thenExpressionOfixityGam _thenExpressionOgUniq _thenExpressionOgenerDerivMp _thenExpressionOidGam _thenExpressionOmoduleNm _thenExpressionOnmLev _thenExpressionOopts _thenExpressionOpatchEhNmInInstance _thenExpressionOpragmas _thenExpressionOtopInstanceNmL _thenExpressionOtr
+              ( _elseExpressionIconNm,_elseExpressionIeh,_elseExpressionIerrSq,_elseExpressionIgUniq,_elseExpressionIidUseOccGam,_elseExpressionIopChain,_elseExpressionIoperatorName,_elseExpressionIpp,_elseExpressionIppWrap,_elseExpressionItopInstanceNmL,_elseExpressionItrpp,_elseExpressionIundefOccGam) =
+                  elseExpression_ _elseExpressionOcaseId _elseExpressionOfixityGam _elseExpressionOgUniq _elseExpressionOgenerDerivMp _elseExpressionOidGam _elseExpressionOmoduleNm _elseExpressionOnmLev _elseExpressionOopts _elseExpressionOpatchEhNmInInstance _elseExpressionOpragmas _elseExpressionOtopInstanceNmL _elseExpressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Case :: Range ->
+                       T_Expression ->
+                       T_Alternatives ->
+                       T_Expression
+sem_Expression_Case range_ expression_ alternatives_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _expressionOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _alternativesOcaseId :: UID
+              _alternativesOfixityGam :: FixityGam
+              _alternativesOgUniq :: UID
+              _alternativesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _alternativesOidGam :: IdDefOccGam
+              _alternativesOmoduleNm :: HsName
+              _alternativesOnmLev :: NmLev
+              _alternativesOopts :: EHCOpts
+              _alternativesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _alternativesOpragmas :: (Set.Set Pragma.Pragma)
+              _alternativesOtopInstanceNmL :: ([HsName])
+              _alternativesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _alternativesIeh :: ([EH.CaseAlt])
+              _alternativesIerrSq :: ErrSq
+              _alternativesIgUniq :: UID
+              _alternativesIidUseOccGam :: IdUseOccGam
+              _alternativesIpp :: PP_Doc
+              _alternativesIppWrap :: (PP_Doc -> PP_Doc)
+              _alternativesItopInstanceNmL :: ([HsName])
+              _alternativesItrpp :: TrPP
+              _alternativesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 228, column 9)
+              _pp =
+                  "case" >#< _expressionIpp >#< "of" >-< indent 2 _alternativesIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 510, column 9)
+              _eh =
+                  EH.mkCase' range_ _expressionIeh (Just $ Set.singleton _caseId) Set.empty False _alternativesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 869, column 9)
+              _caseId =
+                  _lUniq
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_expressionOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq `Seq.union` _alternativesIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _alternativesIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _alternativesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _alternativesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _alternativesIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _alternativesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _alternativesItopInstanceNmL
+              -- copy rule (from local)
+              _expressionOcaseId =
+                  _caseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _alternativesOcaseId =
+                  _caseId
+              -- copy rule (down)
+              _alternativesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _alternativesOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _alternativesOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _alternativesOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _alternativesOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _alternativesOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _alternativesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _alternativesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _alternativesOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _alternativesOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _alternativesOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _alternativesIeh,_alternativesIerrSq,_alternativesIgUniq,_alternativesIidUseOccGam,_alternativesIpp,_alternativesIppWrap,_alternativesItopInstanceNmL,_alternativesItrpp,_alternativesIundefOccGam) =
+                  alternatives_ _alternativesOcaseId _alternativesOfixityGam _alternativesOgUniq _alternativesOgenerDerivMp _alternativesOidGam _alternativesOmoduleNm _alternativesOnmLev _alternativesOopts _alternativesOpatchEhNmInInstance _alternativesOpragmas _alternativesOtopInstanceNmL _alternativesOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_List :: Range ->
+                       T_Expressions ->
+                       T_Expression
+sem_Expression_List range_ expressions_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionsOcaseId :: UID
+              _expressionsOfixityGam :: FixityGam
+              _expressionsOgUniq :: UID
+              _expressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionsOidGam :: IdDefOccGam
+              _expressionsOmoduleNm :: HsName
+              _expressionsOnmLev :: NmLev
+              _expressionsOopts :: EHCOpts
+              _expressionsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionsOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionsOtopInstanceNmL :: ([HsName])
+              _expressionsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionsIeh :: ([EH.Expr])
+              _expressionsIerrSq :: ErrSq
+              _expressionsIgUniq :: UID
+              _expressionsIidUseOccGam :: IdUseOccGam
+              _expressionsIpp :: PP_Doc
+              _expressionsIppL :: ([PP_Doc])
+              _expressionsIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionsItopInstanceNmL :: ([HsName])
+              _expressionsItrpp :: TrPP
+              _expressionsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 579, column 29)
+              (_,_refnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_expressionsIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 26, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _expressionsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 230, column 9)
+              _pp =
+                  ppBracketsCommas _expressionsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 512, column 9)
+              _eh =
+                  foldr (\l r -> ehExpConApp range_ (_refnames !! 0) [l,r]) (rngLift range_ EH.Expr_Con (_refnames !! 1)) _expressionsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionsItopInstanceNmL
+              -- copy rule (down)
+              _expressionsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionsOtr =
+                  _lhsItr
+              ( _expressionsIeh,_expressionsIerrSq,_expressionsIgUniq,_expressionsIidUseOccGam,_expressionsIpp,_expressionsIppL,_expressionsIppWrap,_expressionsItopInstanceNmL,_expressionsItrpp,_expressionsIundefOccGam) =
+                  expressions_ _expressionsOcaseId _expressionsOfixityGam _expressionsOgUniq _expressionsOgenerDerivMp _expressionsOidGam _expressionsOmoduleNm _expressionsOnmLev _expressionsOopts _expressionsOpatchEhNmInInstance _expressionsOpragmas _expressionsOtopInstanceNmL _expressionsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Enum :: Range ->
+                       T_Expression ->
+                       T_MaybeExpression ->
+                       T_MaybeExpression ->
+                       T_Expression
+sem_Expression_Enum range_ from_ then_ to_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _fromOcaseId :: UID
+              _fromOfixityGam :: FixityGam
+              _fromOgUniq :: UID
+              _fromOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _fromOidGam :: IdDefOccGam
+              _fromOmoduleNm :: HsName
+              _fromOnmLev :: NmLev
+              _fromOopts :: EHCOpts
+              _fromOpatchEhNmInInstance :: PatchEhNmInInstance
+              _fromOpragmas :: (Set.Set Pragma.Pragma)
+              _fromOtopInstanceNmL :: ([HsName])
+              _fromOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _thenOcaseId :: UID
+              _thenOfixityGam :: FixityGam
+              _thenOgUniq :: UID
+              _thenOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _thenOidGam :: IdDefOccGam
+              _thenOmoduleNm :: HsName
+              _thenOnmLev :: NmLev
+              _thenOopts :: EHCOpts
+              _thenOpatchEhNmInInstance :: PatchEhNmInInstance
+              _thenOpragmas :: (Set.Set Pragma.Pragma)
+              _thenOtopInstanceNmL :: ([HsName])
+              _thenOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _toOcaseId :: UID
+              _toOfixityGam :: FixityGam
+              _toOgUniq :: UID
+              _toOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _toOidGam :: IdDefOccGam
+              _toOmoduleNm :: HsName
+              _toOnmLev :: NmLev
+              _toOopts :: EHCOpts
+              _toOpatchEhNmInInstance :: PatchEhNmInInstance
+              _toOpragmas :: (Set.Set Pragma.Pragma)
+              _toOtopInstanceNmL :: ([HsName])
+              _toOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _fromIconNm :: Name
+              _fromIeh :: (EH.Expr)
+              _fromIerrSq :: ErrSq
+              _fromIgUniq :: UID
+              _fromIidUseOccGam :: IdUseOccGam
+              _fromIopChain :: (OpChain EH.Expr)
+              _fromIoperatorName :: MaybeName
+              _fromIpp :: PP_Doc
+              _fromIppWrap :: (PP_Doc -> PP_Doc)
+              _fromItopInstanceNmL :: ([HsName])
+              _fromItrpp :: TrPP
+              _fromIundefOccGam :: IdUseOccGam
+              _thenIeh :: (Maybe EH.Expr)
+              _thenIerrSq :: ErrSq
+              _thenIgUniq :: UID
+              _thenIidUseOccGam :: IdUseOccGam
+              _thenIpp :: PP_Doc
+              _thenIppMb :: (Maybe PP_Doc)
+              _thenIppWrap :: (PP_Doc -> PP_Doc)
+              _thenItopInstanceNmL :: ([HsName])
+              _thenItrpp :: TrPP
+              _thenIundefOccGam :: IdUseOccGam
+              _toIeh :: (Maybe EH.Expr)
+              _toIerrSq :: ErrSq
+              _toIgUniq :: UID
+              _toIidUseOccGam :: IdUseOccGam
+              _toIpp :: PP_Doc
+              _toIppMb :: (Maybe PP_Doc)
+              _toIppWrap :: (PP_Doc -> PP_Doc)
+              _toItopInstanceNmL :: ([HsName])
+              _toItrpp :: TrPP
+              _toIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 583, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [_enumNm] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 585, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_fromIidUseOccGam,_thenIidUseOccGam,_toIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 28, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _fromIerrSq, _thenIerrSq, _toIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 232, column 9)
+              _pp =
+                  case (_fromIpp,_thenIppMb,_toIppMb) of
+                    (fr,Just th,Just to) -> ppBrackets (fr >|< ","  >#< th >#< ".." >#< to)
+                    (fr,Just th,Nothing) -> ppBrackets (fr >|< ","  >#< th >#< ".."       )
+                    (fr,Nothing,Just to) -> ppBrackets (fr >#< ".." >#< to                )
+                    (fr,Nothing,Nothing) -> ppBrackets (fr >#< ".."                       )
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 514, column 9)
+              _enumNm =
+                  case (_fromIeh,_thenIeh,_toIeh) of
+                    (fr,Just th,Just to) -> hsnEnumFromThenTo
+                    (fr,Just th,Nothing) -> hsnEnumFromThen
+                    (fr,Nothing,Just to) -> hsnEnumFromTo
+                    (fr,Nothing,Nothing) -> hsnEnumFrom
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 514, column 9)
+              _eh =
+                  case (_fromIeh,_thenIeh,_toIeh) of
+                    (fr,Just th,Just to) -> ehExpVarApp range_ _refname [fr,th,to]
+                    (fr,Just th,Nothing) -> ehExpVarApp range_ _refname [fr,th   ]
+                    (fr,Nothing,Just to) -> ehExpVarApp range_ _refname [fr   ,to]
+                    (fr,Nothing,Nothing) -> ehExpVarApp range_ _refname [fr      ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _fromIppWrap . _thenIppWrap . _toIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _fromItrpp >< _thenItrpp >< _toItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _fromIundefOccGam `gamUnion` _thenIundefOccGam `gamUnion` _toIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _toIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _toItopInstanceNmL
+              -- copy rule (down)
+              _fromOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _fromOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _fromOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _fromOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _fromOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _fromOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _fromOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _fromOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _fromOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _fromOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _fromOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _fromOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _thenOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _thenOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _thenOgUniq =
+                  _fromIgUniq
+              -- copy rule (down)
+              _thenOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _thenOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _thenOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _thenOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _thenOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _thenOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _thenOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _thenOtopInstanceNmL =
+                  _fromItopInstanceNmL
+              -- copy rule (down)
+              _thenOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _toOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _toOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _toOgUniq =
+                  _thenIgUniq
+              -- copy rule (down)
+              _toOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _toOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _toOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _toOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _toOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _toOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _toOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _toOtopInstanceNmL =
+                  _thenItopInstanceNmL
+              -- copy rule (down)
+              _toOtr =
+                  _lhsItr
+              ( _fromIconNm,_fromIeh,_fromIerrSq,_fromIgUniq,_fromIidUseOccGam,_fromIopChain,_fromIoperatorName,_fromIpp,_fromIppWrap,_fromItopInstanceNmL,_fromItrpp,_fromIundefOccGam) =
+                  from_ _fromOcaseId _fromOfixityGam _fromOgUniq _fromOgenerDerivMp _fromOidGam _fromOmoduleNm _fromOnmLev _fromOopts _fromOpatchEhNmInInstance _fromOpragmas _fromOtopInstanceNmL _fromOtr
+              ( _thenIeh,_thenIerrSq,_thenIgUniq,_thenIidUseOccGam,_thenIpp,_thenIppMb,_thenIppWrap,_thenItopInstanceNmL,_thenItrpp,_thenIundefOccGam) =
+                  then_ _thenOcaseId _thenOfixityGam _thenOgUniq _thenOgenerDerivMp _thenOidGam _thenOmoduleNm _thenOnmLev _thenOopts _thenOpatchEhNmInInstance _thenOpragmas _thenOtopInstanceNmL _thenOtr
+              ( _toIeh,_toIerrSq,_toIgUniq,_toIidUseOccGam,_toIpp,_toIppMb,_toIppWrap,_toItopInstanceNmL,_toItrpp,_toIundefOccGam) =
+                  to_ _toOcaseId _toOfixityGam _toOgUniq _toOgenerDerivMp _toOidGam _toOmoduleNm _toOnmLev _toOopts _toOpatchEhNmInInstance _toOpragmas _toOtopInstanceNmL _toOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Comprehension :: Range ->
+                                T_Expression ->
+                                T_Qualifiers ->
+                                T_Expression
+sem_Expression_Comprehension range_ expression_ qualifiers_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _expressionOidGam :: IdDefOccGam
+              _qualifiersOidGam :: IdDefOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _qualifiersOcaseId :: UID
+              _qualifiersOfixityGam :: FixityGam
+              _qualifiersOgUniq :: UID
+              _qualifiersOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _qualifiersOmoduleNm :: HsName
+              _qualifiersOnmLev :: NmLev
+              _qualifiersOopts :: EHCOpts
+              _qualifiersOpatchEhNmInInstance :: PatchEhNmInInstance
+              _qualifiersOpragmas :: (Set.Set Pragma.Pragma)
+              _qualifiersOtopInstanceNmL :: ([HsName])
+              _qualifiersOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _qualifiersIeh :: ([EH.Expr -> EH.Expr])
+              _qualifiersIerrSq :: ErrSq
+              _qualifiersIgUniq :: UID
+              _qualifiersIidGam :: IdDefOccGam
+              _qualifiersIidUseOccGam :: IdUseOccGam
+              _qualifiersIpp :: PP_Doc
+              _qualifiersIppL :: ([PP_Doc])
+              _qualifiersIppWrap :: (PP_Doc -> PP_Doc)
+              _qualifiersItopInstanceNmL :: ([HsName])
+              _qualifiersItrpp :: TrPP
+              _qualifiersIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 421, column 9)
+              _expressionOidGam =
+                  _qualifiersIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 422, column 9)
+              _qualifiersOidGam =
+                  _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 238, column 9)
+              _pp =
+                  ppBrackets (_expressionIpp >#< "|" >#< ppCommas' _qualifiersIppL)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 525, column 9)
+              _eh =
+                  foldr ($) _expressionIeh _qualifiersIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq `Seq.union` _qualifiersIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _qualifiersIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _qualifiersIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _qualifiersItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _qualifiersIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _qualifiersIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _qualifiersItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _qualifiersOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _qualifiersOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _qualifiersOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _qualifiersOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _qualifiersOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _qualifiersOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _qualifiersOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _qualifiersOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _qualifiersOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _qualifiersOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _qualifiersOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _qualifiersIeh,_qualifiersIerrSq,_qualifiersIgUniq,_qualifiersIidGam,_qualifiersIidUseOccGam,_qualifiersIpp,_qualifiersIppL,_qualifiersIppWrap,_qualifiersItopInstanceNmL,_qualifiersItrpp,_qualifiersIundefOccGam) =
+                  qualifiers_ _qualifiersOcaseId _qualifiersOfixityGam _qualifiersOgUniq _qualifiersOgenerDerivMp _qualifiersOidGam _qualifiersOmoduleNm _qualifiersOnmLev _qualifiersOopts _qualifiersOpatchEhNmInInstance _qualifiersOpragmas _qualifiersOtopInstanceNmL _qualifiersOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_RecordConstruction :: Range ->
+                                     Name ->
+                                     T_RecordExpressionBindings ->
+                                     T_Expression
+sem_Expression_RecordConstruction range_ name_ recordExpressionBindings_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _recordExpressionBindingsOcaseId :: UID
+              _recordExpressionBindingsOfixityGam :: FixityGam
+              _recordExpressionBindingsOgUniq :: UID
+              _recordExpressionBindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _recordExpressionBindingsOidGam :: IdDefOccGam
+              _recordExpressionBindingsOmoduleNm :: HsName
+              _recordExpressionBindingsOnmLev :: NmLev
+              _recordExpressionBindingsOopts :: EHCOpts
+              _recordExpressionBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _recordExpressionBindingsOpragmas :: (Set.Set Pragma.Pragma)
+              _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
+              _recordExpressionBindingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _recordExpressionBindingsIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
+              _recordExpressionBindingsIerrSq :: ErrSq
+              _recordExpressionBindingsIgUniq :: UID
+              _recordExpressionBindingsIidUseOccGam :: IdUseOccGam
+              _recordExpressionBindingsIpp :: PP_Doc
+              _recordExpressionBindingsIppL :: ([PP_Doc])
+              _recordExpressionBindingsIppWrap :: (PP_Doc -> PP_Doc)
+              _recordExpressionBindingsItopInstanceNmL :: ([HsName])
+              _recordExpressionBindingsItrpp :: TrPP
+              _recordExpressionBindingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 562, column 9)
+              _idAsp =
+                  IdAsp_Val_Con
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 565, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
+                      dbgnm = mkHNm "putStrLn"
+                      dbgoc = IdOcc dbgnm IdOcc_Val
+                  in
+                              x
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 573, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_recordExpressionBindingsIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 32, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _recordExpressionBindingsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 240, column 9)
+              _pp =
+                  name_ >#< ppCurlysCommas' _recordExpressionBindingsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 527, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldExpr_Con _refname) _recordExpressionBindingsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _recordExpressionBindingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _recordExpressionBindingsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _recordExpressionBindingsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _recordExpressionBindingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _recordExpressionBindingsItopInstanceNmL
+              -- copy rule (down)
+              _recordExpressionBindingsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _recordExpressionBindingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _recordExpressionBindingsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _recordExpressionBindingsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _recordExpressionBindingsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _recordExpressionBindingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _recordExpressionBindingsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _recordExpressionBindingsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _recordExpressionBindingsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _recordExpressionBindingsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _recordExpressionBindingsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _recordExpressionBindingsOtr =
+                  _lhsItr
+              ( _recordExpressionBindingsIeh,_recordExpressionBindingsIerrSq,_recordExpressionBindingsIgUniq,_recordExpressionBindingsIidUseOccGam,_recordExpressionBindingsIpp,_recordExpressionBindingsIppL,_recordExpressionBindingsIppWrap,_recordExpressionBindingsItopInstanceNmL,_recordExpressionBindingsItrpp,_recordExpressionBindingsIundefOccGam) =
+                  recordExpressionBindings_ _recordExpressionBindingsOcaseId _recordExpressionBindingsOfixityGam _recordExpressionBindingsOgUniq _recordExpressionBindingsOgenerDerivMp _recordExpressionBindingsOidGam _recordExpressionBindingsOmoduleNm _recordExpressionBindingsOnmLev _recordExpressionBindingsOopts _recordExpressionBindingsOpatchEhNmInInstance _recordExpressionBindingsOpragmas _recordExpressionBindingsOtopInstanceNmL _recordExpressionBindingsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_RecordUpdate :: Range ->
+                               T_Expression ->
+                               T_RecordExpressionBindings ->
+                               T_Expression
+sem_Expression_RecordUpdate range_ expression_ recordExpressionBindings_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _recordExpressionBindingsOcaseId :: UID
+              _recordExpressionBindingsOfixityGam :: FixityGam
+              _recordExpressionBindingsOgUniq :: UID
+              _recordExpressionBindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _recordExpressionBindingsOidGam :: IdDefOccGam
+              _recordExpressionBindingsOmoduleNm :: HsName
+              _recordExpressionBindingsOnmLev :: NmLev
+              _recordExpressionBindingsOopts :: EHCOpts
+              _recordExpressionBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _recordExpressionBindingsOpragmas :: (Set.Set Pragma.Pragma)
+              _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
+              _recordExpressionBindingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _recordExpressionBindingsIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
+              _recordExpressionBindingsIerrSq :: ErrSq
+              _recordExpressionBindingsIgUniq :: UID
+              _recordExpressionBindingsIidUseOccGam :: IdUseOccGam
+              _recordExpressionBindingsIpp :: PP_Doc
+              _recordExpressionBindingsIppL :: ([PP_Doc])
+              _recordExpressionBindingsIppWrap :: (PP_Doc -> PP_Doc)
+              _recordExpressionBindingsItopInstanceNmL :: ([HsName])
+              _recordExpressionBindingsItrpp :: TrPP
+              _recordExpressionBindingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 242, column 9)
+              _pp =
+                  _expressionIpp >#< ppCurlysCommas' _recordExpressionBindingsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 529, column 9)
+              _eh =
+                  case _recordExpressionBindingsIeh of
+                    b@(_:_) -> rngLift range_ EH.Expr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldExpr_Expr _expressionIeh) b
+                    _       -> _expressionIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq `Seq.union` _recordExpressionBindingsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _recordExpressionBindingsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _recordExpressionBindingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _recordExpressionBindingsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _recordExpressionBindingsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _recordExpressionBindingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _recordExpressionBindingsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _recordExpressionBindingsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _recordExpressionBindingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _recordExpressionBindingsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _recordExpressionBindingsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _recordExpressionBindingsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _recordExpressionBindingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _recordExpressionBindingsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _recordExpressionBindingsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _recordExpressionBindingsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _recordExpressionBindingsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _recordExpressionBindingsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _recordExpressionBindingsOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _recordExpressionBindingsIeh,_recordExpressionBindingsIerrSq,_recordExpressionBindingsIgUniq,_recordExpressionBindingsIidUseOccGam,_recordExpressionBindingsIpp,_recordExpressionBindingsIppL,_recordExpressionBindingsIppWrap,_recordExpressionBindingsItopInstanceNmL,_recordExpressionBindingsItrpp,_recordExpressionBindingsIundefOccGam) =
+                  recordExpressionBindings_ _recordExpressionBindingsOcaseId _recordExpressionBindingsOfixityGam _recordExpressionBindingsOgUniq _recordExpressionBindingsOgenerDerivMp _recordExpressionBindingsOidGam _recordExpressionBindingsOmoduleNm _recordExpressionBindingsOnmLev _recordExpressionBindingsOopts _recordExpressionBindingsOpatchEhNmInInstance _recordExpressionBindingsOpragmas _recordExpressionBindingsOtopInstanceNmL _recordExpressionBindingsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_RowRecordUpdate :: Range ->
+                                  T_Expression ->
+                                  T_RowRecordExpressionUpdates ->
+                                  T_Expression
+sem_Expression_RowRecordUpdate range_ expression_ rowRecordExpressionUpdates_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rowRecordExpressionUpdatesOcaseId :: UID
+              _rowRecordExpressionUpdatesOfixityGam :: FixityGam
+              _rowRecordExpressionUpdatesOgUniq :: UID
+              _rowRecordExpressionUpdatesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _rowRecordExpressionUpdatesOidGam :: IdDefOccGam
+              _rowRecordExpressionUpdatesOmoduleNm :: HsName
+              _rowRecordExpressionUpdatesOnmLev :: NmLev
+              _rowRecordExpressionUpdatesOopts :: EHCOpts
+              _rowRecordExpressionUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rowRecordExpressionUpdatesOpragmas :: (Set.Set Pragma.Pragma)
+              _rowRecordExpressionUpdatesOtopInstanceNmL :: ([HsName])
+              _rowRecordExpressionUpdatesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _rowRecordExpressionUpdatesIeh :: ([EH.Expr -> EH.Expr])
+              _rowRecordExpressionUpdatesIerrSq :: ErrSq
+              _rowRecordExpressionUpdatesIgUniq :: UID
+              _rowRecordExpressionUpdatesIidUseOccGam :: IdUseOccGam
+              _rowRecordExpressionUpdatesIpp :: PP_Doc
+              _rowRecordExpressionUpdatesIppL :: ([PP_Doc])
+              _rowRecordExpressionUpdatesIppWrap :: (PP_Doc -> PP_Doc)
+              _rowRecordExpressionUpdatesItopInstanceNmL :: ([HsName])
+              _rowRecordExpressionUpdatesItrpp :: TrPP
+              _rowRecordExpressionUpdatesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 244, column 9)
+              _pp =
+                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _expressionIpp)
+                            _rowRecordExpressionUpdatesIppL _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 533, column 9)
+              _eh =
+                  foldl (flip ($)) _expressionIeh _rowRecordExpressionUpdatesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq `Seq.union` _rowRecordExpressionUpdatesIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _rowRecordExpressionUpdatesIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _rowRecordExpressionUpdatesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _rowRecordExpressionUpdatesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _rowRecordExpressionUpdatesIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rowRecordExpressionUpdatesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rowRecordExpressionUpdatesItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rowRecordExpressionUpdatesOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _rowRecordExpressionUpdatesOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _rowRecordExpressionUpdatesOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _rowRecordExpressionUpdatesIeh,_rowRecordExpressionUpdatesIerrSq,_rowRecordExpressionUpdatesIgUniq,_rowRecordExpressionUpdatesIidUseOccGam,_rowRecordExpressionUpdatesIpp,_rowRecordExpressionUpdatesIppL,_rowRecordExpressionUpdatesIppWrap,_rowRecordExpressionUpdatesItopInstanceNmL,_rowRecordExpressionUpdatesItrpp,_rowRecordExpressionUpdatesIundefOccGam) =
+                  rowRecordExpressionUpdates_ _rowRecordExpressionUpdatesOcaseId _rowRecordExpressionUpdatesOfixityGam _rowRecordExpressionUpdatesOgUniq _rowRecordExpressionUpdatesOgenerDerivMp _rowRecordExpressionUpdatesOidGam _rowRecordExpressionUpdatesOmoduleNm _rowRecordExpressionUpdatesOnmLev _rowRecordExpressionUpdatesOopts _rowRecordExpressionUpdatesOpatchEhNmInInstance _rowRecordExpressionUpdatesOpragmas _rowRecordExpressionUpdatesOtopInstanceNmL _rowRecordExpressionUpdatesOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_RowRecordEmpty :: Range ->
+                                 T_Expression
+sem_Expression_RowRecordEmpty range_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 247, column 9)
+              _pp =
+                  hsnORec >|< hsnCRec
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 535, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_Rec (rngLift range_ EH.RecExpr_Empty)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_RowRecordSelect :: Range ->
+                                  T_Expression ->
+                                  Name ->
+                                  T_Expression
+sem_Expression_RowRecordSelect range_ expression_ name_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 249, column 9)
+              _pp =
+                  _expressionIpp >|< "->" >|< name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 537, column 9)
+              _eh =
+                  rngLift range_ EH.Expr_Sel _expressionIeh name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_Do :: Range ->
+                     T_Statements ->
+                     T_Expression
+sem_Expression_Do range_ statements_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _statementsOcaseId :: UID
+              _statementsOfixityGam :: FixityGam
+              _statementsOgUniq :: UID
+              _statementsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _statementsOidGam :: IdDefOccGam
+              _statementsOmoduleNm :: HsName
+              _statementsOnmLev :: NmLev
+              _statementsOopts :: EHCOpts
+              _statementsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _statementsOpragmas :: (Set.Set Pragma.Pragma)
+              _statementsOtopInstanceNmL :: ([HsName])
+              _statementsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _statementsIeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
+              _statementsIerrSq :: ErrSq
+              _statementsIgUniq :: UID
+              _statementsIidUseOccGam :: IdUseOccGam
+              _statementsIpp :: PP_Doc
+              _statementsIppL :: ([PP_Doc])
+              _statementsIppWrap :: (PP_Doc -> PP_Doc)
+              _statementsItopInstanceNmL :: ([HsName])
+              _statementsItrpp :: TrPP
+              _statementsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 251, column 9)
+              _pp =
+                  "do" >#< vlist _statementsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 539, column 25)
+              (_eh,_) =
+                  foldr1 (\(_,s) (e,_) -> (s e,undefined)) _statementsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _statementsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _statementsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _statementsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _statementsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _statementsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _statementsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _statementsItopInstanceNmL
+              -- copy rule (down)
+              _statementsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _statementsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _statementsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _statementsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _statementsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _statementsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _statementsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _statementsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _statementsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _statementsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _statementsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _statementsOtr =
+                  _lhsItr
+              ( _statementsIeh,_statementsIerrSq,_statementsIgUniq,_statementsIidUseOccGam,_statementsIpp,_statementsIppL,_statementsIppWrap,_statementsItopInstanceNmL,_statementsItrpp,_statementsIundefOccGam) =
+                  statements_ _statementsOcaseId _statementsOfixityGam _statementsOgUniq _statementsOgenerDerivMp _statementsOidGam _statementsOmoduleNm _statementsOnmLev _statementsOopts _statementsOpatchEhNmInInstance _statementsOpragmas _statementsOtopInstanceNmL _statementsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_ImplicitApplication :: Range ->
+                                      T_Expression ->
+                                      T_ContextedExpressions ->
+                                      T_Expression
+sem_Expression_ImplicitApplication range_ function_ arguments_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _functionOcaseId :: UID
+              _functionOfixityGam :: FixityGam
+              _functionOgUniq :: UID
+              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _functionOidGam :: IdDefOccGam
+              _functionOmoduleNm :: HsName
+              _functionOnmLev :: NmLev
+              _functionOopts :: EHCOpts
+              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _functionOpragmas :: (Set.Set Pragma.Pragma)
+              _functionOtopInstanceNmL :: ([HsName])
+              _functionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _argumentsOcaseId :: UID
+              _argumentsOfixityGam :: FixityGam
+              _argumentsOgUniq :: UID
+              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _argumentsOidGam :: IdDefOccGam
+              _argumentsOmoduleNm :: HsName
+              _argumentsOnmLev :: NmLev
+              _argumentsOopts :: EHCOpts
+              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
+              _argumentsOtopInstanceNmL :: ([HsName])
+              _argumentsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _functionIconNm :: Name
+              _functionIeh :: (EH.Expr)
+              _functionIerrSq :: ErrSq
+              _functionIgUniq :: UID
+              _functionIidUseOccGam :: IdUseOccGam
+              _functionIopChain :: (OpChain EH.Expr)
+              _functionIoperatorName :: MaybeName
+              _functionIpp :: PP_Doc
+              _functionIppWrap :: (PP_Doc -> PP_Doc)
+              _functionItopInstanceNmL :: ([HsName])
+              _functionItrpp :: TrPP
+              _functionIundefOccGam :: IdUseOccGam
+              _argumentsIeh :: ([(EH.Expr,EH.PrExpr)])
+              _argumentsIerrSq :: ErrSq
+              _argumentsIgUniq :: UID
+              _argumentsIidUseOccGam :: IdUseOccGam
+              _argumentsIpp :: PP_Doc
+              _argumentsIppL :: ([PP_Doc])
+              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
+              _argumentsItopInstanceNmL :: ([HsName])
+              _argumentsItrpp :: TrPP
+              _argumentsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 253, column 9)
+              _pp =
+                  _functionIpp >#< ppListSep hsnOImpl hsnCImpl ", " _argumentsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 541, column 9)
+              _eh =
+                  ehExpApp' (\f (e,p) -> rngLift range_ EH.Expr_AppImpl f p e) range_ _functionIeh _argumentsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _functionIerrSq `Seq.union` _argumentsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _functionIppWrap . _argumentsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _functionItrpp >< _argumentsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _argumentsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _argumentsItopInstanceNmL
+              -- copy rule (down)
+              _functionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _functionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _functionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _functionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _functionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _functionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _functionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _functionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _functionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _functionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _functionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _functionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _argumentsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _argumentsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _argumentsOgUniq =
+                  _functionIgUniq
+              -- copy rule (down)
+              _argumentsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _argumentsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _argumentsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _argumentsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _argumentsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _argumentsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _argumentsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _argumentsOtopInstanceNmL =
+                  _functionItopInstanceNmL
+              -- copy rule (down)
+              _argumentsOtr =
+                  _lhsItr
+              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItrpp,_functionIundefOccGam) =
+                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL _functionOtr
+              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsItrpp,_argumentsIundefOccGam) =
+                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL _argumentsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expression_ImplicitLambda :: Range ->
+                                 T_ContextedPatterns ->
+                                 T_Expression ->
+                                 T_Expression
+sem_Expression_ImplicitLambda range_ patterns_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _expressionOidGam :: IdDefOccGam
+              _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([(EH.PatExpr,EH.PrExpr)])
+              _patternsIerrSq :: ErrSq
+              _patternsIfreeTvarS :: HsNameS
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 302, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_ _patternsIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 424, column 9)
+              _idGam =
+                  gamUnions [_idDefOccGamType, _lhsIidGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 425, column 9)
+              _expressionOidGam =
+                  gamUnions [_patternsIidDefOccGam, _idGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 104, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _patternsIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 20, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, _patternsIerrSq, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 255, column 9)
+              _pp =
+                  "\\" >|< ppListSep hsnOImpl hsnCImpl ", " _patternsIppL >#< "->" >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 543, column 9)
+              _eh =
+                  foldr (\(p,c) e -> rngLift range_ EH.Expr_LamImpl c p e) _expressionIeh _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _patternsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _patternsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIfreeTvarS,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ExpressionAnnotation ----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.ExprAnn
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Empty:
+         visit 0:
+            local eh          : _
+-}
+-- cata
+sem_ExpressionAnnotation :: ExpressionAnnotation ->
+                            T_ExpressionAnnotation
+sem_ExpressionAnnotation (ExpressionAnnotation_Empty) =
+    (sem_ExpressionAnnotation_Empty)
+-- semantic domain
+type T_ExpressionAnnotation = UID ->
+                              FixityGam ->
+                              UID ->
+                              (Map.Map HsName [(HsName,HsName)]) ->
+                              IdDefOccGam ->
+                              HsName ->
+                              NmLev ->
+                              EHCOpts ->
+                              PatchEhNmInInstance ->
+                              (Set.Set Pragma.Pragma) ->
+                              ([HsName]) ->
+                              (TraceOn -> [PP_Doc] -> TrPP) ->
+                              ( (EH.ExprAnn),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ExpressionAnnotation_Empty :: T_ExpressionAnnotation
+sem_ExpressionAnnotation_Empty =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.ExprAnn)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 909, column 17)
+              _eh =
+                  EH.ExprAnn_Empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Expressions -------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.Expr]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Expression 
+         child tl             : Expressions 
+      alternative Nil:
+-}
+-- cata
+sem_Expressions :: Expressions ->
+                   T_Expressions
+sem_Expressions list =
+    (Prelude.foldr sem_Expressions_Cons sem_Expressions_Nil (Prelude.map sem_Expression list))
+-- semantic domain
+type T_Expressions = UID ->
+                     FixityGam ->
+                     UID ->
+                     (Map.Map HsName [(HsName,HsName)]) ->
+                     IdDefOccGam ->
+                     HsName ->
+                     NmLev ->
+                     EHCOpts ->
+                     PatchEhNmInInstance ->
+                     (Set.Set Pragma.Pragma) ->
+                     ([HsName]) ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
+                     ( ([EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Expressions_Cons :: T_Expression ->
+                        T_Expressions ->
+                        T_Expressions
+sem_Expressions_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIconNm :: Name
+              _hdIeh :: (EH.Expr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIopChain :: (OpChain EH.Expr)
+              _hdIoperatorName :: MaybeName
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.Expr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 420, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 455, column 27)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIconNm,_hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIopChain,_hdIoperatorName,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Expressions_Nil :: T_Expressions
+sem_Expressions_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 422, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 455, column 27)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- FieldDeclaration --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.DataField
+         errSq                : ErrSq
+         fldrefnames          : Names
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative FieldDeclaration:
+         child range          : {Range}
+         child names          : {Names}
+         child type           : Type 
+         visit 0:
+            local fldrefnames : _
+            local nmLev       : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+-}
+-- cata
+sem_FieldDeclaration :: FieldDeclaration ->
+                        T_FieldDeclaration
+sem_FieldDeclaration (FieldDeclaration_FieldDeclaration _range _names _type) =
+    (sem_FieldDeclaration_FieldDeclaration _range _names (sem_Type _type))
+-- semantic domain
+type T_FieldDeclaration = FixityGam ->
+                          UID ->
+                          IdDefOccGam ->
+                          HsName ->
+                          NmLev ->
+                          EHCOpts ->
+                          PatchEhNmInInstance ->
+                          ([HsName]) ->
+                          (TraceOn -> [PP_Doc] -> TrPP) ->
+                          ( (EH.DataField),ErrSq,Names,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_FieldDeclaration_FieldDeclaration :: Range ->
+                                         Names ->
+                                         T_Type ->
+                                         T_FieldDeclaration
+sem_FieldDeclaration_FieldDeclaration range_ names_ type_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.DataField)
+              _lhsOerrSq :: ErrSq
+              _lhsOfldrefnames :: Names
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 83, column 9)
+              _fldrefnames =
+                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 42, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 190, column 9)
+              _pp =
+                  ppCommas' names_ >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 341, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.DataField_Field (Just _fldrefnames) _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 189, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 242, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
+              _lhsOfldrefnames =
+                  _fldrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- FieldDeclarations -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.DataField]
+         errSq                : ErrSq
+         fldrefnames          : Names
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : FieldDeclaration 
+         child tl             : FieldDeclarations 
+      alternative Nil:
+-}
+-- cata
+sem_FieldDeclarations :: FieldDeclarations ->
+                         T_FieldDeclarations
+sem_FieldDeclarations list =
+    (Prelude.foldr sem_FieldDeclarations_Cons sem_FieldDeclarations_Nil (Prelude.map sem_FieldDeclaration list))
+-- semantic domain
+type T_FieldDeclarations = FixityGam ->
+                           UID ->
+                           IdDefOccGam ->
+                           HsName ->
+                           NmLev ->
+                           EHCOpts ->
+                           PatchEhNmInInstance ->
+                           ([HsName]) ->
+                           (TraceOn -> [PP_Doc] -> TrPP) ->
+                           ( ([EH.DataField]),ErrSq,Names,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_FieldDeclarations_Cons :: T_FieldDeclaration ->
+                              T_FieldDeclarations ->
+                              T_FieldDeclarations
+sem_FieldDeclarations_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.DataField])
+              _lhsOerrSq :: ErrSq
+              _lhsOfldrefnames :: Names
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.DataField)
+              _hdIerrSq :: ErrSq
+              _hdIfldrefnames :: Names
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.DataField])
+              _tlIerrSq :: ErrSq
+              _tlIfldrefnames :: Names
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 478, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 335, column 33)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
+              _lhsOfldrefnames =
+                  _hdIfldrefnames ++ _tlIfldrefnames
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIfldrefnames,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIfldrefnames,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_FieldDeclarations_Nil :: T_FieldDeclarations
+sem_FieldDeclarations_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.DataField])
+              _lhsOerrSq :: ErrSq
+              _lhsOfldrefnames :: Names
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 480, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 335, column 33)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
+              _lhsOfldrefnames =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- FunctionBinding ---------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.Decl
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative FunctionBinding:
+         child range          : {Range}
+         child lefthandside   : LeftHandSide 
+         child righthandside  : RightHandSide 
+         visit 0:
+            local trpp        : _
+            local idDefOccGam : _
+            local idUseOccGam : _
+            local idUseHereOccL : _
+            local undefOccGam : _
+            local idDpdMp     : _
+            local idOccDef    : _
+            local idOccDefs   : _
+            local nmLev       : _
+            local nmLevFun    : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local caseId      : _
+            local lUniq       : {UID}
+-}
+-- cata
+sem_FunctionBinding :: FunctionBinding ->
+                       T_FunctionBinding
+sem_FunctionBinding (FunctionBinding_FunctionBinding _range _lefthandside _righthandside) =
+    (sem_FunctionBinding_FunctionBinding _range (sem_LeftHandSide _lefthandside) (sem_RightHandSide _righthandside))
+-- semantic domain
+type T_FunctionBinding = UID ->
+                         FixityGam ->
+                         UID ->
+                         (Map.Map HsName [(HsName,HsName)]) ->
+                         IdDefOccGam ->
+                         HsName ->
+                         NameDeclCxt ->
+                         NmLev ->
+                         EHCOpts ->
+                         PatchEhNmInInstance ->
+                         (Set.Set Pragma.Pragma) ->
+                         ([HsName]) ->
+                         (TraceOn -> [PP_Doc] -> TrPP) ->
+                         ( (EH.Decl),ErrSq,UID,IdDefOccGam,IdDpdMp,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_FunctionBinding_FunctionBinding :: Range ->
+                                       T_LeftHandSide ->
+                                       T_RightHandSide ->
+                                       T_FunctionBinding
+sem_FunctionBinding_FunctionBinding range_ lefthandside_ righthandside_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _righthandsideOidGam :: IdDefOccGam
+              _lhsOundefOccGam :: IdUseOccGam
+              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _righthandsideOsepPP :: PP_Doc
+              _lhsOeh :: (EH.Decl)
+              _righthandsideOmustBeMono :: Bool
+              _lefthandsideOgUniq :: UID
+              _lUniq :: UID
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lefthandsideOcaseId :: UID
+              _lefthandsideOfixityGam :: FixityGam
+              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _lefthandsideOidGam :: IdDefOccGam
+              _lefthandsideOmoduleNm :: HsName
+              _lefthandsideOnmLev :: NmLev
+              _lefthandsideOnmLevFun :: NmLev
+              _lefthandsideOopts :: EHCOpts
+              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
+              _lefthandsideOtopInstanceNmL :: ([HsName])
+              _lefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _righthandsideOcaseId :: UID
+              _righthandsideOfixityGam :: FixityGam
+              _righthandsideOgUniq :: UID
+              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _righthandsideOmoduleNm :: HsName
+              _righthandsideOnmLev :: NmLev
+              _righthandsideOopts :: EHCOpts
+              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
+              _righthandsideOtopInstanceNmL :: ([HsName])
+              _righthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _lefthandsideIeh :: ([EH.PatExpr])
+              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
+              _lefthandsideIerrSq :: ErrSq
+              _lefthandsideIgUniq :: UID
+              _lefthandsideIidDefOccGam :: IdDefOccGam
+              _lefthandsideIidOccDefs :: ([IdOcc])
+              _lefthandsideIidUseOccGam :: IdUseOccGam
+              _lefthandsideIpp :: PP_Doc
+              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _lefthandsideIrefname :: HsName
+              _lefthandsideItopInstanceNmL :: ([HsName])
+              _lefthandsideItrpp :: TrPP
+              _lefthandsideIundefOccGam :: IdUseOccGam
+              _righthandsideIeh :: (EH.Expr)
+              _righthandsideIerrSq :: ErrSq
+              _righthandsideIgUniq :: UID
+              _righthandsideIidUseOccGam :: IdUseOccGam
+              _righthandsideIpp :: PP_Doc
+              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _righthandsideItopInstanceNmL :: ([HsName])
+              _righthandsideItrpp :: TrPP
+              _righthandsideIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 19, column 9)
+              _trpp =
+                  (_lhsItr TraceOn_HsOcc $ [_idOccDef >#< " = FunctionBinding"] ++ [ "idUseHereOccL=" >#< ppBracketsCommas _idUseHereOccL ])
+                  >< _lefthandsideItrpp >< _righthandsideItrpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 272, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_
+                    (IdAsp_Val_Fun _lefthandsideIeh
+                                   (_lefthandsideIehTyMk _righthandsideIeh)
+                                   _lUniq)
+                    _idOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 456, column 9)
+              _righthandsideOidGam =
+                  gamUnion _lefthandsideIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 846, column 29)
+              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
+                  splitIdUseOccGam' (_lhsInameDeclCxt == NameDeclCxt_Instance) _lhsInmLev
+                       (gamUnions [_lefthandsideIidUseOccGam,_righthandsideIidUseOccGam])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 846, column 9)
+              _idDpdMp =
+                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 850, column 9)
+              _lhsOundefOccGam =
+                  gamUnions [_undefOccGam,_lefthandsideIundefOccGam,_righthandsideIundefOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1268, column 9)
+              _righthandsideOpatchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 167, column 9)
+              _idOccDef =
+                  IdOcc _lefthandsideIrefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 167, column 9)
+              _idOccDefs =
+                  [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
+              _nmLevFun =
+                  _lhsInmLev
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 108, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _lefthandsideIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 40, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, _lefthandsideIerrSq, _righthandsideIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 311, column 9)
+              _pp =
+                  _lefthandsideIpp >#< _righthandsideIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 312, column 9)
+              _righthandsideOsepPP =
+                  pp "="
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 719, column 9)
+              _lhsOeh =
+                  let (h,t) = hdAndTl _lefthandsideIeh
+                  in  rngLift range_ EH.Decl_Val h
+                        (foldr (rngLift range_ EH.Expr_Lam)
+                               (_lefthandsideIehTyMk _righthandsideIeh)
+                               t)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 874, column 9)
+              _caseId =
+                  _lUniq
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 285, column 9)
+              _righthandsideOmustBeMono =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_lefthandsideOgUniq,_lUniq) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _idDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _lefthandsideIppWrap . _righthandsideIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _trpp
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _righthandsideIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _righthandsideItopInstanceNmL
+              -- copy rule (from local)
+              _lefthandsideOcaseId =
+                  _caseId
+              -- copy rule (down)
+              _lefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _lefthandsideOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _lefthandsideOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _lefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _lefthandsideOnmLev =
+                  _nmLev
+              -- copy rule (from local)
+              _lefthandsideOnmLevFun =
+                  _nmLevFun
+              -- copy rule (down)
+              _lefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _lefthandsideOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _lefthandsideOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _lefthandsideOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _righthandsideOcaseId =
+                  _caseId
+              -- copy rule (down)
+              _righthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _righthandsideOgUniq =
+                  _lefthandsideIgUniq
+              -- copy rule (down)
+              _righthandsideOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _righthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _righthandsideOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _righthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _righthandsideOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _righthandsideOtopInstanceNmL =
+                  _lefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _righthandsideOtr =
+                  _lhsItr
+              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideItrpp,_lefthandsideIundefOccGam) =
+                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL _lefthandsideOtr
+              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideItrpp,_righthandsideIundefOccGam) =
+                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL _righthandsideOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- FunctionBindings --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.Decl]
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : FunctionBinding 
+         child tl             : FunctionBindings 
+      alternative Nil:
+-}
+-- cata
+sem_FunctionBindings :: FunctionBindings ->
+                        T_FunctionBindings
+sem_FunctionBindings list =
+    (Prelude.foldr sem_FunctionBindings_Cons sem_FunctionBindings_Nil (Prelude.map sem_FunctionBinding list))
+-- semantic domain
+type T_FunctionBindings = UID ->
+                          FixityGam ->
+                          UID ->
+                          (Map.Map HsName [(HsName,HsName)]) ->
+                          IdDefOccGam ->
+                          HsName ->
+                          NameDeclCxt ->
+                          NmLev ->
+                          EHCOpts ->
+                          PatchEhNmInInstance ->
+                          (Set.Set Pragma.Pragma) ->
+                          ([HsName]) ->
+                          (TraceOn -> [PP_Doc] -> TrPP) ->
+                          ( ([EH.Decl]),ErrSq,UID,IdDefOccGam,IdDpdMp,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_FunctionBindings_Cons :: T_FunctionBinding ->
+                             T_FunctionBindings ->
+                             T_FunctionBindings
+sem_FunctionBindings_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnameDeclCxt :: NameDeclCxt
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnameDeclCxt :: NameDeclCxt
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.Decl)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidDpdMp :: IdDpdMp
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.Decl])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidDpdMp :: IdDpdMp
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 713, column 32)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnameDeclCxt _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnameDeclCxt _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_FunctionBindings_Nil :: T_FunctionBindings
+sem_FunctionBindings_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 713, column 32)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- FunctionalDependencies --------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.FuncDep]
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : FunctionalDependency 
+         child tl             : FunctionalDependencies 
+      alternative Nil:
+-}
+-- cata
+sem_FunctionalDependencies :: FunctionalDependencies ->
+                              T_FunctionalDependencies
+sem_FunctionalDependencies list =
+    (Prelude.foldr sem_FunctionalDependencies_Cons sem_FunctionalDependencies_Nil (Prelude.map sem_FunctionalDependency list))
+-- semantic domain
+type T_FunctionalDependencies = FixityGam ->
+                                UID ->
+                                (Map.Map HsName [(HsName,HsName)]) ->
+                                IdDefOccGam ->
+                                HsName ->
+                                NameDeclCxt ->
+                                NmLev ->
+                                EHCOpts ->
+                                PatchEhNmInInstance ->
+                                (Set.Set Pragma.Pragma) ->
+                                ([HsName]) ->
+                                (TraceOn -> [PP_Doc] -> TrPP) ->
+                                ( ([EH.FuncDep]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_FunctionalDependencies_Cons :: T_FunctionalDependency ->
+                                   T_FunctionalDependencies ->
+                                   T_FunctionalDependencies
+sem_FunctionalDependencies_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.FuncDep])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnameDeclCxt :: NameDeclCxt
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnameDeclCxt :: NameDeclCxt
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.FuncDep)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidDpdMp :: IdDpdMp
+              _hdIidInClassTySigDefOccGam :: IdDefOccGam
+              _hdIidInInstanceValDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIneedsError :: Bool
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.FuncDep])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathFixityGam :: FixityGam
+              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidDpdMp :: IdDpdMp
+              _tlIidInClassTySigDefOccGam :: IdDefOccGam
+              _tlIidInInstanceValDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIneedsError :: Bool
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 151, column 38)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _hdIgathPragmas `Set.union` _tlIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _hdIidInClassTySigDefOccGam `gamAddGam` _tlIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _hdIidInInstanceValDefOccGam `gamAddGam` _tlIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _hdIneedsError || _tlIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidInClassTySigDefOccGam,_hdIidInInstanceValDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnameDeclCxt _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidInClassTySigDefOccGam,_tlIidInInstanceValDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnameDeclCxt _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_FunctionalDependencies_Nil :: T_FunctionalDependencies
+sem_FunctionalDependencies_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.FuncDep])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 151, column 38)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- FunctionalDependency ----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.FuncDep
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Dependency:
+         child range          : {Range}
+         child fromtypevariables : {Names}
+         child totypevariables : {Names}
+         visit 0:
+            local pp          : _
+-}
+-- cata
+sem_FunctionalDependency :: FunctionalDependency ->
+                            T_FunctionalDependency
+sem_FunctionalDependency (FunctionalDependency_Dependency _range _fromtypevariables _totypevariables) =
+    (sem_FunctionalDependency_Dependency _range _fromtypevariables _totypevariables)
+-- semantic domain
+type T_FunctionalDependency = FixityGam ->
+                              UID ->
+                              (Map.Map HsName [(HsName,HsName)]) ->
+                              IdDefOccGam ->
+                              HsName ->
+                              NameDeclCxt ->
+                              NmLev ->
+                              EHCOpts ->
+                              PatchEhNmInInstance ->
+                              (Set.Set Pragma.Pragma) ->
+                              ([HsName]) ->
+                              (TraceOn -> [PP_Doc] -> TrPP) ->
+                              ( (EH.FuncDep),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_FunctionalDependency_Dependency :: Range ->
+                                       Names ->
+                                       Names ->
+                                       T_FunctionalDependency
+sem_FunctionalDependency_Dependency range_ fromtypevariables_ totypevariables_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.FuncDep)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 79, column 9)
+              _pp =
+                  ppSpaces fromtypevariables_ >#< "->" >#< totypevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 157, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.FuncDep_Dep
+                    (map (rngLift range_ EH.TyVar_Var) fromtypevariables_)
+                    (map (rngLift range_ EH.TyVar_Var) totypevariables_)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- GuardedExpression -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         mustBeMono           : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         sepPP                : PP_Doc
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : UIDS -> EH.Expr -> EH.Expr
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative GuardedExpression:
+         child range          : {Range}
+         child guard          : Expression 
+         child expression     : Expression 
+         visit 0:
+            local valrefnames : _
+            local idUseOccGamVal : _
+            local errIdUseVal : _
+            local typerefname : _
+            local idUseOccGamType : _
+            local errIdUseType : _
+            local idUseOccGam : _
+            local errSq       : _
+            local pp          : _
+-}
+-- cata
+sem_GuardedExpression :: GuardedExpression ->
+                         T_GuardedExpression
+sem_GuardedExpression (GuardedExpression_GuardedExpression _range _guard _expression) =
+    (sem_GuardedExpression_GuardedExpression _range (sem_Expression _guard) (sem_Expression _expression))
+-- semantic domain
+type T_GuardedExpression = UID ->
+                           FixityGam ->
+                           UID ->
+                           (Map.Map HsName [(HsName,HsName)]) ->
+                           IdDefOccGam ->
+                           HsName ->
+                           Bool ->
+                           NmLev ->
+                           EHCOpts ->
+                           PatchEhNmInInstance ->
+                           (Set.Set Pragma.Pragma) ->
+                           PP_Doc ->
+                           ([HsName]) ->
+                           (TraceOn -> [PP_Doc] -> TrPP) ->
+                           ( (UIDS -> EH.Expr -> EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_GuardedExpression_GuardedExpression :: Range ->
+                                           T_Expression ->
+                                           T_Expression ->
+                                           T_GuardedExpression
+sem_GuardedExpression_GuardedExpression range_ guard_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsImustBeMono
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsIsepPP
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: (UIDS -> EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _guardOcaseId :: UID
+              _guardOfixityGam :: FixityGam
+              _guardOgUniq :: UID
+              _guardOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _guardOidGam :: IdDefOccGam
+              _guardOmoduleNm :: HsName
+              _guardOnmLev :: NmLev
+              _guardOopts :: EHCOpts
+              _guardOpatchEhNmInInstance :: PatchEhNmInInstance
+              _guardOpragmas :: (Set.Set Pragma.Pragma)
+              _guardOtopInstanceNmL :: ([HsName])
+              _guardOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _guardIconNm :: Name
+              _guardIeh :: (EH.Expr)
+              _guardIerrSq :: ErrSq
+              _guardIgUniq :: UID
+              _guardIidUseOccGam :: IdUseOccGam
+              _guardIopChain :: (OpChain EH.Expr)
+              _guardIoperatorName :: MaybeName
+              _guardIpp :: PP_Doc
+              _guardIppWrap :: (PP_Doc -> PP_Doc)
+              _guardItopInstanceNmL :: ([HsName])
+              _guardItrpp :: TrPP
+              _guardIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 627, column 29)
+              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 629, column 29)
+              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 627, column 9)
+              _idUseOccGam =
+                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 632, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_guardIidUseOccGam,_expressionIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 90, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardIerrSq, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 281, column 9)
+              _pp =
+                  "|" >#< _guardIpp >#< _lhsIsepPP >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 635, column 9)
+              _lhsOeh =
+                  \failS e -> EH.mkIf'' (_typerefname : _valrefnames) range_ _guardIeh (ehMkEnforceMono range_ _lhsImustBeMono _expressionIeh) e Nothing failS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _guardIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _guardItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _guardIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _guardOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _guardOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _guardOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _guardOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _guardOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _guardOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _guardOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _guardOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _guardOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _guardOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _guardOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _guardOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _guardIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _guardItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _guardIconNm,_guardIeh,_guardIerrSq,_guardIgUniq,_guardIidUseOccGam,_guardIopChain,_guardIoperatorName,_guardIpp,_guardIppWrap,_guardItopInstanceNmL,_guardItrpp,_guardIundefOccGam) =
+                  guard_ _guardOcaseId _guardOfixityGam _guardOgUniq _guardOgenerDerivMp _guardOidGam _guardOmoduleNm _guardOnmLev _guardOopts _guardOpatchEhNmInInstance _guardOpragmas _guardOtopInstanceNmL _guardOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- GuardedExpressions ------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         mustBeMono           : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         sepPP                : PP_Doc
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [UIDS -> EH.Expr -> EH.Expr]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : GuardedExpression 
+         child tl             : GuardedExpressions 
+      alternative Nil:
+-}
+-- cata
+sem_GuardedExpressions :: GuardedExpressions ->
+                          T_GuardedExpressions
+sem_GuardedExpressions list =
+    (Prelude.foldr sem_GuardedExpressions_Cons sem_GuardedExpressions_Nil (Prelude.map sem_GuardedExpression list))
+-- semantic domain
+type T_GuardedExpressions = UID ->
+                            FixityGam ->
+                            UID ->
+                            (Map.Map HsName [(HsName,HsName)]) ->
+                            IdDefOccGam ->
+                            HsName ->
+                            Bool ->
+                            NmLev ->
+                            EHCOpts ->
+                            PatchEhNmInInstance ->
+                            (Set.Set Pragma.Pragma) ->
+                            PP_Doc ->
+                            ([HsName]) ->
+                            (TraceOn -> [PP_Doc] -> TrPP) ->
+                            ( ([UIDS -> EH.Expr -> EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_GuardedExpressions_Cons :: T_GuardedExpression ->
+                               T_GuardedExpressions ->
+                               T_GuardedExpressions
+sem_GuardedExpressions_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsImustBeMono
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsIsepPP
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([UIDS -> EH.Expr -> EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOmustBeMono :: Bool
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOsepPP :: PP_Doc
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOmustBeMono :: Bool
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOsepPP :: PP_Doc
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (UIDS -> EH.Expr -> EH.Expr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([UIDS -> EH.Expr -> EH.Expr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 630, column 34)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOmustBeMono =
+                  _lhsImustBeMono
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOsepPP =
+                  _lhsIsepPP
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOmustBeMono =
+                  _lhsImustBeMono
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _tlOsepPP =
+                  _lhsIsepPP
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOmustBeMono _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOsepPP _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOmustBeMono _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOsepPP _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_GuardedExpressions_Nil :: T_GuardedExpressions
+sem_GuardedExpressions_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsImustBeMono
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsIsepPP
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([UIDS -> EH.Expr -> EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 630, column 34)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Import ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+      alternative TypeOrClass:
+         child range          : {Range}
+         child name           : {Name}
+         child names          : {MaybeNames}
+      alternative TypeOrClassComplete:
+         child range          : {Range}
+         child name           : {Name}
+-}
+-- cata
+sem_Import :: Import ->
+              T_Import
+sem_Import (Import_Variable _range _name) =
+    (sem_Import_Variable _range _name)
+sem_Import (Import_TypeOrClass _range _name _names) =
+    (sem_Import_TypeOrClass _range _name _names)
+sem_Import (Import_TypeOrClassComplete _range _name) =
+    (sem_Import_TypeOrClassComplete _range _name)
+-- semantic domain
+type T_Import = FixityGam ->
+                UID ->
+                IdDefOccGam ->
+                Bool ->
+                Bool ->
+                HsName ->
+                NmLev ->
+                EHCOpts ->
+                PatchEhNmInInstance ->
+                ([HsName]) ->
+                (TraceOn -> [PP_Doc] -> TrPP) ->
+                ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Import_Variable :: Range ->
+                       Name ->
+                       T_Import
+sem_Import_Variable range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Import_TypeOrClass :: Range ->
+                          Name ->
+                          MaybeNames ->
+                          T_Import
+sem_Import_TypeOrClass range_ name_ names_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Import_TypeOrClassComplete :: Range ->
+                                  Name ->
+                                  T_Import
+sem_Import_TypeOrClassComplete range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ImportDeclaration -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         modAsMp              : Map.Map HsName HsName
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Import:
+         child range          : {Range}
+         child qualified      : {Bool}
+         child name           : {Name}
+         child asname         : {MaybeName}
+         child importspecification : MaybeImportSpecification 
+      alternative Empty:
+         child range          : {Range}
+-}
+-- cata
+sem_ImportDeclaration :: ImportDeclaration ->
+                         T_ImportDeclaration
+sem_ImportDeclaration (ImportDeclaration_Import _range _qualified _name _asname _importspecification) =
+    (sem_ImportDeclaration_Import _range _qualified _name _asname (sem_MaybeImportSpecification _importspecification))
+sem_ImportDeclaration (ImportDeclaration_Empty _range) =
+    (sem_ImportDeclaration_Empty _range)
+-- semantic domain
+type T_ImportDeclaration = FixityGam ->
+                           UID ->
+                           IdDefOccGam ->
+                           Bool ->
+                           Bool ->
+                           HsName ->
+                           NmLev ->
+                           EHCOpts ->
+                           PatchEhNmInInstance ->
+                           ([HsName]) ->
+                           (TraceOn -> [PP_Doc] -> TrPP) ->
+                           ( ErrSq,UID,FixityGam,IdUseOccGam,(Map.Map HsName HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ImportDeclaration_Import :: Range ->
+                                Bool ->
+                                Name ->
+                                MaybeName ->
+                                T_MaybeImportSpecification ->
+                                T_ImportDeclaration
+sem_ImportDeclaration_Import range_ qualified_ name_ asname_ importspecification_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmodAsMp :: (Map.Map HsName HsName)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _importspecificationOfixityGam :: FixityGam
+              _importspecificationOgUniq :: UID
+              _importspecificationOidGam :: IdDefOccGam
+              _importspecificationOisMainMod :: Bool
+              _importspecificationOisTopMod :: Bool
+              _importspecificationOmoduleNm :: HsName
+              _importspecificationOnmLev :: NmLev
+              _importspecificationOopts :: EHCOpts
+              _importspecificationOpatchEhNmInInstance :: PatchEhNmInInstance
+              _importspecificationOtopInstanceNmL :: ([HsName])
+              _importspecificationOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _importspecificationIerrSq :: ErrSq
+              _importspecificationIgUniq :: UID
+              _importspecificationIgathFixityGam :: FixityGam
+              _importspecificationIidUseOccGam :: IdUseOccGam
+              _importspecificationIpp :: PP_Doc
+              _importspecificationIppWrap :: (PP_Doc -> PP_Doc)
+              _importspecificationItopInstanceNmL :: ([HsName])
+              _importspecificationItrpp :: TrPP
+              _importspecificationIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1234, column 9)
+              _lhsOmodAsMp =
+                  maybe Map.empty (Map.singleton name_) asname_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _importspecificationIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _importspecificationIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _importspecificationIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _importspecificationIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _importspecificationIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _importspecificationItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _importspecificationIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _importspecificationIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _importspecificationItopInstanceNmL
+              -- copy rule (down)
+              _importspecificationOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _importspecificationOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _importspecificationOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _importspecificationOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _importspecificationOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _importspecificationOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _importspecificationOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _importspecificationOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _importspecificationOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _importspecificationOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _importspecificationOtr =
+                  _lhsItr
+              ( _importspecificationIerrSq,_importspecificationIgUniq,_importspecificationIgathFixityGam,_importspecificationIidUseOccGam,_importspecificationIpp,_importspecificationIppWrap,_importspecificationItopInstanceNmL,_importspecificationItrpp,_importspecificationIundefOccGam) =
+                  importspecification_ _importspecificationOfixityGam _importspecificationOgUniq _importspecificationOidGam _importspecificationOisMainMod _importspecificationOisTopMod _importspecificationOmoduleNm _importspecificationOnmLev _importspecificationOopts _importspecificationOpatchEhNmInInstance _importspecificationOtopInstanceNmL _importspecificationOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ImportDeclaration_Empty :: Range ->
+                               T_ImportDeclaration
+sem_ImportDeclaration_Empty range_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmodAsMp :: (Map.Map HsName HsName)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1236, column 9)
+              _lhsOmodAsMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ImportDeclarations ------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         modAsMp              : Map.Map HsName HsName
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : ImportDeclaration 
+         child tl             : ImportDeclarations 
+      alternative Nil:
+-}
+-- cata
+sem_ImportDeclarations :: ImportDeclarations ->
+                          T_ImportDeclarations
+sem_ImportDeclarations list =
+    (Prelude.foldr sem_ImportDeclarations_Cons sem_ImportDeclarations_Nil (Prelude.map sem_ImportDeclaration list))
+-- semantic domain
+type T_ImportDeclarations = FixityGam ->
+                            UID ->
+                            IdDefOccGam ->
+                            Bool ->
+                            Bool ->
+                            HsName ->
+                            NmLev ->
+                            EHCOpts ->
+                            PatchEhNmInInstance ->
+                            ([HsName]) ->
+                            (TraceOn -> [PP_Doc] -> TrPP) ->
+                            ( ErrSq,UID,FixityGam,IdUseOccGam,(Map.Map HsName HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ImportDeclarations_Cons :: T_ImportDeclaration ->
+                               T_ImportDeclarations ->
+                               T_ImportDeclarations
+sem_ImportDeclarations_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmodAsMp :: (Map.Map HsName HsName)
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOisMainMod :: Bool
+              _hdOisTopMod :: Bool
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOisMainMod :: Bool
+              _tlOisTopMod :: Bool
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdImodAsMp :: (Map.Map HsName HsName)
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathFixityGam :: FixityGam
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlImodAsMp :: (Map.Map HsName HsName)
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1230, column 41)
+              _lhsOmodAsMp =
+                  _hdImodAsMp `Map.union` _tlImodAsMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _hdOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _tlOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdImodAsMp,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlImodAsMp,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_ImportDeclarations_Nil :: T_ImportDeclarations
+sem_ImportDeclarations_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmodAsMp :: (Map.Map HsName HsName)
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1230, column 41)
+              _lhsOmodAsMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- ImportSpecification -----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Import:
+         child range          : {Range}
+         child hiding         : {Bool}
+         child imports        : Imports 
+-}
+-- cata
+sem_ImportSpecification :: ImportSpecification ->
+                           T_ImportSpecification
+sem_ImportSpecification (ImportSpecification_Import _range _hiding _imports) =
+    (sem_ImportSpecification_Import _range _hiding (sem_Imports _imports))
+-- semantic domain
+type T_ImportSpecification = FixityGam ->
+                             UID ->
+                             IdDefOccGam ->
+                             Bool ->
+                             Bool ->
+                             HsName ->
+                             NmLev ->
+                             EHCOpts ->
+                             PatchEhNmInInstance ->
+                             ([HsName]) ->
+                             (TraceOn -> [PP_Doc] -> TrPP) ->
+                             ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_ImportSpecification_Import :: Range ->
+                                  Bool ->
+                                  T_Imports ->
+                                  T_ImportSpecification
+sem_ImportSpecification_Import range_ hiding_ imports_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _importsOfixityGam :: FixityGam
+              _importsOgUniq :: UID
+              _importsOidGam :: IdDefOccGam
+              _importsOisMainMod :: Bool
+              _importsOisTopMod :: Bool
+              _importsOmoduleNm :: HsName
+              _importsOnmLev :: NmLev
+              _importsOopts :: EHCOpts
+              _importsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _importsOtopInstanceNmL :: ([HsName])
+              _importsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _importsIerrSq :: ErrSq
+              _importsIgUniq :: UID
+              _importsIgathFixityGam :: FixityGam
+              _importsIidUseOccGam :: IdUseOccGam
+              _importsIpp :: PP_Doc
+              _importsIppWrap :: (PP_Doc -> PP_Doc)
+              _importsItopInstanceNmL :: ([HsName])
+              _importsItrpp :: TrPP
+              _importsIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _importsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _importsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _importsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _importsIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _importsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _importsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _importsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _importsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _importsItopInstanceNmL
+              -- copy rule (down)
+              _importsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _importsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _importsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _importsOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _importsOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _importsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _importsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _importsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _importsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _importsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _importsOtr =
+                  _lhsItr
+              ( _importsIerrSq,_importsIgUniq,_importsIgathFixityGam,_importsIidUseOccGam,_importsIpp,_importsIppWrap,_importsItopInstanceNmL,_importsItrpp,_importsIundefOccGam) =
+                  imports_ _importsOfixityGam _importsOgUniq _importsOidGam _importsOisMainMod _importsOisTopMod _importsOmoduleNm _importsOnmLev _importsOopts _importsOpatchEhNmInInstance _importsOtopInstanceNmL _importsOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Imports -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Import 
+         child tl             : Imports 
+      alternative Nil:
+-}
+-- cata
+sem_Imports :: Imports ->
+               T_Imports
+sem_Imports list =
+    (Prelude.foldr sem_Imports_Cons sem_Imports_Nil (Prelude.map sem_Import list))
+-- semantic domain
+type T_Imports = FixityGam ->
+                 UID ->
+                 IdDefOccGam ->
+                 Bool ->
+                 Bool ->
+                 HsName ->
+                 NmLev ->
+                 EHCOpts ->
+                 PatchEhNmInInstance ->
+                 ([HsName]) ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Imports_Cons :: T_Import ->
+                    T_Imports ->
+                    T_Imports
+sem_Imports_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOisMainMod :: Bool
+              _hdOisTopMod :: Bool
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOisMainMod :: Bool
+              _tlOisTopMod :: Bool
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathFixityGam :: FixityGam
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _hdOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _tlOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Imports_Nil :: T_Imports
+sem_Imports_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Kind --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         conNm                : Name
+         eh                   : EH.KiExpr
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative NormalApplication:
+         child range          : {Range}
+         child function       : Kind 
+         child arguments      : Kinds 
+         visit 0:
+            local pp          : _
+      alternative InfixApplication:
+         child range          : {Range}
+         child leftKind       : Kind 
+         child operator       : Kind 
+         child rightKind      : Kind 
+         visit 0:
+            local pp          : _
+            local eh          : _
+      alternative Constructor:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idAsp       : _
+            local idOccKind   : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local pp          : _
+      alternative Parenthesized:
+         child range          : {Range}
+         child kind           : Kind 
+         visit 0:
+            local pp          : _
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idAsp       : _
+            local idOccKind   : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local pp          : _
+      alternative Forall:
+         child range          : {Range}
+         child kindvariables  : {Names}
+         child kind           : Kind 
+         visit 0:
+            local idDefOccGamInside : _
+            local idGam       : _
+            local pp          : _
+      alternative Annotate:
+         child range          : {Range}
+         child annotation     : KindAnnotation 
+         child kind           : Kind 
+         visit 0:
+            local eh          : _
+-}
+-- cata
+sem_Kind :: Kind ->
+            T_Kind
+sem_Kind (Kind_NormalApplication _range _function _arguments) =
+    (sem_Kind_NormalApplication _range (sem_Kind _function) (sem_Kinds _arguments))
+sem_Kind (Kind_InfixApplication _range _leftKind _operator _rightKind) =
+    (sem_Kind_InfixApplication _range (sem_Kind _leftKind) (sem_Kind _operator) (sem_Kind _rightKind))
+sem_Kind (Kind_Constructor _range _name) =
+    (sem_Kind_Constructor _range _name)
+sem_Kind (Kind_Parenthesized _range _kind) =
+    (sem_Kind_Parenthesized _range (sem_Kind _kind))
+sem_Kind (Kind_Variable _range _name) =
+    (sem_Kind_Variable _range _name)
+sem_Kind (Kind_Forall _range _kindvariables _kind) =
+    (sem_Kind_Forall _range _kindvariables (sem_Kind _kind))
+sem_Kind (Kind_Annotate _range _annotation _kind) =
+    (sem_Kind_Annotate _range (sem_KindAnnotation _annotation) (sem_Kind _kind))
+-- semantic domain
+type T_Kind = UID ->
+              IdDefOccGam ->
+              NmLev ->
+              EHCOpts ->
+              PatchEhNmInInstance ->
+              ([HsName]) ->
+              (TraceOn -> [PP_Doc] -> TrPP) ->
+              ( Name,(EH.KiExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Kind_NormalApplication :: Range ->
+                              T_Kind ->
+                              T_Kinds ->
+                              T_Kind
+sem_Kind_NormalApplication range_ function_ arguments_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.KiExpr)
+              _lhsOconNm :: Name
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _functionOgUniq :: UID
+              _functionOidGam :: IdDefOccGam
+              _functionOnmLev :: NmLev
+              _functionOopts :: EHCOpts
+              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _functionOtopInstanceNmL :: ([HsName])
+              _functionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _argumentsOgUniq :: UID
+              _argumentsOidGam :: IdDefOccGam
+              _argumentsOnmLev :: NmLev
+              _argumentsOopts :: EHCOpts
+              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _argumentsOtopInstanceNmL :: ([HsName])
+              _argumentsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _functionIconNm :: Name
+              _functionIeh :: (EH.KiExpr)
+              _functionIerrSq :: ErrSq
+              _functionIfreeTvarS :: HsNameS
+              _functionIgUniq :: UID
+              _functionIidUseOccGam :: IdUseOccGam
+              _functionIpp :: PP_Doc
+              _functionIppWrap :: (PP_Doc -> PP_Doc)
+              _functionItopInstanceNmL :: ([HsName])
+              _functionItrpp :: TrPP
+              _functionIundefOccGam :: IdUseOccGam
+              _argumentsIeh :: ([EH.KiExpr])
+              _argumentsIerrSq :: ErrSq
+              _argumentsIfreeTvarS :: HsNameS
+              _argumentsIgUniq :: UID
+              _argumentsIidUseOccGam :: IdUseOccGam
+              _argumentsIpp :: PP_Doc
+              _argumentsIppL :: ([PP_Doc])
+              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
+              _argumentsItopInstanceNmL :: ([HsName])
+              _argumentsItrpp :: TrPP
+              _argumentsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 99, column 9)
+              _pp =
+                  ppAppTop  (_functionIconNm, _functionIpp)
+                            _argumentsIppL (_functionIpp >#< ppSpaces _argumentsIppL)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 179, column 9)
+              _lhsOeh =
+                  appTopApp (_functionIeh : _argumentsIeh)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 115, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _functionIerrSq `Seq.union` _argumentsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  _functionIfreeTvarS `Set.union` _argumentsIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _functionIppWrap . _argumentsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _functionItrpp >< _argumentsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _argumentsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _argumentsItopInstanceNmL
+              -- copy rule (down)
+              _functionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _functionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _functionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _functionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _functionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _functionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _functionOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _argumentsOgUniq =
+                  _functionIgUniq
+              -- copy rule (down)
+              _argumentsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _argumentsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _argumentsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _argumentsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _argumentsOtopInstanceNmL =
+                  _functionItopInstanceNmL
+              -- copy rule (down)
+              _argumentsOtr =
+                  _lhsItr
+              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIfreeTvarS,_functionIgUniq,_functionIidUseOccGam,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItrpp,_functionIundefOccGam) =
+                  function_ _functionOgUniq _functionOidGam _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOtopInstanceNmL _functionOtr
+              ( _argumentsIeh,_argumentsIerrSq,_argumentsIfreeTvarS,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsItrpp,_argumentsIundefOccGam) =
+                  arguments_ _argumentsOgUniq _argumentsOidGam _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOtopInstanceNmL _argumentsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kind_InfixApplication :: Range ->
+                             T_Kind ->
+                             T_Kind ->
+                             T_Kind ->
+                             T_Kind
+sem_Kind_InfixApplication range_ leftKind_ operator_ rightKind_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.KiExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftKindOgUniq :: UID
+              _leftKindOidGam :: IdDefOccGam
+              _leftKindOnmLev :: NmLev
+              _leftKindOopts :: EHCOpts
+              _leftKindOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftKindOtopInstanceNmL :: ([HsName])
+              _leftKindOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _operatorOgUniq :: UID
+              _operatorOidGam :: IdDefOccGam
+              _operatorOnmLev :: NmLev
+              _operatorOopts :: EHCOpts
+              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
+              _operatorOtopInstanceNmL :: ([HsName])
+              _operatorOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightKindOgUniq :: UID
+              _rightKindOidGam :: IdDefOccGam
+              _rightKindOnmLev :: NmLev
+              _rightKindOopts :: EHCOpts
+              _rightKindOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightKindOtopInstanceNmL :: ([HsName])
+              _rightKindOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftKindIconNm :: Name
+              _leftKindIeh :: (EH.KiExpr)
+              _leftKindIerrSq :: ErrSq
+              _leftKindIfreeTvarS :: HsNameS
+              _leftKindIgUniq :: UID
+              _leftKindIidUseOccGam :: IdUseOccGam
+              _leftKindIpp :: PP_Doc
+              _leftKindIppWrap :: (PP_Doc -> PP_Doc)
+              _leftKindItopInstanceNmL :: ([HsName])
+              _leftKindItrpp :: TrPP
+              _leftKindIundefOccGam :: IdUseOccGam
+              _operatorIconNm :: Name
+              _operatorIeh :: (EH.KiExpr)
+              _operatorIerrSq :: ErrSq
+              _operatorIfreeTvarS :: HsNameS
+              _operatorIgUniq :: UID
+              _operatorIidUseOccGam :: IdUseOccGam
+              _operatorIpp :: PP_Doc
+              _operatorIppWrap :: (PP_Doc -> PP_Doc)
+              _operatorItopInstanceNmL :: ([HsName])
+              _operatorItrpp :: TrPP
+              _operatorIundefOccGam :: IdUseOccGam
+              _rightKindIconNm :: Name
+              _rightKindIeh :: (EH.KiExpr)
+              _rightKindIerrSq :: ErrSq
+              _rightKindIfreeTvarS :: HsNameS
+              _rightKindIgUniq :: UID
+              _rightKindIidUseOccGam :: IdUseOccGam
+              _rightKindIpp :: PP_Doc
+              _rightKindIppWrap :: (PP_Doc -> PP_Doc)
+              _rightKindItopInstanceNmL :: ([HsName])
+              _rightKindItrpp :: TrPP
+              _rightKindIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 102, column 9)
+              _pp =
+                  let args = [_leftKindIpp,_rightKindIpp]
+                                                  in      ppAppTop  (_operatorIconNm, _operatorIpp)
+                                    args (_operatorIpp >#< ppSpaces args)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 181, column 9)
+              _eh =
+                  appRngParApp range_ [_operatorIeh,_leftKindIeh,_rightKindIeh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 115, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftKindIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightKindIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  _leftKindIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightKindIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftKindIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightKindIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftKindIppWrap . _operatorIppWrap . _rightKindIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftKindItrpp >< _operatorItrpp >< _rightKindItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftKindIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightKindIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightKindIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightKindItopInstanceNmL
+              -- copy rule (down)
+              _leftKindOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftKindOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftKindOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftKindOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftKindOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftKindOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftKindOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _operatorOgUniq =
+                  _leftKindIgUniq
+              -- copy rule (down)
+              _operatorOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _operatorOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _operatorOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _operatorOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _operatorOtopInstanceNmL =
+                  _leftKindItopInstanceNmL
+              -- copy rule (down)
+              _operatorOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _rightKindOgUniq =
+                  _operatorIgUniq
+              -- copy rule (down)
+              _rightKindOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightKindOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightKindOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightKindOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rightKindOtopInstanceNmL =
+                  _operatorItopInstanceNmL
+              -- copy rule (down)
+              _rightKindOtr =
+                  _lhsItr
+              ( _leftKindIconNm,_leftKindIeh,_leftKindIerrSq,_leftKindIfreeTvarS,_leftKindIgUniq,_leftKindIidUseOccGam,_leftKindIpp,_leftKindIppWrap,_leftKindItopInstanceNmL,_leftKindItrpp,_leftKindIundefOccGam) =
+                  leftKind_ _leftKindOgUniq _leftKindOidGam _leftKindOnmLev _leftKindOopts _leftKindOpatchEhNmInInstance _leftKindOtopInstanceNmL _leftKindOtr
+              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItrpp,_operatorIundefOccGam) =
+                  operator_ _operatorOgUniq _operatorOidGam _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL _operatorOtr
+              ( _rightKindIconNm,_rightKindIeh,_rightKindIerrSq,_rightKindIfreeTvarS,_rightKindIgUniq,_rightKindIidUseOccGam,_rightKindIpp,_rightKindIppWrap,_rightKindItopInstanceNmL,_rightKindItrpp,_rightKindIundefOccGam) =
+                  rightKind_ _rightKindOgUniq _rightKindOidGam _rightKindOnmLev _rightKindOopts _rightKindOpatchEhNmInInstance _rightKindOtopInstanceNmL _rightKindOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kind_Constructor :: Range ->
+                        Name ->
+                        T_Kind
+sem_Kind_Constructor range_ name_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.KiExpr)
+              _lhsOconNm :: Name
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 665, column 9)
+              _idAsp =
+                  IdAsp_Kind_Con
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 665, column 9)
+              _idOccKind =
+                  IdOcc_Kind
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 671, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 106, column 9)
+              _pp =
+                  ppCon name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 183, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.KiExpr_Con _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 113, column 9)
+              _lhsOconNm =
+                  name_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kind_Parenthesized :: Range ->
+                          T_Kind ->
+                          T_Kind
+sem_Kind_Parenthesized range_ kind_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.KiExpr)
+              _lhsOconNm :: Name
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _kindOgUniq :: UID
+              _kindOidGam :: IdDefOccGam
+              _kindOnmLev :: NmLev
+              _kindOopts :: EHCOpts
+              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
+              _kindOtopInstanceNmL :: ([HsName])
+              _kindOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _kindIconNm :: Name
+              _kindIeh :: (EH.KiExpr)
+              _kindIerrSq :: ErrSq
+              _kindIfreeTvarS :: HsNameS
+              _kindIgUniq :: UID
+              _kindIidUseOccGam :: IdUseOccGam
+              _kindIpp :: PP_Doc
+              _kindIppWrap :: (PP_Doc -> PP_Doc)
+              _kindItopInstanceNmL :: ([HsName])
+              _kindItrpp :: TrPP
+              _kindIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 108, column 9)
+              _pp =
+                  ppParens _kindIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 185, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.KiExpr_Parens _kindIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 115, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _kindIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  _kindIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _kindIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _kindIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _kindItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _kindIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _kindIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _kindItopInstanceNmL
+              -- copy rule (down)
+              _kindOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _kindOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _kindOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _kindOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _kindOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _kindOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _kindOtr =
+                  _lhsItr
+              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindItrpp,_kindIundefOccGam) =
+                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL _kindOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kind_Variable :: Range ->
+                     Name ->
+                     T_Kind
+sem_Kind_Variable range_ name_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.KiExpr)
+              _lhsOconNm :: Name
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 668, column 9)
+              _idAsp =
+                  IdAsp_Kind_Var
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 668, column 9)
+              _idOccKind =
+                  IdOcc_Kind
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 671, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 110, column 9)
+              _pp =
+                  pp name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 187, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.KiExpr_Var name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 115, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 121, column 9)
+              _lhsOfreeTvarS =
+                  Set.singleton name_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kind_Forall :: Range ->
+                   Names ->
+                   T_Kind ->
+                   T_Kind
+sem_Kind_Forall range_ kindvariables_ kind_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.KiExpr)
+              _lhsOconNm :: Name
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _kindOgUniq :: UID
+              _kindOidGam :: IdDefOccGam
+              _kindOnmLev :: NmLev
+              _kindOopts :: EHCOpts
+              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
+              _kindOtopInstanceNmL :: ([HsName])
+              _kindOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _kindIconNm :: Name
+              _kindIeh :: (EH.KiExpr)
+              _kindIerrSq :: ErrSq
+              _kindIfreeTvarS :: HsNameS
+              _kindIgUniq :: UID
+              _kindIidUseOccGam :: IdUseOccGam
+              _kindIpp :: PP_Doc
+              _kindIppWrap :: (PP_Doc -> PP_Doc)
+              _kindItopInstanceNmL :: ([HsName])
+              _kindItrpp :: TrPP
+              _kindIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 312, column 9)
+              _idDefOccGamInside =
+                  kvarL2IdDefOccGam _lhsInmLev range_ kindvariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 485, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamInside _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 112, column 9)
+              _pp =
+                  "forall" >#< ppSpaces kindvariables_ >#< "." >#< _kindIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 189, column 9)
+              _lhsOeh =
+                  _kindIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 115, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 123, column 9)
+              _lhsOfreeTvarS =
+                  _kindIfreeTvarS `Set.difference` Set.fromList kindvariables_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _kindIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _kindIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _kindIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _kindItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _kindIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _kindIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _kindItopInstanceNmL
+              -- copy rule (down)
+              _kindOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _kindOidGam =
+                  _idGam
+              -- copy rule (down)
+              _kindOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _kindOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _kindOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _kindOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _kindOtr =
+                  _lhsItr
+              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindItrpp,_kindIundefOccGam) =
+                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL _kindOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kind_Annotate :: Range ->
+                     T_KindAnnotation ->
+                     T_Kind ->
+                     T_Kind
+sem_Kind_Annotate range_ annotation_ kind_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.KiExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _annotationOgUniq :: UID
+              _annotationOidGam :: IdDefOccGam
+              _annotationOnmLev :: NmLev
+              _annotationOopts :: EHCOpts
+              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
+              _annotationOtopInstanceNmL :: ([HsName])
+              _annotationOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _kindOgUniq :: UID
+              _kindOidGam :: IdDefOccGam
+              _kindOnmLev :: NmLev
+              _kindOopts :: EHCOpts
+              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
+              _kindOtopInstanceNmL :: ([HsName])
+              _kindOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _annotationIeh :: (EH.KiExprAnn)
+              _annotationIerrSq :: ErrSq
+              _annotationIfreeTvarS :: HsNameS
+              _annotationIgUniq :: UID
+              _annotationIidUseOccGam :: IdUseOccGam
+              _annotationIpp :: PP_Doc
+              _annotationIppWrap :: (PP_Doc -> PP_Doc)
+              _annotationItopInstanceNmL :: ([HsName])
+              _annotationItrpp :: TrPP
+              _annotationIundefOccGam :: IdUseOccGam
+              _kindIconNm :: Name
+              _kindIeh :: (EH.KiExpr)
+              _kindIerrSq :: ErrSq
+              _kindIfreeTvarS :: HsNameS
+              _kindIgUniq :: UID
+              _kindIidUseOccGam :: IdUseOccGam
+              _kindIpp :: PP_Doc
+              _kindIppWrap :: (PP_Doc -> PP_Doc)
+              _kindItopInstanceNmL :: ([HsName])
+              _kindItrpp :: TrPP
+              _kindIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 191, column 17)
+              _eh =
+                  rngLift range_ EH.KiExpr_Ann _annotationIeh _kindIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 115, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _annotationIerrSq `Seq.union` _kindIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  _annotationIfreeTvarS `Set.union` _kindIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _annotationIidUseOccGam `gamAddGam` _kindIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _annotationIpp >-< _kindIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _annotationIppWrap . _kindIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _annotationItrpp >< _kindItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _annotationIundefOccGam `gamUnion` _kindIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _kindIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _kindItopInstanceNmL
+              -- copy rule (down)
+              _annotationOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _annotationOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _annotationOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _annotationOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _annotationOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _annotationOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _annotationOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _kindOgUniq =
+                  _annotationIgUniq
+              -- copy rule (down)
+              _kindOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _kindOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _kindOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _kindOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _kindOtopInstanceNmL =
+                  _annotationItopInstanceNmL
+              -- copy rule (down)
+              _kindOtr =
+                  _lhsItr
+              ( _annotationIeh,_annotationIerrSq,_annotationIfreeTvarS,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationItrpp,_annotationIundefOccGam) =
+                  annotation_ _annotationOgUniq _annotationOidGam _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL _annotationOtr
+              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindItrpp,_kindIundefOccGam) =
+                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL _kindOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- KindAnnotation ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.KiExprAnn
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Empty:
+         visit 0:
+            local eh          : _
+-}
+-- cata
+sem_KindAnnotation :: KindAnnotation ->
+                      T_KindAnnotation
+sem_KindAnnotation (KindAnnotation_Empty) =
+    (sem_KindAnnotation_Empty)
+-- semantic domain
+type T_KindAnnotation = UID ->
+                        IdDefOccGam ->
+                        NmLev ->
+                        EHCOpts ->
+                        PatchEhNmInInstance ->
+                        ([HsName]) ->
+                        (TraceOn -> [PP_Doc] -> TrPP) ->
+                        ( (EH.KiExprAnn),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_KindAnnotation_Empty :: T_KindAnnotation
+sem_KindAnnotation_Empty =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.KiExprAnn)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 915, column 17)
+              _eh =
+                  EH.KiExprAnn_Empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Kinds -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.KiExpr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Kind 
+         child tl             : Kinds 
+      alternative Nil:
+-}
+-- cata
+sem_Kinds :: Kinds ->
+             T_Kinds
+sem_Kinds list =
+    (Prelude.foldr sem_Kinds_Cons sem_Kinds_Nil (Prelude.map sem_Kind list))
+-- semantic domain
+type T_Kinds = UID ->
+               IdDefOccGam ->
+               NmLev ->
+               EHCOpts ->
+               PatchEhNmInInstance ->
+               ([HsName]) ->
+               (TraceOn -> [PP_Doc] -> TrPP) ->
+               ( ([EH.KiExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Kinds_Cons :: T_Kind ->
+                  T_Kinds ->
+                  T_Kinds
+sem_Kinds_Cons hd_ tl_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.KiExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIconNm :: Name
+              _hdIeh :: (EH.KiExpr)
+              _hdIerrSq :: ErrSq
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.KiExpr])
+              _tlIerrSq :: ErrSq
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 448, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 173, column 21)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIconNm,_hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Kinds_Nil :: T_Kinds
+sem_Kinds_Nil =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.KiExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 450, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 173, column 21)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 117, column 30)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- LeftHandSide ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         nmLevFun             : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.PatExpr]
+         ehTyMk               : EH.Expr -> EH.Expr
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         refname              : HsName
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Function:
+         child range          : {Range}
+         child name           : {Name}
+         child patterns       : Patterns 
+         visit 0:
+            local refname     : _
+            local pp          : _
+      alternative Infix:
+         child range          : {Range}
+         child leftPattern    : Pattern 
+         child operator       : {Name}
+         child rightPattern   : Pattern 
+         visit 0:
+            local patchEhNmInInstance : _
+            local refname     : _
+            local pp          : _
+      alternative Parenthesized:
+         child range          : {Range}
+         child lefthandside   : LeftHandSide 
+         child patterns       : Patterns 
+         visit 0:
+            local pp          : _
+      alternative Typed:
+         child range          : {Range}
+         child lefthandside   : LeftHandSide 
+         child type           : Type 
+         visit 0:
+            local idDefOccGamType : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+-}
+-- cata
+sem_LeftHandSide :: LeftHandSide ->
+                    T_LeftHandSide
+sem_LeftHandSide (LeftHandSide_Function _range _name _patterns) =
+    (sem_LeftHandSide_Function _range _name (sem_Patterns _patterns))
+sem_LeftHandSide (LeftHandSide_Infix _range _leftPattern _operator _rightPattern) =
+    (sem_LeftHandSide_Infix _range (sem_Pattern _leftPattern) _operator (sem_Pattern _rightPattern))
+sem_LeftHandSide (LeftHandSide_Parenthesized _range _lefthandside _patterns) =
+    (sem_LeftHandSide_Parenthesized _range (sem_LeftHandSide _lefthandside) (sem_Patterns _patterns))
+sem_LeftHandSide (LeftHandSide_Typed _range _lefthandside _type) =
+    (sem_LeftHandSide_Typed _range (sem_LeftHandSide _lefthandside) (sem_Type _type))
+-- semantic domain
+type T_LeftHandSide = UID ->
+                      FixityGam ->
+                      UID ->
+                      (Map.Map HsName [(HsName,HsName)]) ->
+                      IdDefOccGam ->
+                      HsName ->
+                      NmLev ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      (Set.Set Pragma.Pragma) ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( ([EH.PatExpr]),(EH.Expr -> EH.Expr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),HsName,([HsName]),TrPP,IdUseOccGam)
+sem_LeftHandSide_Function :: Range ->
+                             Name ->
+                             T_Patterns ->
+                             T_LeftHandSide
+sem_LeftHandSide_Function range_ name_ patterns_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsInmLevFun
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _lhsOeh :: ([EH.PatExpr])
+              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOrefname :: HsName
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([EH.PatExpr])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1273, column 9)
+              _patternsOpatchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 47, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLevFun _lhsImoduleNm name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 317, column 9)
+              _pp =
+                  name_ >#< ppSpaces _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 736, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Var
+                          (_lhsIpatchEhNmInInstance _refname)
+                    : _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 756, column 9)
+              _lhsOehTyMk =
+                  id
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (from local)
+              _lhsOrefname =
+                  _refname
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_LeftHandSide_Infix :: Range ->
+                          T_Pattern ->
+                          Name ->
+                          T_Pattern ->
+                          T_LeftHandSide
+sem_LeftHandSide_Infix range_ leftPattern_ operator_ rightPattern_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsInmLevFun
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.PatExpr])
+              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOrefname :: HsName
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftPatternOfixityGam :: FixityGam
+              _leftPatternOgUniq :: UID
+              _leftPatternOidGam :: IdDefOccGam
+              _leftPatternOmoduleNm :: HsName
+              _leftPatternOnmLev :: NmLev
+              _leftPatternOopts :: EHCOpts
+              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftPatternOtopInstanceNmL :: ([HsName])
+              _leftPatternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightPatternOfixityGam :: FixityGam
+              _rightPatternOgUniq :: UID
+              _rightPatternOidGam :: IdDefOccGam
+              _rightPatternOmoduleNm :: HsName
+              _rightPatternOnmLev :: NmLev
+              _rightPatternOopts :: EHCOpts
+              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightPatternOtopInstanceNmL :: ([HsName])
+              _rightPatternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftPatternIeh :: (EH.PatExpr)
+              _leftPatternIerrSq :: ErrSq
+              _leftPatternIgUniq :: UID
+              _leftPatternIidDefOccGam :: IdDefOccGam
+              _leftPatternIidOccDefs :: ([IdOcc])
+              _leftPatternIidUseOccGam :: IdUseOccGam
+              _leftPatternIisVar :: Bool
+              _leftPatternImbTopRefname :: (Maybe HsName)
+              _leftPatternIpp :: PP_Doc
+              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
+              _leftPatternItopInstanceNmL :: ([HsName])
+              _leftPatternItrpp :: TrPP
+              _leftPatternIundefOccGam :: IdUseOccGam
+              _rightPatternIeh :: (EH.PatExpr)
+              _rightPatternIerrSq :: ErrSq
+              _rightPatternIgUniq :: UID
+              _rightPatternIidDefOccGam :: IdDefOccGam
+              _rightPatternIidOccDefs :: ([IdOcc])
+              _rightPatternIidUseOccGam :: IdUseOccGam
+              _rightPatternIisVar :: Bool
+              _rightPatternImbTopRefname :: (Maybe HsName)
+              _rightPatternIpp :: PP_Doc
+              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
+              _rightPatternItopInstanceNmL :: ([HsName])
+              _rightPatternItrpp :: TrPP
+              _rightPatternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1276, column 9)
+              _patchEhNmInInstance =
+                  id
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 49, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLevFun _lhsImoduleNm operator_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 319, column 9)
+              _pp =
+                  _leftPatternIpp >#< operator_ >#< _rightPatternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 740, column 9)
+              _lhsOeh =
+                  [ rngLift range_ EH.PatExpr_Var
+                            (_lhsIpatchEhNmInInstance _refname)
+                  , _leftPatternIeh
+                  , _rightPatternIeh
+                  ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 756, column 9)
+              _lhsOehTyMk =
+                  id
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftPatternIerrSq `Seq.union` _rightPatternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _leftPatternIidDefOccGam `gamAddGam` _rightPatternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftPatternIidUseOccGam `gamAddGam` _rightPatternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftPatternIppWrap . _rightPatternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftPatternItrpp >< _rightPatternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightPatternIgUniq
+              -- copy rule (from local)
+              _lhsOrefname =
+                  _refname
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightPatternItopInstanceNmL
+              -- copy rule (down)
+              _leftPatternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftPatternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftPatternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftPatternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _leftPatternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftPatternOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _leftPatternOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (down)
+              _leftPatternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftPatternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rightPatternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightPatternOgUniq =
+                  _leftPatternIgUniq
+              -- copy rule (down)
+              _rightPatternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightPatternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rightPatternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightPatternOopts =
+                  _lhsIopts
+              -- copy rule (from local)
+              _rightPatternOpatchEhNmInInstance =
+                  _patchEhNmInInstance
+              -- copy rule (chain)
+              _rightPatternOtopInstanceNmL =
+                  _leftPatternItopInstanceNmL
+              -- copy rule (down)
+              _rightPatternOtr =
+                  _lhsItr
+              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidDefOccGam,_leftPatternIidOccDefs,_leftPatternIidUseOccGam,_leftPatternIisVar,_leftPatternImbTopRefname,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternItrpp,_leftPatternIundefOccGam) =
+                  leftPattern_ _leftPatternOfixityGam _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL _leftPatternOtr
+              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidDefOccGam,_rightPatternIidOccDefs,_rightPatternIidUseOccGam,_rightPatternIisVar,_rightPatternImbTopRefname,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternItrpp,_rightPatternIundefOccGam) =
+                  rightPattern_ _rightPatternOfixityGam _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL _rightPatternOtr
+          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_LeftHandSide_Parenthesized :: Range ->
+                                  T_LeftHandSide ->
+                                  T_Patterns ->
+                                  T_LeftHandSide
+sem_LeftHandSide_Parenthesized range_ lefthandside_ patterns_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsInmLevFun
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.PatExpr])
+              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOrefname :: HsName
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lefthandsideOcaseId :: UID
+              _lefthandsideOfixityGam :: FixityGam
+              _lefthandsideOgUniq :: UID
+              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _lefthandsideOidGam :: IdDefOccGam
+              _lefthandsideOmoduleNm :: HsName
+              _lefthandsideOnmLev :: NmLev
+              _lefthandsideOnmLevFun :: NmLev
+              _lefthandsideOopts :: EHCOpts
+              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
+              _lefthandsideOtopInstanceNmL :: ([HsName])
+              _lefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _lefthandsideIeh :: ([EH.PatExpr])
+              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
+              _lefthandsideIerrSq :: ErrSq
+              _lefthandsideIgUniq :: UID
+              _lefthandsideIidDefOccGam :: IdDefOccGam
+              _lefthandsideIidOccDefs :: ([IdOcc])
+              _lefthandsideIidUseOccGam :: IdUseOccGam
+              _lefthandsideIpp :: PP_Doc
+              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _lefthandsideIrefname :: HsName
+              _lefthandsideItopInstanceNmL :: ([HsName])
+              _lefthandsideItrpp :: TrPP
+              _lefthandsideIundefOccGam :: IdUseOccGam
+              _patternsIeh :: ([EH.PatExpr])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 321, column 9)
+              _pp =
+                  ppParens _lefthandsideIpp >#< ppSpaces _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 746, column 9)
+              _lhsOeh =
+                  _lefthandsideIeh ++ _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 756, column 9)
+              _lhsOehTyMk =
+                  id
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _lefthandsideIerrSq `Seq.union` _patternsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _lefthandsideIidDefOccGam `gamAddGam` _patternsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _lefthandsideIidOccDefs ++ _patternsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _lefthandsideIidUseOccGam `gamAddGam` _patternsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _lefthandsideIppWrap . _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _lefthandsideItrpp >< _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _lefthandsideIundefOccGam `gamUnion` _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (up)
+              _lhsOrefname =
+                  _lefthandsideIrefname
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _lefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _lefthandsideOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _lefthandsideOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _lefthandsideOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _lefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _lefthandsideOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _lefthandsideOnmLevFun =
+                  _lhsInmLevFun
+              -- copy rule (down)
+              _lefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _lefthandsideOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _lefthandsideOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _lefthandsideOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _patternsOgUniq =
+                  _lefthandsideIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _patternsOtopInstanceNmL =
+                  _lefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideItrpp,_lefthandsideIundefOccGam) =
+                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL _lefthandsideOtr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_LeftHandSide_Typed :: Range ->
+                          T_LeftHandSide ->
+                          T_Type ->
+                          T_LeftHandSide
+sem_LeftHandSide_Typed range_ lefthandside_ type_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsInmLevFun
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _typeOidGam :: IdDefOccGam
+              _typeOnmLev :: NmLev
+              _lhsOeh :: ([EH.PatExpr])
+              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOrefname :: HsName
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lefthandsideOcaseId :: UID
+              _lefthandsideOfixityGam :: FixityGam
+              _lefthandsideOgUniq :: UID
+              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _lefthandsideOidGam :: IdDefOccGam
+              _lefthandsideOmoduleNm :: HsName
+              _lefthandsideOnmLev :: NmLev
+              _lefthandsideOnmLevFun :: NmLev
+              _lefthandsideOopts :: EHCOpts
+              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
+              _lefthandsideOtopInstanceNmL :: ([HsName])
+              _lefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOisAsPred :: Bool
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _lefthandsideIeh :: ([EH.PatExpr])
+              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
+              _lefthandsideIerrSq :: ErrSq
+              _lefthandsideIgUniq :: UID
+              _lefthandsideIidDefOccGam :: IdDefOccGam
+              _lefthandsideIidOccDefs :: ([IdOcc])
+              _lefthandsideIidUseOccGam :: IdUseOccGam
+              _lefthandsideIpp :: PP_Doc
+              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _lefthandsideIrefname :: HsName
+              _lefthandsideItopInstanceNmL :: ([HsName])
+              _lefthandsideItrpp :: TrPP
+              _lefthandsideIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 290, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 433, column 9)
+              _typeOidGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 60, column 9)
+              _typeOnmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 323, column 9)
+              _pp =
+                  _lefthandsideIpp >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 748, column 9)
+              _lhsOeh =
+                  _lefthandsideIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 754, column 9)
+              _lhsOehTyMk =
+                  rngLift range_ EH.Expr_TypeAs True _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 208, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 217, column 9)
+              _doGenVarWild =
+                  True
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _lefthandsideIerrSq `Seq.union` _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _lefthandsideIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _lefthandsideIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _lefthandsideIidUseOccGam `gamAddGam` _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _lefthandsideIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _lefthandsideItrpp >< _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _lefthandsideIundefOccGam `gamUnion` _typeIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOrefname =
+                  _lefthandsideIrefname
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _lefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _lefthandsideOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _lefthandsideOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _lefthandsideOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _lefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _lefthandsideOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _lefthandsideOnmLevFun =
+                  _lhsInmLevFun
+              -- copy rule (down)
+              _lefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _lefthandsideOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _lefthandsideOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _lefthandsideOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _lefthandsideIgUniq
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _lefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideItrpp,_lefthandsideIundefOccGam) =
+                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL _lefthandsideOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Literal -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : Literal 
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Int:
+         child range          : {Range}
+         child base           : {Int}
+         child value          : {String}
+         visit 0:
+            local pp          : _
+            local eh          : _
+      alternative Char:
+         child range          : {Range}
+         child value          : {String}
+         visit 0:
+            local pp          : _
+            local eh          : _
+      alternative String:
+         child range          : {Range}
+         child value          : {String}
+         visit 0:
+            local pp          : _
+            local eh          : _
+      alternative Float:
+         child range          : {Range}
+         child value          : {String}
+         visit 0:
+            local pp          : _
+            local eh          : _
+-}
+-- cata
+sem_Literal :: Literal ->
+               T_Literal
+sem_Literal (Literal_Int _range _base _value) =
+    (sem_Literal_Int _range _base _value)
+sem_Literal (Literal_Char _range _value) =
+    (sem_Literal_Char _range _value)
+sem_Literal (Literal_String _range _value) =
+    (sem_Literal_String _range _value)
+sem_Literal (Literal_Float _range _value) =
+    (sem_Literal_Float _range _value)
+-- semantic domain
+type T_Literal = UID ->
+                 IdDefOccGam ->
+                 NmLev ->
+                 EHCOpts ->
+                 PatchEhNmInInstance ->
+                 ([HsName]) ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( Literal,ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Literal_Int :: Range ->
+                   Int ->
+                   String ->
+                   T_Literal
+sem_Literal_Int range_ base_ value_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: Literal
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 384, column 9)
+              _pp =
+                  pp value_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- self rule
+              _eh =
+                  Literal_Int range_ base_ value_
+              -- self rule
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Literal_Char :: Range ->
+                    String ->
+                    T_Literal
+sem_Literal_Char range_ value_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: Literal
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 386, column 9)
+              _pp =
+                  pp ("'" ++ value_ ++ "'")
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- self rule
+              _eh =
+                  Literal_Char range_ value_
+              -- self rule
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Literal_String :: Range ->
+                      String ->
+                      T_Literal
+sem_Literal_String range_ value_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: Literal
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 388, column 9)
+              _pp =
+                  pp (show value_)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- self rule
+              _eh =
+                  Literal_String range_ value_
+              -- self rule
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Literal_Float :: Range ->
+                     String ->
+                     T_Literal
+sem_Literal_Float range_ value_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: Literal
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 390, column 9)
+              _pp =
+                  pp value_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- self rule
+              _eh =
+                  Literal_Float range_ value_
+              -- self rule
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- MaybeDeclarations -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nameDeclCxt          : NameDeclCxt
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : Maybe [EH.Decl]
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         gathPragmas          : Set.Set Pragma.Pragma
+         idDefOccGam          : IdDefOccGam
+         idDpdMp              : IdDpdMp
+         idInClassTySigDefOccGam : IdDefOccGam
+         idInInstanceValDefOccGam : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         needsError           : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Just:
+         child just           : Declarations 
+         visit 0:
+            local pp          : _
+      alternative Nothing:
+-}
+-- cata
+sem_MaybeDeclarations :: MaybeDeclarations ->
+                         T_MaybeDeclarations
+sem_MaybeDeclarations (Prelude.Just x) =
+    (sem_MaybeDeclarations_Just (sem_Declarations x))
+sem_MaybeDeclarations Prelude.Nothing =
+    sem_MaybeDeclarations_Nothing
+-- semantic domain
+type T_MaybeDeclarations = UID ->
+                           FixityGam ->
+                           UID ->
+                           (Map.Map HsName [(HsName,HsName)]) ->
+                           IdDefOccGam ->
+                           HsName ->
+                           NameDeclCxt ->
+                           NmLev ->
+                           EHCOpts ->
+                           PatchEhNmInInstance ->
+                           (Set.Set Pragma.Pragma) ->
+                           ([HsName]) ->
+                           (TraceOn -> [PP_Doc] -> TrPP) ->
+                           ( (Maybe [EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,IdDefOccGam,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_MaybeDeclarations_Just :: T_Declarations ->
+                              T_MaybeDeclarations
+sem_MaybeDeclarations_Just just_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (Maybe [EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _justOcaseId :: UID
+              _justOfixityGam :: FixityGam
+              _justOgUniq :: UID
+              _justOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _justOidGam :: IdDefOccGam
+              _justOmoduleNm :: HsName
+              _justOnameDeclCxt :: NameDeclCxt
+              _justOnmLev :: NmLev
+              _justOopts :: EHCOpts
+              _justOpatchEhNmInInstance :: PatchEhNmInInstance
+              _justOpragmas :: (Set.Set Pragma.Pragma)
+              _justOtopInstanceNmL :: ([HsName])
+              _justOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _justIeh :: ([EH.Decl])
+              _justIerrSq :: ErrSq
+              _justIgUniq :: UID
+              _justIgathFixityGam :: FixityGam
+              _justIgathPragmas :: (Set.Set Pragma.Pragma)
+              _justIidDefOccGam :: IdDefOccGam
+              _justIidDpdMp :: IdDpdMp
+              _justIidInClassTySigDefOccGam :: IdDefOccGam
+              _justIidInInstanceValDefOccGam :: IdDefOccGam
+              _justIidOccDefs :: ([IdOcc])
+              _justIidUseOccGam :: IdUseOccGam
+              _justIneedsError :: Bool
+              _justIpp :: PP_Doc
+              _justIppWrap :: (PP_Doc -> PP_Doc)
+              _justItopInstanceNmL :: ([HsName])
+              _justItrpp :: TrPP
+              _justIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 25, column 9)
+              _pp =
+                  "where" >#< _justIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 72, column 9)
+              _lhsOeh =
+                  Just _justIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _justIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _justIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _justIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _justIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  _justIidDpdMp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  _justIidInClassTySigDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  _justIidInInstanceValDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _justIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _justIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  _justIneedsError
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _justIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _justItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _justIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _justIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _justItopInstanceNmL
+              -- copy rule (down)
+              _justOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _justOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _justOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _justOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _justOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _justOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _justOnameDeclCxt =
+                  _lhsInameDeclCxt
+              -- copy rule (down)
+              _justOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _justOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _justOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _justOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _justOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _justOtr =
+                  _lhsItr
+              ( _justIeh,_justIerrSq,_justIgUniq,_justIgathFixityGam,_justIgathPragmas,_justIidDefOccGam,_justIidDpdMp,_justIidInClassTySigDefOccGam,_justIidInInstanceValDefOccGam,_justIidOccDefs,_justIidUseOccGam,_justIneedsError,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItrpp,_justIundefOccGam) =
+                  just_ _justOcaseId _justOfixityGam _justOgUniq _justOgenerDerivMp _justOidGam _justOmoduleNm _justOnameDeclCxt _justOnmLev _justOopts _justOpatchEhNmInInstance _justOpragmas _justOtopInstanceNmL _justOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_MaybeDeclarations_Nothing :: T_MaybeDeclarations
+sem_MaybeDeclarations_Nothing =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInameDeclCxt
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (Maybe [EH.Decl])
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidDpdMp :: IdDpdMp
+              _lhsOidInClassTySigDefOccGam :: IdDefOccGam
+              _lhsOidInInstanceValDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOneedsError :: Bool
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 64, column 33)
+              _lhsOeh =
+                  Nothing
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 841, column 19)
+              _lhsOidDpdMp =
+                  Map.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 338, column 35)
+              _lhsOidInClassTySigDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 339, column 36)
+              _lhsOidInInstanceValDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 799, column 38)
+              _lhsOneedsError =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidInClassTySigDefOccGam,_lhsOidInInstanceValDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- MaybeExports ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Just:
+         child just           : Exports 
+      alternative Nothing:
+-}
+-- cata
+sem_MaybeExports :: MaybeExports ->
+                    T_MaybeExports
+sem_MaybeExports (Prelude.Just x) =
+    (sem_MaybeExports_Just (sem_Exports x))
+sem_MaybeExports Prelude.Nothing =
+    sem_MaybeExports_Nothing
+-- semantic domain
+type T_MaybeExports = FixityGam ->
+                      UID ->
+                      IdDefOccGam ->
+                      Bool ->
+                      Bool ->
+                      HsName ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_MaybeExports_Just :: T_Exports ->
+                         T_MaybeExports
+sem_MaybeExports_Just just_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _justOfixityGam :: FixityGam
+              _justOgUniq :: UID
+              _justOidGam :: IdDefOccGam
+              _justOisMainMod :: Bool
+              _justOisTopMod :: Bool
+              _justOmoduleNm :: HsName
+              _justOnmLev :: NmLev
+              _justOopts :: EHCOpts
+              _justOpatchEhNmInInstance :: PatchEhNmInInstance
+              _justOtopInstanceNmL :: ([HsName])
+              _justOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _justIerrSq :: ErrSq
+              _justIgUniq :: UID
+              _justIgathFixityGam :: FixityGam
+              _justIidUseOccGam :: IdUseOccGam
+              _justIpp :: PP_Doc
+              _justIppWrap :: (PP_Doc -> PP_Doc)
+              _justItopInstanceNmL :: ([HsName])
+              _justItrpp :: TrPP
+              _justIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _justIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _justIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _justIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _justIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _justIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _justItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _justIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _justIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _justItopInstanceNmL
+              -- copy rule (down)
+              _justOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _justOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _justOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _justOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _justOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _justOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _justOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _justOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _justOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _justOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _justOtr =
+                  _lhsItr
+              ( _justIerrSq,_justIgUniq,_justIgathFixityGam,_justIidUseOccGam,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItrpp,_justIundefOccGam) =
+                  just_ _justOfixityGam _justOgUniq _justOidGam _justOisMainMod _justOisTopMod _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL _justOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_MaybeExports_Nothing :: T_MaybeExports
+sem_MaybeExports_Nothing =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- MaybeExpression ---------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : Maybe EH.Expr
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppMb                 : Maybe PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Just:
+         child just           : Expression 
+      alternative Nothing:
+-}
+-- cata
+sem_MaybeExpression :: MaybeExpression ->
+                       T_MaybeExpression
+sem_MaybeExpression (Prelude.Just x) =
+    (sem_MaybeExpression_Just (sem_Expression x))
+sem_MaybeExpression Prelude.Nothing =
+    sem_MaybeExpression_Nothing
+-- semantic domain
+type T_MaybeExpression = UID ->
+                         FixityGam ->
+                         UID ->
+                         (Map.Map HsName [(HsName,HsName)]) ->
+                         IdDefOccGam ->
+                         HsName ->
+                         NmLev ->
+                         EHCOpts ->
+                         PatchEhNmInInstance ->
+                         (Set.Set Pragma.Pragma) ->
+                         ([HsName]) ->
+                         (TraceOn -> [PP_Doc] -> TrPP) ->
+                         ( (Maybe EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(Maybe PP_Doc),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_MaybeExpression_Just :: T_Expression ->
+                            T_MaybeExpression
+sem_MaybeExpression_Just just_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppMb :: (Maybe PP_Doc)
+              _lhsOeh :: (Maybe EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _justOcaseId :: UID
+              _justOfixityGam :: FixityGam
+              _justOgUniq :: UID
+              _justOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _justOidGam :: IdDefOccGam
+              _justOmoduleNm :: HsName
+              _justOnmLev :: NmLev
+              _justOopts :: EHCOpts
+              _justOpatchEhNmInInstance :: PatchEhNmInInstance
+              _justOpragmas :: (Set.Set Pragma.Pragma)
+              _justOtopInstanceNmL :: ([HsName])
+              _justOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _justIconNm :: Name
+              _justIeh :: (EH.Expr)
+              _justIerrSq :: ErrSq
+              _justIgUniq :: UID
+              _justIidUseOccGam :: IdUseOccGam
+              _justIopChain :: (OpChain EH.Expr)
+              _justIoperatorName :: MaybeName
+              _justIpp :: PP_Doc
+              _justIppWrap :: (PP_Doc -> PP_Doc)
+              _justItopInstanceNmL :: ([HsName])
+              _justItrpp :: TrPP
+              _justIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 400, column 9)
+              _lhsOppMb =
+                  Just _justIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 463, column 9)
+              _lhsOeh =
+                  Just _justIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _justIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _justIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _justIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _justIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _justItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _justIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _justIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _justItopInstanceNmL
+              -- copy rule (down)
+              _justOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _justOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _justOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _justOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _justOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _justOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _justOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _justOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _justOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _justOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _justOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _justOtr =
+                  _lhsItr
+              ( _justIconNm,_justIeh,_justIerrSq,_justIgUniq,_justIidUseOccGam,_justIopChain,_justIoperatorName,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItrpp,_justIundefOccGam) =
+                  just_ _justOcaseId _justOfixityGam _justOgUniq _justOgenerDerivMp _justOidGam _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOpragmas _justOtopInstanceNmL _justOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_MaybeExpression_Nothing :: T_MaybeExpression
+sem_MaybeExpression_Nothing =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppMb :: (Maybe PP_Doc)
+              _lhsOeh :: (Maybe EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 402, column 9)
+              _lhsOppMb =
+                  Nothing
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 457, column 31)
+              _lhsOeh =
+                  Nothing
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- MaybeImportSpecification ------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Just:
+         child just           : ImportSpecification 
+      alternative Nothing:
+-}
+-- cata
+sem_MaybeImportSpecification :: MaybeImportSpecification ->
+                                T_MaybeImportSpecification
+sem_MaybeImportSpecification (Prelude.Just x) =
+    (sem_MaybeImportSpecification_Just (sem_ImportSpecification x))
+sem_MaybeImportSpecification Prelude.Nothing =
+    sem_MaybeImportSpecification_Nothing
+-- semantic domain
+type T_MaybeImportSpecification = FixityGam ->
+                                  UID ->
+                                  IdDefOccGam ->
+                                  Bool ->
+                                  Bool ->
+                                  HsName ->
+                                  NmLev ->
+                                  EHCOpts ->
+                                  PatchEhNmInInstance ->
+                                  ([HsName]) ->
+                                  (TraceOn -> [PP_Doc] -> TrPP) ->
+                                  ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_MaybeImportSpecification_Just :: T_ImportSpecification ->
+                                     T_MaybeImportSpecification
+sem_MaybeImportSpecification_Just just_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _justOfixityGam :: FixityGam
+              _justOgUniq :: UID
+              _justOidGam :: IdDefOccGam
+              _justOisMainMod :: Bool
+              _justOisTopMod :: Bool
+              _justOmoduleNm :: HsName
+              _justOnmLev :: NmLev
+              _justOopts :: EHCOpts
+              _justOpatchEhNmInInstance :: PatchEhNmInInstance
+              _justOtopInstanceNmL :: ([HsName])
+              _justOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _justIerrSq :: ErrSq
+              _justIgUniq :: UID
+              _justIgathFixityGam :: FixityGam
+              _justIidUseOccGam :: IdUseOccGam
+              _justIpp :: PP_Doc
+              _justIppWrap :: (PP_Doc -> PP_Doc)
+              _justItopInstanceNmL :: ([HsName])
+              _justItrpp :: TrPP
+              _justIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _justIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _justIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _justIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _justIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _justIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _justItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _justIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _justIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _justItopInstanceNmL
+              -- copy rule (down)
+              _justOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _justOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _justOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _justOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _justOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _justOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _justOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _justOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _justOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _justOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _justOtr =
+                  _lhsItr
+              ( _justIerrSq,_justIgUniq,_justIgathFixityGam,_justIidUseOccGam,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItrpp,_justIundefOccGam) =
+                  just_ _justOfixityGam _justOgUniq _justOidGam _justOisMainMod _justOisTopMod _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL _justOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_MaybeImportSpecification_Nothing :: T_MaybeImportSpecification
+sem_MaybeImportSpecification_Nothing =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- MaybeType ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         doGenVarWild         : Bool
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : Maybe EH.TyExpr
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppMb                 : Maybe PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Just:
+         child just           : Type 
+         visit 0:
+            local isAsPred    : _
+      alternative Nothing:
+         visit 0:
+            local isAsPred    : _
+-}
+-- cata
+sem_MaybeType :: MaybeType ->
+                 T_MaybeType
+sem_MaybeType (Prelude.Just x) =
+    (sem_MaybeType_Just (sem_Type x))
+sem_MaybeType Prelude.Nothing =
+    sem_MaybeType_Nothing
+-- semantic domain
+type T_MaybeType = Bool ->
+                   FixityGam ->
+                   UID ->
+                   IdDefOccGam ->
+                   NmLev ->
+                   EHCOpts ->
+                   PatchEhNmInInstance ->
+                   ([HsName]) ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                   ( (Maybe EH.TyExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(Maybe PP_Doc),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_MaybeType_Just :: T_Type ->
+                      T_MaybeType
+sem_MaybeType_Just just_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppMb :: (Maybe PP_Doc)
+              _lhsOeh :: (Maybe EH.TyExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _justOdoGenVarWild :: Bool
+              _justOfixityGam :: FixityGam
+              _justOgUniq :: UID
+              _justOidGam :: IdDefOccGam
+              _justOisAsPred :: Bool
+              _justOnmLev :: NmLev
+              _justOopts :: EHCOpts
+              _justOpatchEhNmInInstance :: PatchEhNmInInstance
+              _justOtopInstanceNmL :: ([HsName])
+              _justOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _justIconNm :: Name
+              _justIeh :: (EH.TyExpr)
+              _justIehMbAsPr :: (Maybe EH.PrExpr)
+              _justIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _justIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _justIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _justIerrSq :: ErrSq
+              _justIfreeTvarS :: HsNameS
+              _justIgUniq :: UID
+              _justIidUseOccGam :: IdUseOccGam
+              _justImbRefConNm :: (Maybe Name)
+              _justIopChain :: (OpChain EH.TyExpr)
+              _justIoperatorName :: MaybeName
+              _justIpp :: PP_Doc
+              _justIppWrap :: (PP_Doc -> PP_Doc)
+              _justItopInstanceNmL :: ([HsName])
+              _justItrpp :: TrPP
+              _justItyConIs :: TypeConFixedMeaning
+              _justIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 406, column 9)
+              _lhsOppMb =
+                  Just _justIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 206, column 9)
+              _lhsOeh =
+                  Just _justIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _justIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _justIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _justIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _justIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _justIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _justItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _justIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _justIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _justItopInstanceNmL
+              -- copy rule (down)
+              _justOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _justOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _justOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _justOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _justOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _justOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _justOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _justOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _justOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _justOtr =
+                  _lhsItr
+              ( _justIconNm,_justIeh,_justIehMbAsPr,_justIehMbAsPrL,_justIehMbAsTyPr,_justIehMbAsTyPrL,_justIerrSq,_justIfreeTvarS,_justIgUniq,_justIidUseOccGam,_justImbRefConNm,_justIopChain,_justIoperatorName,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItrpp,_justItyConIs,_justIundefOccGam) =
+                  just_ _justOdoGenVarWild _justOfixityGam _justOgUniq _justOidGam _justOisAsPred _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL _justOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_MaybeType_Nothing :: T_MaybeType
+sem_MaybeType_Nothing =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppMb :: (Maybe PP_Doc)
+              _lhsOeh :: (Maybe EH.TyExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 408, column 9)
+              _lhsOppMb =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 202, column 25)
+              _lhsOeh =
+                  Nothing
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Module ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isMainMod            : Bool
+         isTopMod             : Bool
+         modEntToOrig         : ModEntRngMp
+         modInScope           : ModEntDomMp
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.Expr
+         errSq                : ErrSq
+         fileHeaderPragmas    : Set.Set Pragma.Pragma
+         gathFixityGam        : FixityGam
+         gathIdGam            : IdDefOccGam
+         idUseOccGam          : IdUseOccGam
+         mainValExists        : Bool
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Module:
+         child range          : {Range}
+         child name           : {MaybeName}
+         child fileheaderpragmas : Pragmas 
+         child exports        : MaybeExports 
+         child body           : Body 
+         visit 0:
+            local fileHeaderPragmas : _
+            local opts        : _
+            local errUndef    : _
+            local errModName  : _
+-}
+-- cata
+sem_Module :: Module ->
+              T_Module
+sem_Module (Module_Module _range _name _fileheaderpragmas _exports _body) =
+    (sem_Module_Module _range _name (sem_Pragmas _fileheaderpragmas) (sem_MaybeExports _exports) (sem_Body _body))
+-- semantic domain
+type T_Module = FixityGam ->
+                UID ->
+                IdDefOccGam ->
+                Bool ->
+                Bool ->
+                ModEntRngMp ->
+                ModEntDomMp ->
+                HsName ->
+                NmLev ->
+                EHCOpts ->
+                PatchEhNmInInstance ->
+                ([HsName]) ->
+                (TraceOn -> [PP_Doc] -> TrPP) ->
+                ( (EH.Expr),ErrSq,(Set.Set Pragma.Pragma),UID,FixityGam,IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Module_Module :: Range ->
+                     MaybeName ->
+                     T_Pragmas ->
+                     T_MaybeExports ->
+                     T_Body ->
+                     T_Module
+sem_Module_Module range_ name_ fileheaderpragmas_ exports_ body_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisMainMod
+       _lhsIisTopMod
+       _lhsImodEntToOrig
+       _lhsImodInScope
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _bodyOpragmas :: (Set.Set Pragma.Pragma)
+              _lhsOfileHeaderPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr)
+              _lhsOgUniq :: UID
+              _lhsOgathIdGam :: IdDefOccGam
+              _lhsOmainValExists :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _fileheaderpragmasOgUniq :: UID
+              _fileheaderpragmasOidGam :: IdDefOccGam
+              _fileheaderpragmasOnmLev :: NmLev
+              _fileheaderpragmasOopts :: EHCOpts
+              _fileheaderpragmasOpatchEhNmInInstance :: PatchEhNmInInstance
+              _fileheaderpragmasOtopInstanceNmL :: ([HsName])
+              _fileheaderpragmasOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _exportsOfixityGam :: FixityGam
+              _exportsOgUniq :: UID
+              _exportsOidGam :: IdDefOccGam
+              _exportsOisMainMod :: Bool
+              _exportsOisTopMod :: Bool
+              _exportsOmoduleNm :: HsName
+              _exportsOnmLev :: NmLev
+              _exportsOopts :: EHCOpts
+              _exportsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _exportsOtopInstanceNmL :: ([HsName])
+              _exportsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _bodyOfixityGam :: FixityGam
+              _bodyOgUniq :: UID
+              _bodyOidGam :: IdDefOccGam
+              _bodyOisMainMod :: Bool
+              _bodyOisTopMod :: Bool
+              _bodyOmodEntToOrig :: ModEntRngMp
+              _bodyOmodInScope :: ModEntDomMp
+              _bodyOmoduleNm :: HsName
+              _bodyOnmLev :: NmLev
+              _bodyOopts :: EHCOpts
+              _bodyOpatchEhNmInInstance :: PatchEhNmInInstance
+              _bodyOtopInstanceNmL :: ([HsName])
+              _bodyOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _fileheaderpragmasIerrSq :: ErrSq
+              _fileheaderpragmasIgUniq :: UID
+              _fileheaderpragmasIgathPragmas :: (Set.Set Pragma.Pragma)
+              _fileheaderpragmasIidUseOccGam :: IdUseOccGam
+              _fileheaderpragmasIpp :: PP_Doc
+              _fileheaderpragmasIppWrap :: (PP_Doc -> PP_Doc)
+              _fileheaderpragmasItopInstanceNmL :: ([HsName])
+              _fileheaderpragmasItrpp :: TrPP
+              _fileheaderpragmasIundefOccGam :: IdUseOccGam
+              _exportsIerrSq :: ErrSq
+              _exportsIgUniq :: UID
+              _exportsIgathFixityGam :: FixityGam
+              _exportsIidUseOccGam :: IdUseOccGam
+              _exportsIpp :: PP_Doc
+              _exportsIppWrap :: (PP_Doc -> PP_Doc)
+              _exportsItopInstanceNmL :: ([HsName])
+              _exportsItrpp :: TrPP
+              _exportsIundefOccGam :: IdUseOccGam
+              _bodyIeh :: (EH.Expr)
+              _bodyIerrSq :: ErrSq
+              _bodyIextraModImpL :: ([ModImp])
+              _bodyIgUniq :: UID
+              _bodyIgathFixityGam :: FixityGam
+              _bodyIgathIdGam :: IdDefOccGam
+              _bodyIidUseOccGam :: IdUseOccGam
+              _bodyImainValExists :: Bool
+              _bodyIpp :: PP_Doc
+              _bodyIppWrap :: (PP_Doc -> PP_Doc)
+              _bodyItopInstanceNmL :: ([HsName])
+              _bodyItrpp :: TrPP
+              _bodyIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 23, column 9)
+              _fileHeaderPragmas =
+                  _fileheaderpragmasIgathPragmas
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 23, column 9)
+              _opts =
+                  fst $ ehcOptUpdateWithPragmas _fileHeaderPragmas _lhsIopts
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 3, column 9)
+              _errUndef =
+                  let ns = [ (ioccNm o >#< ppParens (ioccKind o),Just (map (\o -> (uoccRange o,Nothing)) os))
+                           | (o,os) <- gamToAssocDupL _bodyIundefOccGam, not $ hsnIsProd $ ioccNm $ o
+                           ]
+                  in  (if null ns then [] else [rngLift range_ mkErr_NamesNotIntrod' "" ns])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 16, column 9)
+              _errModName =
+                  case name_ of
+                    Just n | n /= _lhsImoduleNm && not _lhsIisTopMod
+                      -> [rngLift range_ Err_ModNameMismatch _lhsImoduleNm n]
+                    _ -> []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 5, column 9)
+              _lhsOerrSq =
+                  Seq.firstNotEmpty [Seq.fromList _errUndef,Seq.fromList _errModName,_bodyIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 316, column 9)
+              _bodyOpragmas =
+                  _fileHeaderPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
+              _lhsOfileHeaderPragmas =
+                  _fileHeaderPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _exportsIgathFixityGam `gamAddGam` _bodyIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _fileheaderpragmasIidUseOccGam `gamAddGam` _exportsIidUseOccGam `gamAddGam` _bodyIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _fileheaderpragmasIpp >-< _exportsIpp >-< _bodyIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _fileheaderpragmasIppWrap . _exportsIppWrap . _bodyIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _fileheaderpragmasItrpp >< _exportsItrpp >< _bodyItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _fileheaderpragmasIundefOccGam `gamUnion` _exportsIundefOccGam `gamUnion` _bodyIundefOccGam
+              -- copy rule (up)
+              _lhsOeh =
+                  _bodyIeh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _bodyIgUniq
+              -- copy rule (up)
+              _lhsOgathIdGam =
+                  _bodyIgathIdGam
+              -- copy rule (up)
+              _lhsOmainValExists =
+                  _bodyImainValExists
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _bodyItopInstanceNmL
+              -- copy rule (down)
+              _fileheaderpragmasOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _fileheaderpragmasOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _fileheaderpragmasOnmLev =
+                  _lhsInmLev
+              -- copy rule (from local)
+              _fileheaderpragmasOopts =
+                  _opts
+              -- copy rule (down)
+              _fileheaderpragmasOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _fileheaderpragmasOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _fileheaderpragmasOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _exportsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _exportsOgUniq =
+                  _fileheaderpragmasIgUniq
+              -- copy rule (down)
+              _exportsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _exportsOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _exportsOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _exportsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _exportsOnmLev =
+                  _lhsInmLev
+              -- copy rule (from local)
+              _exportsOopts =
+                  _opts
+              -- copy rule (down)
+              _exportsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _exportsOtopInstanceNmL =
+                  _fileheaderpragmasItopInstanceNmL
+              -- copy rule (down)
+              _exportsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _bodyOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _bodyOgUniq =
+                  _exportsIgUniq
+              -- copy rule (down)
+              _bodyOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _bodyOisMainMod =
+                  _lhsIisMainMod
+              -- copy rule (down)
+              _bodyOisTopMod =
+                  _lhsIisTopMod
+              -- copy rule (down)
+              _bodyOmodEntToOrig =
+                  _lhsImodEntToOrig
+              -- copy rule (down)
+              _bodyOmodInScope =
+                  _lhsImodInScope
+              -- copy rule (down)
+              _bodyOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _bodyOnmLev =
+                  _lhsInmLev
+              -- copy rule (from local)
+              _bodyOopts =
+                  _opts
+              -- copy rule (down)
+              _bodyOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _bodyOtopInstanceNmL =
+                  _exportsItopInstanceNmL
+              -- copy rule (down)
+              _bodyOtr =
+                  _lhsItr
+              ( _fileheaderpragmasIerrSq,_fileheaderpragmasIgUniq,_fileheaderpragmasIgathPragmas,_fileheaderpragmasIidUseOccGam,_fileheaderpragmasIpp,_fileheaderpragmasIppWrap,_fileheaderpragmasItopInstanceNmL,_fileheaderpragmasItrpp,_fileheaderpragmasIundefOccGam) =
+                  fileheaderpragmas_ _fileheaderpragmasOgUniq _fileheaderpragmasOidGam _fileheaderpragmasOnmLev _fileheaderpragmasOopts _fileheaderpragmasOpatchEhNmInInstance _fileheaderpragmasOtopInstanceNmL _fileheaderpragmasOtr
+              ( _exportsIerrSq,_exportsIgUniq,_exportsIgathFixityGam,_exportsIidUseOccGam,_exportsIpp,_exportsIppWrap,_exportsItopInstanceNmL,_exportsItrpp,_exportsIundefOccGam) =
+                  exports_ _exportsOfixityGam _exportsOgUniq _exportsOidGam _exportsOisMainMod _exportsOisTopMod _exportsOmoduleNm _exportsOnmLev _exportsOopts _exportsOpatchEhNmInInstance _exportsOtopInstanceNmL _exportsOtr
+              ( _bodyIeh,_bodyIerrSq,_bodyIextraModImpL,_bodyIgUniq,_bodyIgathFixityGam,_bodyIgathIdGam,_bodyIidUseOccGam,_bodyImainValExists,_bodyIpp,_bodyIppWrap,_bodyItopInstanceNmL,_bodyItrpp,_bodyIundefOccGam) =
+                  body_ _bodyOfixityGam _bodyOgUniq _bodyOidGam _bodyOisMainMod _bodyOisTopMod _bodyOmodEntToOrig _bodyOmodInScope _bodyOmoduleNm _bodyOnmLev _bodyOopts _bodyOpatchEhNmInInstance _bodyOpragmas _bodyOtopInstanceNmL _bodyOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOidUseOccGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Pattern -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.PatExpr
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         isVar                : Bool
+         mbTopRefname         : Maybe HsName
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Literal:
+         child range          : {Range}
+         child sign           : {Int}
+         child literal        : Literal 
+         visit 0:
+            local eqrefname   : _
+            local idUseOccGamEq : _
+            local errIdUseEq  : _
+            local litnames    : _
+            local litrefname  : _
+            local litrefnames : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local eqclassrefname : _
+            local idUseOccGamCls : _
+            local errIdUseCls : _
+            local errSq       : _
+            local isAsPred    : _
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idDefOccGam : _
+            local refname     : _
+            local isWildcard  : _
+            local idOccDef    : _
+            local idOccDefsNoWildcard : _
+            local idOccDefs   : _
+            local pp          : _
+            local isAsPred    : _
+      alternative Constructor:
+         child range          : {Range}
+         child name           : {Name}
+         child patterns       : Patterns 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local conNm       : _
+            local errSq       : _
+            local pp          : _
+            local isAsPred    : _
+      alternative Parenthesized:
+         child range          : {Range}
+         child pattern        : Pattern 
+         visit 0:
+            local pp          : _
+            local isAsPred    : _
+      alternative As:
+         child range          : {Range}
+         child name           : {Name}
+         child pattern        : Pattern 
+         visit 0:
+            local idDefOccGam : _
+            local refname     : _
+            local isWildcard  : _
+            local idOccDef    : _
+            local idOccDefsNoWildcard : _
+            local idOccDefs   : _
+            local pp          : _
+            local isAsPred    : _
+      alternative Wildcard:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local isAsPred    : _
+      alternative Tuple:
+         child range          : {Range}
+         child arity          : {Int}
+         child patterns       : Patterns 
+         visit 0:
+            local errArity    : _
+            local errSq       : _
+            local pp          : _
+            local isAsPred    : _
+      alternative Annotate:
+         child range          : {Range}
+         child annotation     : PatternAnnotation 
+         child pattern        : Pattern 
+         visit 0:
+            local eh          : _
+            local isAsPred    : _
+      alternative Typed:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child type           : Type 
+         visit 0:
+            local idDefOccGamType : _
+            local pp          : _
+            local isAsPred    : _
+            local doGenVarWild : _
+      alternative InfixConstructor:
+         child range          : {Range}
+         child leftPattern    : Pattern 
+         child constructorOperator : {Name}
+         child rightPattern   : Pattern 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local conNm       : _
+            local errSq       : _
+            local pp          : _
+            local isAsPred    : _
+      alternative List:
+         child range          : {Range}
+         child patterns       : Patterns 
+         visit 0:
+            local refnames    : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local isAsPred    : _
+      alternative Record:
+         child range          : {Range}
+         child name           : {Name}
+         child recordPatternBindings : RecordPatternBindings 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local conNm       : _
+            local errSq       : _
+            local pp          : _
+            local isAsPred    : _
+      alternative RowRecordBinding:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child rowRecordPattternBindings : RowRecordPatternBindings 
+         visit 0:
+            local pp          : _
+            local isAsPred    : _
+      alternative RowRecordEmpty:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local isAsPred    : _
+      alternative Irrefutable:
+         child range          : {Range}
+         child pattern        : Pattern 
+         visit 0:
+            local pp          : _
+            local isAsPred    : _
+      alternative Bang:
+         child range          : {Range}
+         child pattern        : Pattern 
+         visit 0:
+            local pp          : _
+            local isAsPred    : _
+-}
+-- cata
+sem_Pattern :: Pattern ->
+               T_Pattern
+sem_Pattern (Pattern_Literal _range _sign _literal) =
+    (sem_Pattern_Literal _range _sign (sem_Literal _literal))
+sem_Pattern (Pattern_Variable _range _name) =
+    (sem_Pattern_Variable _range _name)
+sem_Pattern (Pattern_Constructor _range _name _patterns) =
+    (sem_Pattern_Constructor _range _name (sem_Patterns _patterns))
+sem_Pattern (Pattern_Parenthesized _range _pattern) =
+    (sem_Pattern_Parenthesized _range (sem_Pattern _pattern))
+sem_Pattern (Pattern_As _range _name _pattern) =
+    (sem_Pattern_As _range _name (sem_Pattern _pattern))
+sem_Pattern (Pattern_Wildcard _range) =
+    (sem_Pattern_Wildcard _range)
+sem_Pattern (Pattern_Tuple _range _arity _patterns) =
+    (sem_Pattern_Tuple _range _arity (sem_Patterns _patterns))
+sem_Pattern (Pattern_Annotate _range _annotation _pattern) =
+    (sem_Pattern_Annotate _range (sem_PatternAnnotation _annotation) (sem_Pattern _pattern))
+sem_Pattern (Pattern_Typed _range _pattern _type) =
+    (sem_Pattern_Typed _range (sem_Pattern _pattern) (sem_Type _type))
+sem_Pattern (Pattern_InfixConstructor _range _leftPattern _constructorOperator _rightPattern) =
+    (sem_Pattern_InfixConstructor _range (sem_Pattern _leftPattern) _constructorOperator (sem_Pattern _rightPattern))
+sem_Pattern (Pattern_List _range _patterns) =
+    (sem_Pattern_List _range (sem_Patterns _patterns))
+sem_Pattern (Pattern_Record _range _name _recordPatternBindings) =
+    (sem_Pattern_Record _range _name (sem_RecordPatternBindings _recordPatternBindings))
+sem_Pattern (Pattern_RowRecordBinding _range _pattern _rowRecordPattternBindings) =
+    (sem_Pattern_RowRecordBinding _range (sem_Pattern _pattern) (sem_RowRecordPatternBindings _rowRecordPattternBindings))
+sem_Pattern (Pattern_RowRecordEmpty _range) =
+    (sem_Pattern_RowRecordEmpty _range)
+sem_Pattern (Pattern_Irrefutable _range _pattern) =
+    (sem_Pattern_Irrefutable _range (sem_Pattern _pattern))
+sem_Pattern (Pattern_Bang _range _pattern) =
+    (sem_Pattern_Bang _range (sem_Pattern _pattern))
+-- semantic domain
+type T_Pattern = FixityGam ->
+                 UID ->
+                 IdDefOccGam ->
+                 HsName ->
+                 NmLev ->
+                 EHCOpts ->
+                 PatchEhNmInInstance ->
+                 ([HsName]) ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( (EH.PatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,(Maybe HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Pattern_Literal :: Range ->
+                       Int ->
+                       T_Literal ->
+                       T_Pattern
+sem_Pattern_Literal range_ sign_ literal_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _literalOgUniq :: UID
+              _literalOidGam :: IdDefOccGam
+              _literalOnmLev :: NmLev
+              _literalOopts :: EHCOpts
+              _literalOpatchEhNmInInstance :: PatchEhNmInInstance
+              _literalOtopInstanceNmL :: ([HsName])
+              _literalOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _literalIeh :: Literal
+              _literalIerrSq :: ErrSq
+              _literalIgUniq :: UID
+              _literalIidUseOccGam :: IdUseOccGam
+              _literalIpp :: PP_Doc
+              _literalIppWrap :: (PP_Doc -> PP_Doc)
+              _literalItopInstanceNmL :: ([HsName])
+              _literalItrpp :: TrPP
+              _literalIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 596, column 29)
+              (_eqrefname,_,_idUseOccGamEq,_errIdUseEq) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnClassEqFldEq] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 596, column 9)
+              _litnames =
+                  litNames _lhsIopts _literalIeh True sign_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 599, column 29)
+              (_litrefname,_litrefnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam' _lhsIopts _lhsIidGam _litnames range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 601, column 29)
+              (_eqclassrefname,_,_idUseOccGamCls,_errIdUseCls) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnClassEq] IdOcc_Class IdAsp_Class_Class range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 603, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions
+                      [ _idUseOccGam, _idUseOccGamEq
+                      , _idUseOccGamCls
+                      , _literalIidUseOccGam
+                      ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 49, column 9)
+              _errSq =
+                  Seq.unions [ Seq.fromList _errIdUse, Seq.fromList _errIdUseEq
+                             , Seq.fromList _errIdUseCls
+                             , _literalIerrSq
+                             ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 802, column 9)
+              _lhsOeh =
+                  let
+                      mkc r = \c -> mke r (rngLift r EH.Expr_CConst c, Just $ SrcConst_Char c)
+                      mke r = uncurry (rngLift r EH.PatExpr_Expr)
+                  in  case _literalIeh of
+                        Literal_Char   r   s -> mkc r $ head s
+                        Literal_Int    r b s -> mke r (ehExpLitInt r b s sign_ _litrefnames)
+                        Literal_String r   s
+                          | ehcOptOverloadedStrings _lhsIopts -> mke r (ehExpLitString _lhsIopts r s _litrefnames)
+                          | otherwise                         -> foldr (\c p -> ehPatConApp r (_litrefnames !! 0) [mkc r c,p]) (ehPatConApp r (_litrefnames !! 1) []) s
+                        Literal_Float  r   s -> mke r (ehExpLitFloat r s sign_ _litrefnames)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _literalIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _literalIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _literalItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _literalIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _literalIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _literalItopInstanceNmL
+              -- copy rule (down)
+              _literalOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _literalOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _literalOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _literalOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _literalOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _literalOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _literalOtr =
+                  _lhsItr
+              ( _literalIeh,_literalIerrSq,_literalIgUniq,_literalIidUseOccGam,_literalIpp,_literalIppWrap,_literalItopInstanceNmL,_literalItrpp,_literalIundefOccGam) =
+                  literal_ _literalOgUniq _literalOidGam _literalOnmLev _literalOopts _literalOpatchEhNmInInstance _literalOtopInstanceNmL _literalOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Variable :: Range ->
+                        Name ->
+                        T_Pattern
+sem_Pattern_Variable range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 281, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var _idOccDefsNoWildcard
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 9)
+              _isWildcard =
+                  hsnIsWild name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
+              _idOccDef =
+                  IdOcc _refname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
+              _idOccDefsNoWildcard =
+                  if _isWildcard then [] else [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 176, column 9)
+              _idOccDefs =
+                  _idOccDefsNoWildcard
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 234, column 9)
+              _lhsOmbTopRefname =
+                  if _isWildcard then Just _refname else Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 341, column 9)
+              _pp =
+                  pp name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 813, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Var
+                          (_lhsIpatchEhNmInInstance _refname)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 271, column 9)
+              _lhsOisVar =
+                  True
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Constructor :: Range ->
+                           Name ->
+                           T_Patterns ->
+                           T_Pattern
+sem_Pattern_Constructor range_ name_ patterns_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([EH.PatExpr])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 638, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 641, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_patternsIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 226, column 9)
+              _conNm =
+                  name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 45, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _patternsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 343, column 9)
+              _pp =
+                  name_ >#< ppSpaces _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 816, column 9)
+              _lhsOeh =
+                  ehPatConApp range_ _refname _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Parenthesized :: Range ->
+                             T_Pattern ->
+                             T_Pattern
+sem_Pattern_Parenthesized range_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOisVar :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 345, column 9)
+              _pp =
+                  ppParens _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 818, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Parens _patternIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOisVar =
+                  _patternIisVar
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_As :: Range ->
+                  Name ->
+                  T_Pattern ->
+                  T_Pattern
+sem_Pattern_As range_ name_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOisVar :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 281, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var _idOccDefsNoWildcard
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 283, column 9)
+              _lhsOidDefOccGam =
+                  _idDefOccGam `gamAddGam` _patternIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 9)
+              _isWildcard =
+                  hsnIsWild name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
+              _idOccDef =
+                  IdOcc _refname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
+              _idOccDefsNoWildcard =
+                  if _isWildcard then [] else [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 178, column 9)
+              _idOccDefs =
+                  _idOccDefsNoWildcard ++ _patternIidOccDefs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 234, column 9)
+              _lhsOmbTopRefname =
+                  if _isWildcard then Just _refname else Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 349, column 9)
+              _pp =
+                  name_ >|< "@" >|< _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 824, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_VarAs
+                          (_lhsIpatchEhNmInInstance _refname)
+                          _patternIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _idOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOisVar =
+                  _patternIisVar
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Wildcard :: Range ->
+                        T_Pattern
+sem_Pattern_Wildcard range_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 351, column 9)
+              _pp =
+                  pp hsnWild
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 828, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Var hsnWild
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Tuple :: Range ->
+                     Int ->
+                     T_Patterns ->
+                     T_Pattern
+sem_Pattern_Tuple range_ arity_ patterns_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([EH.PatExpr])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 10, column 9)
+              _errArity =
+                  if arity_ == length _patternsIeh
+                  then []
+                  else [rngLift range_ Err_PatArity2 "pat " _pp arity_]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 56, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errArity, _patternsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 347, column 9)
+              _pp =
+                  ppParensCommas' $ _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 820, column 9)
+              _lhsOeh =
+                  foldl (\eh (n,p) -> ehRowRecPatExprUpd range_ (Just n) (rngLift range_ EH.RecPatExpr_Ext) p eh)
+                        (rngLift range_ EH.PatExpr_Rec $ rngLift range_ EH.RecPatExpr_Empty)
+                  $ zip positionalFldNames _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Annotate :: Range ->
+                        T_PatternAnnotation ->
+                        T_Pattern ->
+                        T_Pattern
+sem_Pattern_Annotate range_ annotation_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOgUniq :: UID
+              _lhsOisVar :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _annotationOfixityGam :: FixityGam
+              _annotationOgUniq :: UID
+              _annotationOidGam :: IdDefOccGam
+              _annotationOmoduleNm :: HsName
+              _annotationOnmLev :: NmLev
+              _annotationOopts :: EHCOpts
+              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
+              _annotationOtopInstanceNmL :: ([HsName])
+              _annotationOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _annotationIeh :: (EH.PatExprAnn)
+              _annotationIerrSq :: ErrSq
+              _annotationIgUniq :: UID
+              _annotationIidDefOccGam :: IdDefOccGam
+              _annotationIidOccDefs :: ([IdOcc])
+              _annotationIidUseOccGam :: IdUseOccGam
+              _annotationIpp :: PP_Doc
+              _annotationIppWrap :: (PP_Doc -> PP_Doc)
+              _annotationItopInstanceNmL :: ([HsName])
+              _annotationItrpp :: TrPP
+              _annotationIundefOccGam :: IdUseOccGam
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 830, column 17)
+              _eh =
+                  rngLift range_ EH.PatExpr_Ann _annotationIeh _patternIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _annotationIerrSq `Seq.union` _patternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _annotationIidDefOccGam `gamAddGam` _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _annotationIidOccDefs ++ _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _annotationIidUseOccGam `gamAddGam` _patternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _annotationIpp >-< _patternIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _annotationIppWrap . _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _annotationItrpp >< _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _annotationIundefOccGam `gamUnion` _patternIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOisVar =
+                  _patternIisVar
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _annotationOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _annotationOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _annotationOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _annotationOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _annotationOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _annotationOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _annotationOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _annotationOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _annotationOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _patternOgUniq =
+                  _annotationIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _patternOtopInstanceNmL =
+                  _annotationItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _annotationIeh,_annotationIerrSq,_annotationIgUniq,_annotationIidDefOccGam,_annotationIidOccDefs,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationItrpp,_annotationIundefOccGam) =
+                  annotation_ _annotationOfixityGam _annotationOgUniq _annotationOidGam _annotationOmoduleNm _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL _annotationOtr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Typed :: Range ->
+                     T_Pattern ->
+                     T_Type ->
+                     T_Pattern
+sem_Pattern_Typed range_ pattern_ type_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _typeOidGam :: IdDefOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _typeOnmLev :: NmLev
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOisVar :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOisAsPred :: Bool
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 285, column 9)
+              _idDefOccGamType =
+                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 429, column 9)
+              _typeOidGam =
+                  gamUnion _idDefOccGamType _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 56, column 9)
+              _typeOnmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 354, column 9)
+              _pp =
+                  _patternIpp >#< "::" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 832, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_TypeAs _typeIeh _patternIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 225, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq `Seq.union` _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam `gamAddGam` _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp >< _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam `gamUnion` _typeIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOisVar =
+                  _patternIisVar
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (from local)
+              _typeOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _patternIgUniq
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_InfixConstructor :: Range ->
+                                T_Pattern ->
+                                Name ->
+                                T_Pattern ->
+                                T_Pattern
+sem_Pattern_InfixConstructor range_ leftPattern_ constructorOperator_ rightPattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftPatternOfixityGam :: FixityGam
+              _leftPatternOgUniq :: UID
+              _leftPatternOidGam :: IdDefOccGam
+              _leftPatternOmoduleNm :: HsName
+              _leftPatternOnmLev :: NmLev
+              _leftPatternOopts :: EHCOpts
+              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftPatternOtopInstanceNmL :: ([HsName])
+              _leftPatternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightPatternOfixityGam :: FixityGam
+              _rightPatternOgUniq :: UID
+              _rightPatternOidGam :: IdDefOccGam
+              _rightPatternOmoduleNm :: HsName
+              _rightPatternOnmLev :: NmLev
+              _rightPatternOopts :: EHCOpts
+              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightPatternOtopInstanceNmL :: ([HsName])
+              _rightPatternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftPatternIeh :: (EH.PatExpr)
+              _leftPatternIerrSq :: ErrSq
+              _leftPatternIgUniq :: UID
+              _leftPatternIidDefOccGam :: IdDefOccGam
+              _leftPatternIidOccDefs :: ([IdOcc])
+              _leftPatternIidUseOccGam :: IdUseOccGam
+              _leftPatternIisVar :: Bool
+              _leftPatternImbTopRefname :: (Maybe HsName)
+              _leftPatternIpp :: PP_Doc
+              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
+              _leftPatternItopInstanceNmL :: ([HsName])
+              _leftPatternItrpp :: TrPP
+              _leftPatternIundefOccGam :: IdUseOccGam
+              _rightPatternIeh :: (EH.PatExpr)
+              _rightPatternIerrSq :: ErrSq
+              _rightPatternIgUniq :: UID
+              _rightPatternIidDefOccGam :: IdDefOccGam
+              _rightPatternIidOccDefs :: ([IdOcc])
+              _rightPatternIidUseOccGam :: IdUseOccGam
+              _rightPatternIisVar :: Bool
+              _rightPatternImbTopRefname :: (Maybe HsName)
+              _rightPatternIpp :: PP_Doc
+              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
+              _rightPatternItopInstanceNmL :: ([HsName])
+              _rightPatternItrpp :: TrPP
+              _rightPatternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 638, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 643, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_leftPatternIidUseOccGam,_rightPatternIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 228, column 9)
+              _conNm =
+                  constructorOperator_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 47, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _leftPatternIerrSq, _rightPatternIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 356, column 9)
+              _pp =
+                  _leftPatternIpp >#< constructorOperator_ >#< _rightPatternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 834, column 9)
+              _lhsOeh =
+                  ehPatConApp range_ _refname [_leftPatternIeh,_rightPatternIeh]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _leftPatternIidDefOccGam `gamAddGam` _rightPatternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftPatternIppWrap . _rightPatternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftPatternItrpp >< _rightPatternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightPatternIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightPatternItopInstanceNmL
+              -- copy rule (down)
+              _leftPatternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftPatternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftPatternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftPatternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _leftPatternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftPatternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftPatternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftPatternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftPatternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rightPatternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightPatternOgUniq =
+                  _leftPatternIgUniq
+              -- copy rule (down)
+              _rightPatternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightPatternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rightPatternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightPatternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightPatternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rightPatternOtopInstanceNmL =
+                  _leftPatternItopInstanceNmL
+              -- copy rule (down)
+              _rightPatternOtr =
+                  _lhsItr
+              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidDefOccGam,_leftPatternIidOccDefs,_leftPatternIidUseOccGam,_leftPatternIisVar,_leftPatternImbTopRefname,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternItrpp,_leftPatternIundefOccGam) =
+                  leftPattern_ _leftPatternOfixityGam _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL _leftPatternOtr
+              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidDefOccGam,_rightPatternIidOccDefs,_rightPatternIidUseOccGam,_rightPatternIisVar,_rightPatternImbTopRefname,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternItrpp,_rightPatternIundefOccGam) =
+                  rightPattern_ _rightPatternOfixityGam _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL _rightPatternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_List :: Range ->
+                    T_Patterns ->
+                    T_Pattern
+sem_Pattern_List range_ patterns_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOfixityGam :: FixityGam
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([EH.PatExpr])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidDefOccGam :: IdDefOccGam
+              _patternsIidOccDefs :: ([IdOcc])
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 645, column 29)
+              (_,_refnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 647, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_patternsIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 45, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _patternsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 358, column 9)
+              _pp =
+                  ppBracketsCommas _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 836, column 9)
+              _lhsOeh =
+                  foldr (\l r -> ehPatConApp range_ (_refnames !! 0) [l,r]) (appCon (_refnames !! 1)) _patternsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsIundefOccGam) =
+                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Record :: Range ->
+                      Name ->
+                      T_RecordPatternBindings ->
+                      T_Pattern
+sem_Pattern_Record range_ name_ recordPatternBindings_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _recordPatternBindingsOfixityGam :: FixityGam
+              _recordPatternBindingsOgUniq :: UID
+              _recordPatternBindingsOidGam :: IdDefOccGam
+              _recordPatternBindingsOmoduleNm :: HsName
+              _recordPatternBindingsOnmLev :: NmLev
+              _recordPatternBindingsOopts :: EHCOpts
+              _recordPatternBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _recordPatternBindingsOtopInstanceNmL :: ([HsName])
+              _recordPatternBindingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _recordPatternBindingsIeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
+              _recordPatternBindingsIerrSq :: ErrSq
+              _recordPatternBindingsIgUniq :: UID
+              _recordPatternBindingsIidDefOccGam :: IdDefOccGam
+              _recordPatternBindingsIidOccDefs :: ([IdOcc])
+              _recordPatternBindingsIidUseOccGam :: IdUseOccGam
+              _recordPatternBindingsIpp :: PP_Doc
+              _recordPatternBindingsIppL :: ([PP_Doc])
+              _recordPatternBindingsIppWrap :: (PP_Doc -> PP_Doc)
+              _recordPatternBindingsItopInstanceNmL :: ([HsName])
+              _recordPatternBindingsItrpp :: TrPP
+              _recordPatternBindingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 638, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 649, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_recordPatternBindingsIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 226, column 9)
+              _conNm =
+                  name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 54, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _recordPatternBindingsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 360, column 9)
+              _pp =
+                  name_ >#< ppCurlysCommas' _recordPatternBindingsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 838, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldPatExpr_Con _refname) _recordPatternBindingsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _recordPatternBindingsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _recordPatternBindingsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _recordPatternBindingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _recordPatternBindingsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _recordPatternBindingsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _recordPatternBindingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _recordPatternBindingsItopInstanceNmL
+              -- copy rule (down)
+              _recordPatternBindingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _recordPatternBindingsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _recordPatternBindingsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _recordPatternBindingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _recordPatternBindingsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _recordPatternBindingsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _recordPatternBindingsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _recordPatternBindingsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _recordPatternBindingsOtr =
+                  _lhsItr
+              ( _recordPatternBindingsIeh,_recordPatternBindingsIerrSq,_recordPatternBindingsIgUniq,_recordPatternBindingsIidDefOccGam,_recordPatternBindingsIidOccDefs,_recordPatternBindingsIidUseOccGam,_recordPatternBindingsIpp,_recordPatternBindingsIppL,_recordPatternBindingsIppWrap,_recordPatternBindingsItopInstanceNmL,_recordPatternBindingsItrpp,_recordPatternBindingsIundefOccGam) =
+                  recordPatternBindings_ _recordPatternBindingsOfixityGam _recordPatternBindingsOgUniq _recordPatternBindingsOidGam _recordPatternBindingsOmoduleNm _recordPatternBindingsOnmLev _recordPatternBindingsOopts _recordPatternBindingsOpatchEhNmInInstance _recordPatternBindingsOtopInstanceNmL _recordPatternBindingsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_RowRecordBinding :: Range ->
+                                T_Pattern ->
+                                T_RowRecordPatternBindings ->
+                                T_Pattern
+sem_Pattern_RowRecordBinding range_ pattern_ rowRecordPattternBindings_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rowRecordPattternBindingsOfixityGam :: FixityGam
+              _rowRecordPattternBindingsOgUniq :: UID
+              _rowRecordPattternBindingsOidGam :: IdDefOccGam
+              _rowRecordPattternBindingsOmoduleNm :: HsName
+              _rowRecordPattternBindingsOnmLev :: NmLev
+              _rowRecordPattternBindingsOopts :: EHCOpts
+              _rowRecordPattternBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rowRecordPattternBindingsOtopInstanceNmL :: ([HsName])
+              _rowRecordPattternBindingsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _rowRecordPattternBindingsIeh :: ([EH.PatExpr -> EH.PatExpr])
+              _rowRecordPattternBindingsIerrSq :: ErrSq
+              _rowRecordPattternBindingsIgUniq :: UID
+              _rowRecordPattternBindingsIidDefOccGam :: IdDefOccGam
+              _rowRecordPattternBindingsIidOccDefs :: ([IdOcc])
+              _rowRecordPattternBindingsIidUseOccGam :: IdUseOccGam
+              _rowRecordPattternBindingsIpp :: PP_Doc
+              _rowRecordPattternBindingsIppL :: ([PP_Doc])
+              _rowRecordPattternBindingsIppWrap :: (PP_Doc -> PP_Doc)
+              _rowRecordPattternBindingsItopInstanceNmL :: ([HsName])
+              _rowRecordPattternBindingsItrpp :: TrPP
+              _rowRecordPattternBindingsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 362, column 9)
+              _pp =
+                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _patternIpp)
+                            _rowRecordPattternBindingsIppL _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 840, column 9)
+              _lhsOeh =
+                  foldl (flip ($)) _patternIeh _rowRecordPattternBindingsIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq `Seq.union` _rowRecordPattternBindingsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam `gamAddGam` _rowRecordPattternBindingsIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs ++ _rowRecordPattternBindingsIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam `gamAddGam` _rowRecordPattternBindingsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _rowRecordPattternBindingsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp >< _rowRecordPattternBindingsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam `gamUnion` _rowRecordPattternBindingsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rowRecordPattternBindingsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rowRecordPattternBindingsItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rowRecordPattternBindingsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rowRecordPattternBindingsOgUniq =
+                  _patternIgUniq
+              -- copy rule (down)
+              _rowRecordPattternBindingsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rowRecordPattternBindingsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rowRecordPattternBindingsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rowRecordPattternBindingsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rowRecordPattternBindingsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rowRecordPattternBindingsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _rowRecordPattternBindingsOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _rowRecordPattternBindingsIeh,_rowRecordPattternBindingsIerrSq,_rowRecordPattternBindingsIgUniq,_rowRecordPattternBindingsIidDefOccGam,_rowRecordPattternBindingsIidOccDefs,_rowRecordPattternBindingsIidUseOccGam,_rowRecordPattternBindingsIpp,_rowRecordPattternBindingsIppL,_rowRecordPattternBindingsIppWrap,_rowRecordPattternBindingsItopInstanceNmL,_rowRecordPattternBindingsItrpp,_rowRecordPattternBindingsIundefOccGam) =
+                  rowRecordPattternBindings_ _rowRecordPattternBindingsOfixityGam _rowRecordPattternBindingsOgUniq _rowRecordPattternBindingsOidGam _rowRecordPattternBindingsOmoduleNm _rowRecordPattternBindingsOnmLev _rowRecordPattternBindingsOopts _rowRecordPattternBindingsOpatchEhNmInInstance _rowRecordPattternBindingsOtopInstanceNmL _rowRecordPattternBindingsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_RowRecordEmpty :: Range ->
+                              T_Pattern
+sem_Pattern_RowRecordEmpty range_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOisVar :: Bool
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 365, column 9)
+              _pp =
+                  hsnORec >|< hsnCRec
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 842, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Rec (rngLift range_ EH.RecPatExpr_Empty)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 275, column 9)
+              _lhsOisVar =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Irrefutable :: Range ->
+                           T_Pattern ->
+                           T_Pattern
+sem_Pattern_Irrefutable range_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOisVar :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 367, column 9)
+              _pp =
+                  "~" >|< _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 844, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Irrefutable _patternIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOisVar =
+                  _patternIisVar
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pattern_Bang :: Range ->
+                    T_Pattern ->
+                    T_Pattern
+sem_Pattern_Bang range_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOmbTopRefname :: (Maybe HsName)
+              _lhsOeh :: (EH.PatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOisVar :: Bool
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
+              _lhsOmbTopRefname =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 369, column 9)
+              _pp =
+                  "!" >|< _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 846, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.PatExpr_Bang        _patternIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 199, column 9)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOisVar =
+                  _patternIisVar
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- PatternAnnotation -------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.PatExprAnn
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Empty:
+         visit 0:
+            local eh          : _
+-}
+-- cata
+sem_PatternAnnotation :: PatternAnnotation ->
+                         T_PatternAnnotation
+sem_PatternAnnotation (PatternAnnotation_Empty) =
+    (sem_PatternAnnotation_Empty)
+-- semantic domain
+type T_PatternAnnotation = FixityGam ->
+                           UID ->
+                           IdDefOccGam ->
+                           HsName ->
+                           NmLev ->
+                           EHCOpts ->
+                           PatchEhNmInInstance ->
+                           ([HsName]) ->
+                           (TraceOn -> [PP_Doc] -> TrPP) ->
+                           ( (EH.PatExprAnn),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_PatternAnnotation_Empty :: T_PatternAnnotation
+sem_PatternAnnotation_Empty =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.PatExprAnn)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 903, column 17)
+              _eh =
+                  EH.PatExprAnn_Empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Patterns ----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.PatExpr]
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Pattern 
+         child tl             : Patterns 
+      alternative Nil:
+-}
+-- cata
+sem_Patterns :: Patterns ->
+                T_Patterns
+sem_Patterns list =
+    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))
+-- semantic domain
+type T_Patterns = FixityGam ->
+                  UID ->
+                  IdDefOccGam ->
+                  HsName ->
+                  NmLev ->
+                  EHCOpts ->
+                  PatchEhNmInInstance ->
+                  ([HsName]) ->
+                  (TraceOn -> [PP_Doc] -> TrPP) ->
+                  ( ([EH.PatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Patterns_Cons :: T_Pattern ->
+                     T_Patterns ->
+                     T_Patterns
+sem_Patterns_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.PatExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.PatExpr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIisVar :: Bool
+              _hdImbTopRefname :: (Maybe HsName)
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.PatExpr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 426, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 796, column 24)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIisVar,_hdImbTopRefname,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Patterns_Nil :: T_Patterns
+sem_Patterns_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.PatExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 428, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 796, column 24)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Pragma ------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathPragmas          : Set.Set Pragma.Pragma
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Language:
+         child range          : {Range}
+         child pragmas        : {Names}
+         visit 0:
+            local pragmaNames : _
+            local pp          : _
+      alternative OptionsUHC:
+         child range          : {Range}
+         child options        : {String}
+         visit 0:
+            local pragmaNames : _
+      alternative Derivable:
+         child range          : {Range}
+         child className      : {Name}
+         child fieldName      : {Name}
+         child defaultName    : {Name}
+         visit 0:
+            local pp          : _
+      alternative ExcludeIfTarget:
+         child range          : {Range}
+         child targetNames    : {[String]}
+         visit 0:
+            local targets     : _
+            local pp          : _
+-}
+-- cata
+sem_Pragma :: Pragma ->
+              T_Pragma
+sem_Pragma (Pragma_Language _range _pragmas) =
+    (sem_Pragma_Language _range _pragmas)
+sem_Pragma (Pragma_OptionsUHC _range _options) =
+    (sem_Pragma_OptionsUHC _range _options)
+sem_Pragma (Pragma_Derivable _range _className _fieldName _defaultName) =
+    (sem_Pragma_Derivable _range _className _fieldName _defaultName)
+sem_Pragma (Pragma_ExcludeIfTarget _range _targetNames) =
+    (sem_Pragma_ExcludeIfTarget _range _targetNames)
+-- semantic domain
+type T_Pragma = UID ->
+                IdDefOccGam ->
+                NmLev ->
+                EHCOpts ->
+                PatchEhNmInInstance ->
+                ([HsName]) ->
+                (TraceOn -> [PP_Doc] -> TrPP) ->
+                ( ErrSq,UID,(Set.Set Pragma.Pragma),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Pragma_Language :: Range ->
+                       Names ->
+                       T_Pragma
+sem_Pragma_Language range_ pragmas_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 6, column 9)
+              _pragmaNames =
+                  [ p |      p  <- map show pragmas_ ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 12, column 9)
+              _lhsOgathPragmas =
+                  Set.fromList $ catMaybes [ Map.lookup p Pragma.allSimplePragmaMp | p <- _pragmaNames ]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 91, column 17)
+              _pp =
+                  "LANGUAGE" >#< ppCommas pragmas_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pragma_OptionsUHC :: Range ->
+                         String ->
+                         T_Pragma
+sem_Pragma_OptionsUHC range_ options_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 8, column 9)
+              _pragmaNames =
+                  []
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 16, column 9)
+              _lhsOgathPragmas =
+                  Set.singleton (Pragma.Pragma_OptionsUHC options_)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pragma_Derivable :: Range ->
+                        Name ->
+                        Name ->
+                        Name ->
+                        T_Pragma
+sem_Pragma_Derivable range_ className_ fieldName_ defaultName_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 14, column 9)
+              _lhsOgathPragmas =
+                  Set.singleton (Pragma.Pragma_Derivable className_ fieldName_ defaultName_)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 93, column 17)
+              _pp =
+                  "DERIVABLE" >#< className_ >#< fieldName_ >#< defaultName_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pragma_ExcludeIfTarget :: Range ->
+                              ([String]) ->
+                              T_Pragma
+sem_Pragma_ExcludeIfTarget range_ targetNames_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 18, column 9)
+              _targets =
+                  catMaybes $ map (\t -> Map.lookup t supportedTargetMp) targetNames_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 19, column 9)
+              _lhsOgathPragmas =
+                  Set.singleton (Pragma.Pragma_ExcludeIfTarget _targets)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 95, column 17)
+              _pp =
+                  "EXCLUDE_IF_TARGET" >#< ppCommas targetNames_
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Pragmas -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         errSq                : ErrSq
+         gathPragmas          : Set.Set Pragma.Pragma
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Pragma 
+         child tl             : Pragmas 
+      alternative Nil:
+-}
+-- cata
+sem_Pragmas :: Pragmas ->
+               T_Pragmas
+sem_Pragmas list =
+    (Prelude.foldr sem_Pragmas_Cons sem_Pragmas_Nil (Prelude.map sem_Pragma list))
+-- semantic domain
+type T_Pragmas = UID ->
+                 IdDefOccGam ->
+                 NmLev ->
+                 EHCOpts ->
+                 PatchEhNmInInstance ->
+                 ([HsName]) ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( ErrSq,UID,(Set.Set Pragma.Pragma),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Pragmas_Cons :: T_Pragma ->
+                    T_Pragmas ->
+                    T_Pragmas
+sem_Pragmas_Cons hd_ tl_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  _hdIgathPragmas `Set.union` _tlIgathPragmas
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIerrSq,_hdIgUniq,_hdIgathPragmas,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIerrSq,_tlIgUniq,_tlIgathPragmas,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Pragmas_Nil :: T_Pragmas
+sem_Pragmas_Nil =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
+              _lhsOgathPragmas =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Qualifier ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         moduleNm             : HsName
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.Expr -> EH.Expr
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Guard:
+         child range          : {Range}
+         child guard          : Expression 
+         visit 0:
+            local valrefnames : _
+            local idUseOccGamVal : _
+            local errIdUseVal : _
+            local typerefname : _
+            local idUseOccGamType : _
+            local errIdUseType : _
+            local idUseOccGam : _
+            local errSq       : _
+      alternative Let:
+         child range          : {Range}
+         child declarations   : Declarations 
+         visit 0:
+            local nameDeclCxt : _
+            local idGam       : _
+            local sccOrder    : _
+            local mkSccLet    : _
+            local errReorder  : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+      alternative Generator:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child expression     : Expression 
+         visit 0:
+            local refnames    : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+      alternative Empty:
+         child range          : {Range}
+         visit 0:
+            local refnames    : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+-}
+-- cata
+sem_Qualifier :: Qualifier ->
+                 T_Qualifier
+sem_Qualifier (Qualifier_Guard _range _guard) =
+    (sem_Qualifier_Guard _range (sem_Expression _guard))
+sem_Qualifier (Qualifier_Let _range _declarations) =
+    (sem_Qualifier_Let _range (sem_Declarations _declarations))
+sem_Qualifier (Qualifier_Generator _range _pattern _expression) =
+    (sem_Qualifier_Generator _range (sem_Pattern _pattern) (sem_Expression _expression))
+sem_Qualifier (Qualifier_Empty _range) =
+    (sem_Qualifier_Empty _range)
+-- semantic domain
+type T_Qualifier = UID ->
+                   FixityGam ->
+                   UID ->
+                   (Map.Map HsName [(HsName,HsName)]) ->
+                   IdDefOccGam ->
+                   HsName ->
+                   NmLev ->
+                   EHCOpts ->
+                   PatchEhNmInInstance ->
+                   (Set.Set Pragma.Pragma) ->
+                   ([HsName]) ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                   ( (EH.Expr -> EH.Expr),ErrSq,UID,FixityGam,IdDefOccGam,IdUseOccGam,NmLev,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Qualifier_Guard :: Range ->
+                       T_Expression ->
+                       T_Qualifier
+sem_Qualifier_Guard range_ guard_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              _guardOcaseId :: UID
+              _guardOfixityGam :: FixityGam
+              _guardOgUniq :: UID
+              _guardOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _guardOidGam :: IdDefOccGam
+              _guardOmoduleNm :: HsName
+              _guardOnmLev :: NmLev
+              _guardOopts :: EHCOpts
+              _guardOpatchEhNmInInstance :: PatchEhNmInInstance
+              _guardOpragmas :: (Set.Set Pragma.Pragma)
+              _guardOtopInstanceNmL :: ([HsName])
+              _guardOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _guardIconNm :: Name
+              _guardIeh :: (EH.Expr)
+              _guardIerrSq :: ErrSq
+              _guardIgUniq :: UID
+              _guardIidUseOccGam :: IdUseOccGam
+              _guardIopChain :: (OpChain EH.Expr)
+              _guardIoperatorName :: MaybeName
+              _guardIpp :: PP_Doc
+              _guardIppWrap :: (PP_Doc -> PP_Doc)
+              _guardItopInstanceNmL :: ([HsName])
+              _guardItrpp :: TrPP
+              _guardIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 611, column 29)
+              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 613, column 29)
+              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 611, column 9)
+              _idUseOccGam =
+                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 616, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_guardIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 100, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 609, column 9)
+              _lhsOeh =
+                  \e -> EH.mkIf' (_typerefname : _valrefnames) range_ _guardIeh e (appCon (_valrefnames !! 2))
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _guardIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _guardIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _guardItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _guardIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _guardIgUniq
+              -- copy rule (chain)
+              _lhsOidGam =
+                  _lhsIidGam
+              -- copy rule (chain)
+              _lhsOnmLev =
+                  _lhsInmLev
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _guardItopInstanceNmL
+              -- copy rule (down)
+              _guardOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _guardOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _guardOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _guardOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _guardOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _guardOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _guardOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _guardOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _guardOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _guardOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _guardOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _guardOtr =
+                  _lhsItr
+              ( _guardIconNm,_guardIeh,_guardIerrSq,_guardIgUniq,_guardIidUseOccGam,_guardIopChain,_guardIoperatorName,_guardIpp,_guardIppWrap,_guardItopInstanceNmL,_guardItrpp,_guardIundefOccGam) =
+                  guard_ _guardOcaseId _guardOfixityGam _guardOgUniq _guardOgenerDerivMp _guardOidGam _guardOmoduleNm _guardOnmLev _guardOopts _guardOpatchEhNmInInstance _guardOpragmas _guardOtopInstanceNmL _guardOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Qualifier_Let :: Range ->
+                     T_Declarations ->
+                     T_Qualifier
+sem_Qualifier_Let range_ declarations_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              _declarationsOcaseId :: UID
+              _declarationsOfixityGam :: FixityGam
+              _declarationsOgUniq :: UID
+              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _declarationsOidGam :: IdDefOccGam
+              _declarationsOmoduleNm :: HsName
+              _declarationsOnameDeclCxt :: NameDeclCxt
+              _declarationsOnmLev :: NmLev
+              _declarationsOopts :: EHCOpts
+              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
+              _declarationsOtopInstanceNmL :: ([HsName])
+              _declarationsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _declarationsIeh :: ([EH.Decl])
+              _declarationsIerrSq :: ErrSq
+              _declarationsIgUniq :: UID
+              _declarationsIgathFixityGam :: FixityGam
+              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _declarationsIidDefOccGam :: IdDefOccGam
+              _declarationsIidDpdMp :: IdDpdMp
+              _declarationsIidInClassTySigDefOccGam :: IdDefOccGam
+              _declarationsIidInInstanceValDefOccGam :: IdDefOccGam
+              _declarationsIidOccDefs :: ([IdOcc])
+              _declarationsIidUseOccGam :: IdUseOccGam
+              _declarationsIneedsError :: Bool
+              _declarationsIpp :: PP_Doc
+              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
+              _declarationsItopInstanceNmL :: ([HsName])
+              _declarationsItrpp :: TrPP
+              _declarationsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 31, column 9)
+              _nameDeclCxt =
+                  NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 469, column 9)
+              _idGam =
+                  gamUnion _declarationsIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1083, column 9)
+              _sccOrder =
+                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1217, column 29)
+              (_mkSccLet,_,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ False _declarationsIidDefOccGam (Just _sccOrder)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 77, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 127, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 98, column 9)
+              _errSq =
+                  Seq.firstNotEmpty [Seq.fromList _errDupIntro, _declarationsIerrSq, Seq.fromList _errReorder]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 269, column 9)
+              _pp =
+                  "let" >#< _declarationsIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 611, column 9)
+              _lhsOeh =
+                  _mkSccLet
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _declarationsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _declarationsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _declarationsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _declarationsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _declarationsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _declarationsIgUniq
+              -- copy rule (from local)
+              _lhsOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _lhsOnmLev =
+                  _nmLev
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _declarationsItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _declarationsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _declarationsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _declarationsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _declarationsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _declarationsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _declarationsOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _declarationsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _declarationsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _declarationsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _declarationsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _declarationsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOtr =
+                  _lhsItr
+              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidInClassTySigDefOccGam,_declarationsIidInInstanceValDefOccGam,_declarationsIidOccDefs,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsItrpp,_declarationsIundefOccGam) =
+                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnameDeclCxt _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL _declarationsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Qualifier_Generator :: Range ->
+                           T_Pattern ->
+                           T_Expression ->
+                           T_Qualifier
+sem_Qualifier_Generator range_ pattern_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidGam :: IdDefOccGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 9)
+              _lhsOidGam =
+                  gamUnion _patternIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 618, column 29)
+              (_,_refnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnPrelConcatMap,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 620, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_patternIidUseOccGam,_expressionIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 77, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 125, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _patternIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 102, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errIdUse, _patternIerrSq, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 271, column 9)
+              _pp =
+                  _patternIpp >#< "<-" >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 613, column 9)
+              _lhsOeh =
+                  ehGenerator
+                     range_ _patternIeh
+                     (\e -> ehExpVarApp range_ (_refnames !! 0) [e,_expressionIeh])
+                     (appCon (_refnames !! 1))
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (from local)
+              _lhsOnmLev =
+                  _nmLev
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _patternOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _patternIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _expressionOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Qualifier_Empty :: Range ->
+                       T_Qualifier
+sem_Qualifier_Empty range_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 622, column 29)
+              (_,_refnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 104, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 618, column 9)
+              _lhsOeh =
+                  \e -> ehExpConApp range_ (_refnames !! 0) [e,appCon (_refnames !! 1)]
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOidGam =
+                  _lhsIidGam
+              -- copy rule (chain)
+              _lhsOnmLev =
+                  _lhsInmLev
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Qualifiers --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         idGam                : IdDefOccGam
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.Expr -> EH.Expr]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Qualifier 
+         child tl             : Qualifiers 
+         visit 0:
+            local fixityGam   : _
+      alternative Nil:
+-}
+-- cata
+sem_Qualifiers :: Qualifiers ->
+                  T_Qualifiers
+sem_Qualifiers list =
+    (Prelude.foldr sem_Qualifiers_Cons sem_Qualifiers_Nil (Prelude.map sem_Qualifier list))
+-- semantic domain
+type T_Qualifiers = UID ->
+                    FixityGam ->
+                    UID ->
+                    (Map.Map HsName [(HsName,HsName)]) ->
+                    IdDefOccGam ->
+                    HsName ->
+                    NmLev ->
+                    EHCOpts ->
+                    PatchEhNmInInstance ->
+                    (Set.Set Pragma.Pragma) ->
+                    ([HsName]) ->
+                    (TraceOn -> [PP_Doc] -> TrPP) ->
+                    ( ([EH.Expr -> EH.Expr]),ErrSq,UID,IdDefOccGam,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Qualifiers_Cons :: T_Qualifier ->
+                       T_Qualifiers ->
+                       T_Qualifiers
+sem_Qualifiers_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.Expr -> EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.Expr -> EH.Expr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIidGam :: IdDefOccGam
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdInmLev :: NmLev
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.Expr -> EH.Expr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidGam :: IdDefOccGam
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 434, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 35, column 9)
+              _fixityGam =
+                  _hdIgathFixityGam `gamUnion` _lhsIfixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 603, column 26)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOidGam =
+                  _tlIidGam
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _hdOfixityGam =
+                  _fixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _tlOfixityGam =
+                  _fixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (chain)
+              _tlOidGam =
+                  _hdIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (chain)
+              _tlOnmLev =
+                  _hdInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidGam,_hdIidUseOccGam,_hdInmLev,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidGam,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Qualifiers_Nil :: T_Qualifiers
+sem_Qualifiers_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.Expr -> EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 436, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 603, column 26)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOidGam =
+                  _lhsIidGam
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RecordExpressionBinding -------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.DataFieldExpr -> EH.DataFieldExpr
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Binding:
+         child range          : {Range}
+         child name           : {Name}
+         child expression     : Expression 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+-}
+-- cata
+sem_RecordExpressionBinding :: RecordExpressionBinding ->
+                               T_RecordExpressionBinding
+sem_RecordExpressionBinding (RecordExpressionBinding_Binding _range _name _expression) =
+    (sem_RecordExpressionBinding_Binding _range _name (sem_Expression _expression))
+-- semantic domain
+type T_RecordExpressionBinding = UID ->
+                                 FixityGam ->
+                                 UID ->
+                                 (Map.Map HsName [(HsName,HsName)]) ->
+                                 IdDefOccGam ->
+                                 HsName ->
+                                 NmLev ->
+                                 EHCOpts ->
+                                 PatchEhNmInInstance ->
+                                 (Set.Set Pragma.Pragma) ->
+                                 ([HsName]) ->
+                                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                                 ( (EH.DataFieldExpr -> EH.DataFieldExpr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RecordExpressionBinding_Binding :: Range ->
+                                       Name ->
+                                       T_Expression ->
+                                       T_RecordExpressionBinding
+sem_RecordExpressionBinding_Binding range_ name_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.DataFieldExpr -> EH.DataFieldExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 683, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 685, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_expressionIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 108, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 285, column 9)
+              _pp =
+                  name_ >|< "=" >|< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 643, column 9)
+              _lhsOeh =
+                  \df -> rngLift range_ EH.DataFieldExpr_Upd df _refname _expressionIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RecordExpressionBindings ------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.DataFieldExpr -> EH.DataFieldExpr]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : RecordExpressionBinding 
+         child tl             : RecordExpressionBindings 
+      alternative Nil:
+-}
+-- cata
+sem_RecordExpressionBindings :: RecordExpressionBindings ->
+                                T_RecordExpressionBindings
+sem_RecordExpressionBindings list =
+    (Prelude.foldr sem_RecordExpressionBindings_Cons sem_RecordExpressionBindings_Nil (Prelude.map sem_RecordExpressionBinding list))
+-- semantic domain
+type T_RecordExpressionBindings = UID ->
+                                  FixityGam ->
+                                  UID ->
+                                  (Map.Map HsName [(HsName,HsName)]) ->
+                                  IdDefOccGam ->
+                                  HsName ->
+                                  NmLev ->
+                                  EHCOpts ->
+                                  PatchEhNmInInstance ->
+                                  (Set.Set Pragma.Pragma) ->
+                                  ([HsName]) ->
+                                  (TraceOn -> [PP_Doc] -> TrPP) ->
+                                  ( ([EH.DataFieldExpr -> EH.DataFieldExpr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RecordExpressionBindings_Cons :: T_RecordExpressionBinding ->
+                                     T_RecordExpressionBindings ->
+                                     T_RecordExpressionBindings
+sem_RecordExpressionBindings_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.DataFieldExpr -> EH.DataFieldExpr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 466, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 637, column 40)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RecordExpressionBindings_Nil :: T_RecordExpressionBindings
+sem_RecordExpressionBindings_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 468, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 637, column 40)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RecordPatternBinding ----------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.DataFieldPatExpr -> EH.DataFieldPatExpr
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Binding:
+         child range          : {Range}
+         child name           : {Name}
+         child pattern        : Pattern 
+         visit 0:
+            local fldrefname  : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+      alternative Pun:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idDefOccGam : _
+            local fldrefname  : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local refname     : _
+            local idOccDef    : _
+            local errSq       : _
+            local pp          : _
+-}
+-- cata
+sem_RecordPatternBinding :: RecordPatternBinding ->
+                            T_RecordPatternBinding
+sem_RecordPatternBinding (RecordPatternBinding_Binding _range _name _pattern) =
+    (sem_RecordPatternBinding_Binding _range _name (sem_Pattern _pattern))
+sem_RecordPatternBinding (RecordPatternBinding_Pun _range _name) =
+    (sem_RecordPatternBinding_Pun _range _name)
+-- semantic domain
+type T_RecordPatternBinding = FixityGam ->
+                              UID ->
+                              IdDefOccGam ->
+                              HsName ->
+                              NmLev ->
+                              EHCOpts ->
+                              PatchEhNmInInstance ->
+                              ([HsName]) ->
+                              (TraceOn -> [PP_Doc] -> TrPP) ->
+                              ( (EH.DataFieldPatExpr -> EH.DataFieldPatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RecordPatternBinding_Binding :: Range ->
+                                    Name ->
+                                    T_Pattern ->
+                                    T_RecordPatternBinding
+sem_RecordPatternBinding_Binding range_ name_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 689, column 29)
+              (_fldrefname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 692, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_patternIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 112, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _patternIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 305, column 9)
+              _pp =
+                  name_ >|< "=" >|< _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 709, column 9)
+              _lhsOeh =
+                  \df -> rngLift range_ EH.DataFieldPatExpr_Ext df _fldrefname _patternIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RecordPatternBinding_Pun :: Range ->
+                                Name ->
+                                T_RecordPatternBinding
+sem_RecordPatternBinding_Pun range_ name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 295, column 9)
+              _idDefOccGam =
+                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 689, column 29)
+              (_fldrefname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 92, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 182, column 9)
+              _idOccDef =
+                  IdOcc _refname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 114, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 307, column 9)
+              _pp =
+                  pp name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 711, column 9)
+              _lhsOeh =
+                  \df -> rngLift range_ EH.DataFieldPatExpr_Ext df _fldrefname (rngLift range_ EH.PatExpr_Var _refname)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _idDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RecordPatternBindings ---------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.DataFieldPatExpr -> EH.DataFieldPatExpr]
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : RecordPatternBinding 
+         child tl             : RecordPatternBindings 
+      alternative Nil:
+-}
+-- cata
+sem_RecordPatternBindings :: RecordPatternBindings ->
+                             T_RecordPatternBindings
+sem_RecordPatternBindings list =
+    (Prelude.foldr sem_RecordPatternBindings_Cons sem_RecordPatternBindings_Nil (Prelude.map sem_RecordPatternBinding list))
+-- semantic domain
+type T_RecordPatternBindings = FixityGam ->
+                               UID ->
+                               IdDefOccGam ->
+                               HsName ->
+                               NmLev ->
+                               EHCOpts ->
+                               PatchEhNmInInstance ->
+                               ([HsName]) ->
+                               (TraceOn -> [PP_Doc] -> TrPP) ->
+                               ( ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RecordPatternBindings_Cons :: T_RecordPatternBinding ->
+                                  T_RecordPatternBindings ->
+                                  T_RecordPatternBindings
+sem_RecordPatternBindings_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 472, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 703, column 37)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RecordPatternBindings_Nil :: T_RecordPatternBindings
+sem_RecordPatternBindings_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 474, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 703, column 37)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RightHandSide -----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         mustBeMono           : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         sepPP                : PP_Doc
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.Expr
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Expression:
+         child range          : {Range}
+         child expression     : Expression 
+         child where          : MaybeDeclarations 
+         visit 0:
+            local nameDeclCxt : _
+            local idGam       : _
+            local sccOrder    : _
+            local mkSccLet    : _
+            local errReorder  : _
+            local nmLev       : _
+            local errSq       : _
+            local pp          : _
+            local fixityGam   : _
+      alternative Guarded:
+         child range          : {Range}
+         child guardedexpressions : GuardedExpressions 
+         child where          : MaybeDeclarations 
+         visit 0:
+            local nameDeclCxt : _
+            local idGam       : _
+            local sccOrder    : _
+            local mkSccLet    : _
+            local errReorder  : _
+            local nmLev       : _
+            local pp          : _
+            local fixityGam   : _
+-}
+-- cata
+sem_RightHandSide :: RightHandSide ->
+                     T_RightHandSide
+sem_RightHandSide (RightHandSide_Expression _range _expression _where) =
+    (sem_RightHandSide_Expression _range (sem_Expression _expression) (sem_MaybeDeclarations _where))
+sem_RightHandSide (RightHandSide_Guarded _range _guardedexpressions _where) =
+    (sem_RightHandSide_Guarded _range (sem_GuardedExpressions _guardedexpressions) (sem_MaybeDeclarations _where))
+-- semantic domain
+type T_RightHandSide = UID ->
+                       FixityGam ->
+                       UID ->
+                       (Map.Map HsName [(HsName,HsName)]) ->
+                       IdDefOccGam ->
+                       HsName ->
+                       Bool ->
+                       NmLev ->
+                       EHCOpts ->
+                       PatchEhNmInInstance ->
+                       (Set.Set Pragma.Pragma) ->
+                       PP_Doc ->
+                       ([HsName]) ->
+                       (TraceOn -> [PP_Doc] -> TrPP) ->
+                       ( (EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RightHandSide_Expression :: Range ->
+                                T_Expression ->
+                                T_MaybeDeclarations ->
+                                T_RightHandSide
+sem_RightHandSide_Expression range_ expression_ where_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsImustBeMono
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsIsepPP
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _whereOcaseId :: UID
+              _whereOfixityGam :: FixityGam
+              _whereOgUniq :: UID
+              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _whereOidGam :: IdDefOccGam
+              _whereOmoduleNm :: HsName
+              _whereOnameDeclCxt :: NameDeclCxt
+              _whereOnmLev :: NmLev
+              _whereOopts :: EHCOpts
+              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
+              _whereOpragmas :: (Set.Set Pragma.Pragma)
+              _whereOtopInstanceNmL :: ([HsName])
+              _whereOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              _whereIeh :: (Maybe [EH.Decl])
+              _whereIerrSq :: ErrSq
+              _whereIgUniq :: UID
+              _whereIgathFixityGam :: FixityGam
+              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
+              _whereIidDefOccGam :: IdDefOccGam
+              _whereIidDpdMp :: IdDpdMp
+              _whereIidInClassTySigDefOccGam :: IdDefOccGam
+              _whereIidInInstanceValDefOccGam :: IdDefOccGam
+              _whereIidOccDefs :: ([IdOcc])
+              _whereIidUseOccGam :: IdUseOccGam
+              _whereIneedsError :: Bool
+              _whereIpp :: PP_Doc
+              _whereIppWrap :: (PP_Doc -> PP_Doc)
+              _whereItopInstanceNmL :: ([HsName])
+              _whereItrpp :: TrPP
+              _whereIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 36, column 9)
+              _nameDeclCxt =
+                  NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 461, column 9)
+              _idGam =
+                  gamUnion _whereIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1079, column 9)
+              _sccOrder =
+                  idDpdMp2SccOrder _whereIidDefOccGam _whereIidDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1212, column 29)
+              (_mkSccLet,_,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ False _whereIidDefOccGam (Just _sccOrder)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 69, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 36, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errReorder, _expressionIerrSq, _whereIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 327, column 9)
+              _pp =
+                  _lhsIsepPP >#< _expressionIpp >-< _whereIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 31, column 9)
+              _fixityGam =
+                  _whereIgathFixityGam `gamUnion` _lhsIfixityGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 762, column 9)
+              _lhsOeh =
+                  _mkSccLet
+                  $ ehMkEnforceMono range_ _lhsImustBeMono
+                    _expressionIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam `gamAddGam` _whereIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap . _whereIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp >< _whereItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam `gamUnion` _whereIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _whereIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _whereItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _expressionOfixityGam =
+                  _fixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _expressionOidGam =
+                  _idGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _expressionOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _whereOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _whereOfixityGam =
+                  _fixityGam
+              -- copy rule (chain)
+              _whereOgUniq =
+                  _expressionIgUniq
+              -- copy rule (down)
+              _whereOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _whereOidGam =
+                  _idGam
+              -- copy rule (down)
+              _whereOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _whereOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _whereOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _whereOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _whereOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _whereOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _whereOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _whereOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidInClassTySigDefOccGam,_whereIidInInstanceValDefOccGam,_whereIidOccDefs,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereItrpp,_whereIundefOccGam) =
+                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnameDeclCxt _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL _whereOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RightHandSide_Guarded :: Range ->
+                             T_GuardedExpressions ->
+                             T_MaybeDeclarations ->
+                             T_RightHandSide
+sem_RightHandSide_Guarded range_ guardedexpressions_ where_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsImustBeMono
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsIsepPP
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _guardedexpressionsOcaseId :: UID
+              _guardedexpressionsOfixityGam :: FixityGam
+              _guardedexpressionsOgUniq :: UID
+              _guardedexpressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _guardedexpressionsOidGam :: IdDefOccGam
+              _guardedexpressionsOmoduleNm :: HsName
+              _guardedexpressionsOmustBeMono :: Bool
+              _guardedexpressionsOnmLev :: NmLev
+              _guardedexpressionsOopts :: EHCOpts
+              _guardedexpressionsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _guardedexpressionsOpragmas :: (Set.Set Pragma.Pragma)
+              _guardedexpressionsOsepPP :: PP_Doc
+              _guardedexpressionsOtopInstanceNmL :: ([HsName])
+              _guardedexpressionsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _whereOcaseId :: UID
+              _whereOfixityGam :: FixityGam
+              _whereOgUniq :: UID
+              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _whereOidGam :: IdDefOccGam
+              _whereOmoduleNm :: HsName
+              _whereOnameDeclCxt :: NameDeclCxt
+              _whereOnmLev :: NmLev
+              _whereOopts :: EHCOpts
+              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
+              _whereOpragmas :: (Set.Set Pragma.Pragma)
+              _whereOtopInstanceNmL :: ([HsName])
+              _whereOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _guardedexpressionsIeh :: ([UIDS -> EH.Expr -> EH.Expr])
+              _guardedexpressionsIerrSq :: ErrSq
+              _guardedexpressionsIgUniq :: UID
+              _guardedexpressionsIidUseOccGam :: IdUseOccGam
+              _guardedexpressionsIpp :: PP_Doc
+              _guardedexpressionsIppWrap :: (PP_Doc -> PP_Doc)
+              _guardedexpressionsItopInstanceNmL :: ([HsName])
+              _guardedexpressionsItrpp :: TrPP
+              _guardedexpressionsIundefOccGam :: IdUseOccGam
+              _whereIeh :: (Maybe [EH.Decl])
+              _whereIerrSq :: ErrSq
+              _whereIgUniq :: UID
+              _whereIgathFixityGam :: FixityGam
+              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
+              _whereIidDefOccGam :: IdDefOccGam
+              _whereIidDpdMp :: IdDpdMp
+              _whereIidInClassTySigDefOccGam :: IdDefOccGam
+              _whereIidInInstanceValDefOccGam :: IdDefOccGam
+              _whereIidOccDefs :: ([IdOcc])
+              _whereIidUseOccGam :: IdUseOccGam
+              _whereIneedsError :: Bool
+              _whereIpp :: PP_Doc
+              _whereIppWrap :: (PP_Doc -> PP_Doc)
+              _whereItopInstanceNmL :: ([HsName])
+              _whereItrpp :: TrPP
+              _whereIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 36, column 9)
+              _nameDeclCxt =
+                  NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 461, column 9)
+              _idGam =
+                  gamUnion _whereIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1079, column 9)
+              _sccOrder =
+                  idDpdMp2SccOrder _whereIidDefOccGam _whereIidDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1212, column 29)
+              (_mkSccLet,_,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ False _whereIidDefOccGam (Just _sccOrder)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 69, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 329, column 9)
+              _pp =
+                  _guardedexpressionsIpp >-< _whereIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 31, column 9)
+              _fixityGam =
+                  _whereIgathFixityGam `gamUnion` _lhsIfixityGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 766, column 9)
+              _lhsOeh =
+                  _mkSccLet (foldr (\(mk,failS) e -> mk failS e)
+                                   (rngLift range_ EH.Expr_CaseAltFail _lhsIcaseId)
+                                   (zip _guardedexpressionsIeh (Set.singleton _lhsIcaseId : repeat Set.empty)))
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _guardedexpressionsIerrSq `Seq.union` _whereIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _guardedexpressionsIidUseOccGam `gamAddGam` _whereIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _guardedexpressionsIppWrap . _whereIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _guardedexpressionsItrpp >< _whereItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _guardedexpressionsIundefOccGam `gamUnion` _whereIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _whereIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _whereItopInstanceNmL
+              -- copy rule (down)
+              _guardedexpressionsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _guardedexpressionsOfixityGam =
+                  _fixityGam
+              -- copy rule (down)
+              _guardedexpressionsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _guardedexpressionsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _guardedexpressionsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _guardedexpressionsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _guardedexpressionsOmustBeMono =
+                  _lhsImustBeMono
+              -- copy rule (from local)
+              _guardedexpressionsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _guardedexpressionsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _guardedexpressionsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _guardedexpressionsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _guardedexpressionsOsepPP =
+                  _lhsIsepPP
+              -- copy rule (down)
+              _guardedexpressionsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _guardedexpressionsOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _whereOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _whereOfixityGam =
+                  _fixityGam
+              -- copy rule (chain)
+              _whereOgUniq =
+                  _guardedexpressionsIgUniq
+              -- copy rule (down)
+              _whereOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _whereOidGam =
+                  _idGam
+              -- copy rule (down)
+              _whereOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _whereOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _whereOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _whereOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _whereOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _whereOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _whereOtopInstanceNmL =
+                  _guardedexpressionsItopInstanceNmL
+              -- copy rule (down)
+              _whereOtr =
+                  _lhsItr
+              ( _guardedexpressionsIeh,_guardedexpressionsIerrSq,_guardedexpressionsIgUniq,_guardedexpressionsIidUseOccGam,_guardedexpressionsIpp,_guardedexpressionsIppWrap,_guardedexpressionsItopInstanceNmL,_guardedexpressionsItrpp,_guardedexpressionsIundefOccGam) =
+                  guardedexpressions_ _guardedexpressionsOcaseId _guardedexpressionsOfixityGam _guardedexpressionsOgUniq _guardedexpressionsOgenerDerivMp _guardedexpressionsOidGam _guardedexpressionsOmoduleNm _guardedexpressionsOmustBeMono _guardedexpressionsOnmLev _guardedexpressionsOopts _guardedexpressionsOpatchEhNmInInstance _guardedexpressionsOpragmas _guardedexpressionsOsepPP _guardedexpressionsOtopInstanceNmL _guardedexpressionsOtr
+              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidInClassTySigDefOccGam,_whereIidInInstanceValDefOccGam,_whereIidOccDefs,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereItrpp,_whereIundefOccGam) =
+                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnameDeclCxt _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL _whereOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RowRecordExpressionUpdate -----------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.Expr -> EH.Expr
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Update:
+         child range          : {Range}
+         child name           : {Name}
+         child expression     : Expression 
+         visit 0:
+            local pp          : _
+      alternative Extends:
+         child range          : {Range}
+         child name           : {MaybeName}
+         child expression     : Expression 
+         visit 0:
+            local pp          : _
+-}
+-- cata
+sem_RowRecordExpressionUpdate :: RowRecordExpressionUpdate ->
+                                 T_RowRecordExpressionUpdate
+sem_RowRecordExpressionUpdate (RowRecordExpressionUpdate_Update _range _name _expression) =
+    (sem_RowRecordExpressionUpdate_Update _range _name (sem_Expression _expression))
+sem_RowRecordExpressionUpdate (RowRecordExpressionUpdate_Extends _range _name _expression) =
+    (sem_RowRecordExpressionUpdate_Extends _range _name (sem_Expression _expression))
+-- semantic domain
+type T_RowRecordExpressionUpdate = UID ->
+                                   FixityGam ->
+                                   UID ->
+                                   (Map.Map HsName [(HsName,HsName)]) ->
+                                   IdDefOccGam ->
+                                   HsName ->
+                                   NmLev ->
+                                   EHCOpts ->
+                                   PatchEhNmInInstance ->
+                                   (Set.Set Pragma.Pragma) ->
+                                   ([HsName]) ->
+                                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                                   ( (EH.Expr -> EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RowRecordExpressionUpdate_Update :: Range ->
+                                        Name ->
+                                        T_Expression ->
+                                        T_RowRecordExpressionUpdate
+sem_RowRecordExpressionUpdate_Update range_ name_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 291, column 9)
+              _pp =
+                  name_ >|< ":=" >|< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 685, column 9)
+              _lhsOeh =
+                  ehRowRecExprUpd range_ name_ (rngLift range_ EH.RecExpr_Upd) _expressionIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RowRecordExpressionUpdate_Extends :: Range ->
+                                         MaybeName ->
+                                         T_Expression ->
+                                         T_RowRecordExpressionUpdate
+sem_RowRecordExpressionUpdate_Extends range_ name_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.Expr -> EH.Expr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 289, column 9)
+              _pp =
+                  name_ >|< "=" >|< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 683, column 9)
+              _lhsOeh =
+                  ehRowRecExprUpd range_ name_ (rngLift range_ EH.RecExpr_Ext) _expressionIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _expressionIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _expressionIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RowRecordExpressionUpdates ----------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.Expr -> EH.Expr]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : RowRecordExpressionUpdate 
+         child tl             : RowRecordExpressionUpdates 
+      alternative Nil:
+-}
+-- cata
+sem_RowRecordExpressionUpdates :: RowRecordExpressionUpdates ->
+                                  T_RowRecordExpressionUpdates
+sem_RowRecordExpressionUpdates list =
+    (Prelude.foldr sem_RowRecordExpressionUpdates_Cons sem_RowRecordExpressionUpdates_Nil (Prelude.map sem_RowRecordExpressionUpdate list))
+-- semantic domain
+type T_RowRecordExpressionUpdates = UID ->
+                                    FixityGam ->
+                                    UID ->
+                                    (Map.Map HsName [(HsName,HsName)]) ->
+                                    IdDefOccGam ->
+                                    HsName ->
+                                    NmLev ->
+                                    EHCOpts ->
+                                    PatchEhNmInInstance ->
+                                    (Set.Set Pragma.Pragma) ->
+                                    ([HsName]) ->
+                                    (TraceOn -> [PP_Doc] -> TrPP) ->
+                                    ( ([EH.Expr -> EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RowRecordExpressionUpdates_Cons :: T_RowRecordExpressionUpdate ->
+                                       T_RowRecordExpressionUpdates ->
+                                       T_RowRecordExpressionUpdates
+sem_RowRecordExpressionUpdates_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.Expr -> EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.Expr -> EH.Expr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.Expr -> EH.Expr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 484, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 677, column 42)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RowRecordExpressionUpdates_Nil :: T_RowRecordExpressionUpdates
+sem_RowRecordExpressionUpdates_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.Expr -> EH.Expr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 486, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 677, column 42)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RowRecordPatternBinding -------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.PatExpr -> EH.PatExpr
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Binding:
+         child range          : {Range}
+         child name           : {MaybeName}
+         child pattern        : Pattern 
+         visit 0:
+            local pp          : _
+-}
+-- cata
+sem_RowRecordPatternBinding :: RowRecordPatternBinding ->
+                               T_RowRecordPatternBinding
+sem_RowRecordPatternBinding (RowRecordPatternBinding_Binding _range _name _pattern) =
+    (sem_RowRecordPatternBinding_Binding _range _name (sem_Pattern _pattern))
+-- semantic domain
+type T_RowRecordPatternBinding = FixityGam ->
+                                 UID ->
+                                 IdDefOccGam ->
+                                 HsName ->
+                                 NmLev ->
+                                 EHCOpts ->
+                                 PatchEhNmInInstance ->
+                                 ([HsName]) ->
+                                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                                 ( (EH.PatExpr -> EH.PatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RowRecordPatternBinding_Binding :: Range ->
+                                       MaybeName ->
+                                       T_Pattern ->
+                                       T_RowRecordPatternBinding
+sem_RowRecordPatternBinding_Binding range_ name_ pattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.PatExpr -> EH.PatExpr)
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 295, column 9)
+              _pp =
+                  case name_ of
+                    Just n  -> n >|< "=" >|< _patternIpp
+                    Nothing -> _patternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 693, column 9)
+              _lhsOeh =
+                  ehRowRecPatExprUpd range_ name_ (rngLift range_ EH.RecPatExpr_Ext) _patternIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _patternIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _patternIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RowRecordPatternBindings ------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.PatExpr -> EH.PatExpr]
+         errSq                : ErrSq
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : RowRecordPatternBinding 
+         child tl             : RowRecordPatternBindings 
+      alternative Nil:
+-}
+-- cata
+sem_RowRecordPatternBindings :: RowRecordPatternBindings ->
+                                T_RowRecordPatternBindings
+sem_RowRecordPatternBindings list =
+    (Prelude.foldr sem_RowRecordPatternBindings_Cons sem_RowRecordPatternBindings_Nil (Prelude.map sem_RowRecordPatternBinding list))
+-- semantic domain
+type T_RowRecordPatternBindings = FixityGam ->
+                                  UID ->
+                                  IdDefOccGam ->
+                                  HsName ->
+                                  NmLev ->
+                                  EHCOpts ->
+                                  PatchEhNmInInstance ->
+                                  ([HsName]) ->
+                                  (TraceOn -> [PP_Doc] -> TrPP) ->
+                                  ( ([EH.PatExpr -> EH.PatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RowRecordPatternBindings_Cons :: T_RowRecordPatternBinding ->
+                                     T_RowRecordPatternBindings ->
+                                     T_RowRecordPatternBindings
+sem_RowRecordPatternBindings_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.PatExpr -> EH.PatExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.PatExpr -> EH.PatExpr)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidDefOccGam :: IdDefOccGam
+              _hdIidOccDefs :: ([IdOcc])
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.PatExpr -> EH.PatExpr])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidDefOccGam :: IdDefOccGam
+              _tlIidOccDefs :: ([IdOcc])
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 490, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 687, column 40)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _hdIidOccDefs ++ _tlIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RowRecordPatternBindings_Nil :: T_RowRecordPatternBindings
+sem_RowRecordPatternBindings_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.PatExpr -> EH.PatExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 492, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 687, column 40)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RowTypeUpdate -----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         doGenVarWild         : Bool
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isAsPred             : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.TyExpr -> EH.TyExpr
+         ehMbAsPrL            : [Maybe EH.PrExpr]
+         ehMbAsTyPrL          : [Maybe EH.TyExpr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Extends:
+         child range          : {Range}
+         child name           : {MaybeName}
+         child type           : Type 
+         visit 0:
+            local pp          : _
+            local ehMbAsPrL   : _
+-}
+-- cata
+sem_RowTypeUpdate :: RowTypeUpdate ->
+                     T_RowTypeUpdate
+sem_RowTypeUpdate (RowTypeUpdate_Extends _range _name _type) =
+    (sem_RowTypeUpdate_Extends _range _name (sem_Type _type))
+-- semantic domain
+type T_RowTypeUpdate = Bool ->
+                       FixityGam ->
+                       UID ->
+                       IdDefOccGam ->
+                       Bool ->
+                       NmLev ->
+                       EHCOpts ->
+                       PatchEhNmInInstance ->
+                       ([HsName]) ->
+                       (TraceOn -> [PP_Doc] -> TrPP) ->
+                       ( (EH.TyExpr -> EH.TyExpr),([Maybe EH.PrExpr]),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RowTypeUpdate_Extends :: Range ->
+                             MaybeName ->
+                             T_Type ->
+                             T_RowTypeUpdate
+sem_RowTypeUpdate_Extends range_ name_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: (EH.TyExpr -> EH.TyExpr)
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 301, column 9)
+              _pp =
+                  name_ >|< "::" >|< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 380, column 9)
+              _ehMbAsPrL =
+                  [_typeIehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 701, column 9)
+              _lhsOeh =
+                  ehRowRowTyExprUpd range_ name_ (rngLift range_ EH.RowTyExpr_Ext) _typeIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _typeIehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _typeOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- RowTypeUpdates ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         doGenVarWild         : Bool
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isAsPred             : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.TyExpr -> EH.TyExpr]
+         ehMbAsPrL            : [Maybe EH.PrExpr]
+         ehMbAsTyPrL          : [Maybe EH.TyExpr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : RowTypeUpdate 
+         child tl             : RowTypeUpdates 
+      alternative Nil:
+-}
+-- cata
+sem_RowTypeUpdates :: RowTypeUpdates ->
+                      T_RowTypeUpdates
+sem_RowTypeUpdates list =
+    (Prelude.foldr sem_RowTypeUpdates_Cons sem_RowTypeUpdates_Nil (Prelude.map sem_RowTypeUpdate list))
+-- semantic domain
+type T_RowTypeUpdates = Bool ->
+                        FixityGam ->
+                        UID ->
+                        IdDefOccGam ->
+                        Bool ->
+                        NmLev ->
+                        EHCOpts ->
+                        PatchEhNmInInstance ->
+                        ([HsName]) ->
+                        (TraceOn -> [PP_Doc] -> TrPP) ->
+                        ( ([EH.TyExpr -> EH.TyExpr]),([Maybe EH.PrExpr]),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_RowTypeUpdates_Cons :: T_RowTypeUpdate ->
+                           T_RowTypeUpdates ->
+                           T_RowTypeUpdates
+sem_RowTypeUpdates_Cons hd_ tl_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.TyExpr -> EH.TyExpr])
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOdoGenVarWild :: Bool
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOisAsPred :: Bool
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOdoGenVarWild :: Bool
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOisAsPred :: Bool
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.TyExpr -> EH.TyExpr)
+              _hdIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _hdIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _hdIerrSq :: ErrSq
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.TyExpr -> EH.TyExpr])
+              _tlIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _tlIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _tlIerrSq :: ErrSq
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 460, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 695, column 30)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _hdIehMbAsPrL ++ _tlIehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _hdIehMbAsTyPrL ++ _tlIehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIehMbAsPrL,_hdIehMbAsTyPrL,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOdoGenVarWild _hdOfixityGam _hdOgUniq _hdOidGam _hdOisAsPred _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIehMbAsPrL,_tlIehMbAsTyPrL,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOdoGenVarWild _tlOfixityGam _tlOgUniq _tlOidGam _tlOisAsPred _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_RowTypeUpdates_Nil :: T_RowTypeUpdates
+sem_RowTypeUpdates_Nil =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.TyExpr -> EH.TyExpr])
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 462, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 695, column 30)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Statement ---------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         moduleNm             : HsName
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : (EH.Expr,EH.Expr -> EH.Expr)
+         errSq                : ErrSq
+         gathFixityGam        : FixityGam
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Expression:
+         child range          : {Range}
+         child expression     : Expression 
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+      alternative Let:
+         child range          : {Range}
+         child declarations   : Declarations 
+         visit 0:
+            local nameDeclCxt : _
+            local idGam       : _
+            local sccOrder    : _
+            local mkSccLet    : _
+            local errReorder  : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+      alternative Generator:
+         child range          : {Range}
+         child pattern        : Pattern 
+         child expression     : Expression 
+         visit 0:
+            local refnames    : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+      alternative Empty:
+         child range          : {Range}
+-}
+-- cata
+sem_Statement :: Statement ->
+                 T_Statement
+sem_Statement (Statement_Expression _range _expression) =
+    (sem_Statement_Expression _range (sem_Expression _expression))
+sem_Statement (Statement_Let _range _declarations) =
+    (sem_Statement_Let _range (sem_Declarations _declarations))
+sem_Statement (Statement_Generator _range _pattern _expression) =
+    (sem_Statement_Generator _range (sem_Pattern _pattern) (sem_Expression _expression))
+sem_Statement (Statement_Empty _range) =
+    (sem_Statement_Empty _range)
+-- semantic domain
+type T_Statement = UID ->
+                   FixityGam ->
+                   UID ->
+                   (Map.Map HsName [(HsName,HsName)]) ->
+                   IdDefOccGam ->
+                   HsName ->
+                   NmLev ->
+                   EHCOpts ->
+                   PatchEhNmInInstance ->
+                   (Set.Set Pragma.Pragma) ->
+                   ([HsName]) ->
+                   (TraceOn -> [PP_Doc] -> TrPP) ->
+                   ( ((EH.Expr,EH.Expr -> EH.Expr)),ErrSq,UID,FixityGam,IdDefOccGam,IdUseOccGam,NmLev,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Statement_Expression :: Range ->
+                            T_Expression ->
+                            T_Statement
+sem_Statement_Expression range_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnMonadSeq] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 730, column 9)
+              _lhsOidUseOccGam =
+                  _idUseOccGam `gamUnion` _expressionIidUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 120, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 590, column 9)
+              _lhsOeh =
+                  (_expressionIeh,\e -> ehExpVarApp range_ _refname [_expressionIeh,e])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _expressionIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (chain)
+              _lhsOidGam =
+                  _lhsIidGam
+              -- copy rule (chain)
+              _lhsOnmLev =
+                  _lhsInmLev
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _expressionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _expressionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _expressionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Statement_Let :: Range ->
+                     T_Declarations ->
+                     T_Statement
+sem_Statement_Let range_ declarations_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              _declarationsOcaseId :: UID
+              _declarationsOfixityGam :: FixityGam
+              _declarationsOgUniq :: UID
+              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _declarationsOidGam :: IdDefOccGam
+              _declarationsOmoduleNm :: HsName
+              _declarationsOnameDeclCxt :: NameDeclCxt
+              _declarationsOnmLev :: NmLev
+              _declarationsOopts :: EHCOpts
+              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
+              _declarationsOtopInstanceNmL :: ([HsName])
+              _declarationsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _declarationsIeh :: ([EH.Decl])
+              _declarationsIerrSq :: ErrSq
+              _declarationsIgUniq :: UID
+              _declarationsIgathFixityGam :: FixityGam
+              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _declarationsIidDefOccGam :: IdDefOccGam
+              _declarationsIidDpdMp :: IdDpdMp
+              _declarationsIidInClassTySigDefOccGam :: IdDefOccGam
+              _declarationsIidInInstanceValDefOccGam :: IdDefOccGam
+              _declarationsIidOccDefs :: ([IdOcc])
+              _declarationsIidUseOccGam :: IdUseOccGam
+              _declarationsIneedsError :: Bool
+              _declarationsIpp :: PP_Doc
+              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
+              _declarationsItopInstanceNmL :: ([HsName])
+              _declarationsItrpp :: TrPP
+              _declarationsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDeclCxt.ag"(line 31, column 9)
+              _nameDeclCxt =
+                  NameDeclCxt_Plain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 475, column 9)
+              _idGam =
+                  gamUnion _declarationsIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1087, column 9)
+              _sccOrder =
+                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1227, column 29)
+              (_mkSccLet,_,_errReorder) =
+                  mkIdOccSccEH _lhsIopts range_ False _declarationsIidDefOccGam (Just _sccOrder)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 81, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 137, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 118, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errReorder, _declarationsIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 263, column 9)
+              _pp =
+                  "let" >#< _declarationsIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 592, column 9)
+              _lhsOeh =
+                  (EH.mkUnit range_,_mkSccLet)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  _declarationsIgathFixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _declarationsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _declarationsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _declarationsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _declarationsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _declarationsIgUniq
+              -- copy rule (from local)
+              _lhsOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _lhsOnmLev =
+                  _nmLev
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _declarationsItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _declarationsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _declarationsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _declarationsOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (from local)
+              _declarationsOidGam =
+                  _idGam
+              -- copy rule (down)
+              _declarationsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _declarationsOnameDeclCxt =
+                  _nameDeclCxt
+              -- copy rule (from local)
+              _declarationsOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _declarationsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _declarationsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _declarationsOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _declarationsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _declarationsOtr =
+                  _lhsItr
+              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidInClassTySigDefOccGam,_declarationsIidInInstanceValDefOccGam,_declarationsIidOccDefs,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsItrpp,_declarationsIundefOccGam) =
+                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnameDeclCxt _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL _declarationsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Statement_Generator :: Range ->
+                           T_Pattern ->
+                           T_Expression ->
+                           T_Statement
+sem_Statement_Generator range_ pattern_ expression_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOidGam :: IdDefOccGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternOfixityGam :: FixityGam
+              _patternOgUniq :: UID
+              _patternOidGam :: IdDefOccGam
+              _patternOmoduleNm :: HsName
+              _patternOnmLev :: NmLev
+              _patternOopts :: EHCOpts
+              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternOtopInstanceNmL :: ([HsName])
+              _patternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _expressionOcaseId :: UID
+              _expressionOfixityGam :: FixityGam
+              _expressionOgUniq :: UID
+              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _expressionOidGam :: IdDefOccGam
+              _expressionOmoduleNm :: HsName
+              _expressionOnmLev :: NmLev
+              _expressionOopts :: EHCOpts
+              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _expressionOpragmas :: (Set.Set Pragma.Pragma)
+              _expressionOtopInstanceNmL :: ([HsName])
+              _expressionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternIeh :: (EH.PatExpr)
+              _patternIerrSq :: ErrSq
+              _patternIgUniq :: UID
+              _patternIidDefOccGam :: IdDefOccGam
+              _patternIidOccDefs :: ([IdOcc])
+              _patternIidUseOccGam :: IdUseOccGam
+              _patternIisVar :: Bool
+              _patternImbTopRefname :: (Maybe HsName)
+              _patternIpp :: PP_Doc
+              _patternIppWrap :: (PP_Doc -> PP_Doc)
+              _patternItopInstanceNmL :: ([HsName])
+              _patternItrpp :: TrPP
+              _patternIundefOccGam :: IdUseOccGam
+              _expressionIconNm :: Name
+              _expressionIeh :: (EH.Expr)
+              _expressionIerrSq :: ErrSq
+              _expressionIgUniq :: UID
+              _expressionIidUseOccGam :: IdUseOccGam
+              _expressionIopChain :: (OpChain EH.Expr)
+              _expressionIoperatorName :: MaybeName
+              _expressionIpp :: PP_Doc
+              _expressionIppWrap :: (PP_Doc -> PP_Doc)
+              _expressionItopInstanceNmL :: ([HsName])
+              _expressionItrpp :: TrPP
+              _expressionIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 477, column 9)
+              _lhsOidGam =
+                  gamUnion _patternIidDefOccGam _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 732, column 29)
+              (_,_refnames,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [hsnMonadBind,hsnMonadFail] IdOcc_Val IdAsp_Val_Var range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 734, column 9)
+              _lhsOidUseOccGam =
+                  gamUnions [_idUseOccGam,_patternIidUseOccGam,_expressionIidUseOccGam]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 81, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 135, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _patternIidDefOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 122, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errIdUse, _patternIerrSq, _expressionIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 265, column 9)
+              _pp =
+                  _patternIpp >#< "<-" >#< _expressionIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 594, column 9)
+              _lhsOeh =
+                  (_expressionIeh
+                  ,ehGenerator
+                     range_ _patternIeh
+                     (\e -> ehExpVarApp range_ (_refnames !! 0) [_expressionIeh,e])
+                     (EH.mkError' (_refnames !! 1) range_ "monadic bind")
+                  )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternIppWrap . _expressionIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternItrpp >< _expressionItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternIundefOccGam `gamUnion` _expressionIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _expressionIgUniq
+              -- copy rule (from local)
+              _lhsOnmLev =
+                  _nmLev
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _expressionItopInstanceNmL
+              -- copy rule (down)
+              _patternOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _patternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _patternOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _patternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _expressionOcaseId =
+                  _lhsIcaseId
+              -- copy rule (down)
+              _expressionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _expressionOgUniq =
+                  _patternIgUniq
+              -- copy rule (down)
+              _expressionOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _expressionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _expressionOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (from local)
+              _expressionOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _expressionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _expressionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _expressionOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _expressionOtopInstanceNmL =
+                  _patternItopInstanceNmL
+              -- copy rule (down)
+              _expressionOtr =
+                  _lhsItr
+              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternItrpp,_patternIundefOccGam) =
+                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL _patternOtr
+              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionItrpp,_expressionIundefOccGam) =
+                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL _expressionOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Statement_Empty :: Range ->
+                       T_Statement
+sem_Statement_Empty range_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
+              _lhsOerrSq :: ErrSq
+              _lhsOgathFixityGam :: FixityGam
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOidGam :: IdDefOccGam
+              _lhsOnmLev :: NmLev
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 601, column 9)
+              _lhsOeh =
+                  (undefined,id)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
+              _lhsOgathFixityGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOidGam =
+                  _lhsIidGam
+              -- copy rule (chain)
+              _lhsOnmLev =
+                  _lhsInmLev
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Statements --------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         caseId               : UID
+         fixityGam            : FixityGam
+         generDerivMp         : Map.Map HsName [(HsName,HsName)]
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         pragmas              : Set.Set Pragma.Pragma
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [(EH.Expr,EH.Expr -> EH.Expr)]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Statement 
+         child tl             : Statements 
+         visit 0:
+            local fixityGam   : _
+      alternative Nil:
+-}
+-- cata
+sem_Statements :: Statements ->
+                  T_Statements
+sem_Statements list =
+    (Prelude.foldr sem_Statements_Cons sem_Statements_Nil (Prelude.map sem_Statement list))
+-- semantic domain
+type T_Statements = UID ->
+                    FixityGam ->
+                    UID ->
+                    (Map.Map HsName [(HsName,HsName)]) ->
+                    IdDefOccGam ->
+                    HsName ->
+                    NmLev ->
+                    EHCOpts ->
+                    PatchEhNmInInstance ->
+                    (Set.Set Pragma.Pragma) ->
+                    ([HsName]) ->
+                    (TraceOn -> [PP_Doc] -> TrPP) ->
+                    ( ([(EH.Expr,EH.Expr -> EH.Expr)]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Statements_Cons :: T_Statement ->
+                       T_Statements ->
+                       T_Statements
+sem_Statements_Cons hd_ tl_ =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOcaseId :: UID
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOpragmas :: (Set.Set Pragma.Pragma)
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOcaseId :: UID
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOpragmas :: (Set.Set Pragma.Pragma)
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: ((EH.Expr,EH.Expr -> EH.Expr))
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIgathFixityGam :: FixityGam
+              _hdIidGam :: IdDefOccGam
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdInmLev :: NmLev
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 500, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 39, column 9)
+              _fixityGam =
+                  _hdIgathFixityGam `gamUnion` _lhsIfixityGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 584, column 26)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _hdOfixityGam =
+                  _fixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOpragmas =
+                  _lhsIpragmas
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOcaseId =
+                  _lhsIcaseId
+              -- copy rule (from local)
+              _tlOfixityGam =
+                  _fixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOgenerDerivMp =
+                  _lhsIgenerDerivMp
+              -- copy rule (chain)
+              _tlOidGam =
+                  _hdIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (chain)
+              _tlOnmLev =
+                  _hdInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOpragmas =
+                  _lhsIpragmas
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidGam,_hdIidUseOccGam,_hdInmLev,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdIundefOccGam) =
+                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Statements_Nil :: T_Statements
+sem_Statements_Nil =
+    (\ _lhsIcaseId
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIgenerDerivMp
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsIpragmas
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 502, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 584, column 26)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Strings -----------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [String]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : {String}
+         child tl             : Strings 
+      alternative Nil:
+-}
+-- cata
+sem_Strings :: Strings ->
+               T_Strings
+sem_Strings list =
+    (Prelude.foldr sem_Strings_Cons sem_Strings_Nil list)
+-- semantic domain
+type T_Strings = UID ->
+                 IdDefOccGam ->
+                 NmLev ->
+                 EHCOpts ->
+                 PatchEhNmInInstance ->
+                 ([HsName]) ->
+                 (TraceOn -> [PP_Doc] -> TrPP) ->
+                 ( ([String]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Strings_Cons :: String ->
+                    T_Strings ->
+                    T_Strings
+sem_Strings_Cons hd_ tl_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([String])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlIeh :: ([String])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 919, column 23)
+              _lhsOeh =
+                  _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _tlOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _tlOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Strings_Nil :: T_Strings
+sem_Strings_Nil =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([String])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 919, column 23)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- Type --------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         doGenVarWild         : Bool
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isAsPred             : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         conNm                : Name
+         eh                   : EH.TyExpr
+         ehMbAsPr             : Maybe EH.PrExpr
+         ehMbAsPrL            : [Maybe EH.PrExpr]
+         ehMbAsTyPr           : Maybe EH.TyExpr
+         ehMbAsTyPrL          : [Maybe EH.TyExpr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         mbRefConNm           : Maybe Name
+         opChain              : OpChain EH.TyExpr
+         operatorName         : MaybeName
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         tyConIs              : TypeConFixedMeaning
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative NormalApplication:
+         child range          : {Range}
+         child function       : Type 
+         child arguments      : Types 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+      alternative InfixApplication:
+         child range          : {Range}
+         child leftType       : Type 
+         child operator       : Type 
+         child rightType      : Type 
+         visit 0:
+            local errSq       : _
+            local pp          : _
+            local fgi         : _
+            local eh          : _
+            local ctxtFormErrs : _
+            local isPredOp    : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+      alternative InfixApplicationChainTop:
+         child range          : {Range}
+         child type           : Type 
+         visit 0:
+            local errSq       : _
+            local ehRearrOpChain : _
+            local errRearr    : _
+            local ehFromOpChain : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+      alternative Constructor:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local idOccKind   : _
+            local idAsp       : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local tyConIs     : _
+            local isAsPred    : _
+      alternative Parenthesized:
+         child range          : {Range}
+         child type           : Type 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+      alternative SectionApplication:
+         child range          : {Range}
+         child leftType       : MaybeType 
+         child operator       : Type 
+         child rightType      : MaybeType 
+         visit 0:
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+            local lUniq_1_nm  : {UID}
+      alternative Annotate:
+         child range          : {Range}
+         child annotation     : TypeAnnotation 
+         child type           : Type 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+      alternative Wildcard:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative MonoWildcard:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idAsp       : _
+            local idOccKind   : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative NamedWildcard:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local idAsp       : _
+            local idOccKind   : _
+            local refname     : _
+            local idUseOccGam : _
+            local errIdUse    : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative Forall:
+         child range          : {Range}
+         child typevariables  : {Names}
+         child type           : Type 
+         visit 0:
+            local idDefOccGamInside : _
+            local idGam       : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative Exists:
+         child range          : {Range}
+         child typevariables  : {Names}
+         child type           : Type 
+         visit 0:
+            local idDefOccGamInside : _
+            local idGam       : _
+            local nmLev       : _
+            local errDupIntro : _
+            local errSq       : _
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative RowUpdate:
+         child range          : {Range}
+         child type           : Type 
+         child rowTypeUpdates : RowTypeUpdates 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative RowEmpty:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative RowRecUpdate:
+         child range          : {Range}
+         child type           : Type 
+         child rowTypeUpdates : RowTypeUpdates 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+      alternative RowRecEmpty:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative RowSumUpdate:
+         child range          : {Range}
+         child type           : Type 
+         child rowTypeUpdates : RowTypeUpdates 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative RowSumEmpty:
+         child range          : {Range}
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative Qualified:
+         child range          : {Range}
+         child context        : ContextItems 
+         child type           : Type 
+         visit 0:
+            local pp          : _
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+            local isAsPred    : _
+      alternative TupleConstructor:
+         child range          : {Range}
+         child arity          : {Int}
+         visit 0:
+            local eh          : _
+            local ehMbAsPr    : _
+            local ehMbAsPrL   : _
+            local ehMbAsTyPr  : _
+            local ehMbAsTyPrL : _
+-}
+-- cata
+sem_Type :: Type ->
+            T_Type
+sem_Type (Type_NormalApplication _range _function _arguments) =
+    (sem_Type_NormalApplication _range (sem_Type _function) (sem_Types _arguments))
+sem_Type (Type_InfixApplication _range _leftType _operator _rightType) =
+    (sem_Type_InfixApplication _range (sem_Type _leftType) (sem_Type _operator) (sem_Type _rightType))
+sem_Type (Type_InfixApplicationChainTop _range _type) =
+    (sem_Type_InfixApplicationChainTop _range (sem_Type _type))
+sem_Type (Type_Constructor _range _name) =
+    (sem_Type_Constructor _range _name)
+sem_Type (Type_Parenthesized _range _type) =
+    (sem_Type_Parenthesized _range (sem_Type _type))
+sem_Type (Type_SectionApplication _range _leftType _operator _rightType) =
+    (sem_Type_SectionApplication _range (sem_MaybeType _leftType) (sem_Type _operator) (sem_MaybeType _rightType))
+sem_Type (Type_Annotate _range _annotation _type) =
+    (sem_Type_Annotate _range (sem_TypeAnnotation _annotation) (sem_Type _type))
+sem_Type (Type_Wildcard _range) =
+    (sem_Type_Wildcard _range)
+sem_Type (Type_MonoWildcard _range) =
+    (sem_Type_MonoWildcard _range)
+sem_Type (Type_Variable _range _name) =
+    (sem_Type_Variable _range _name)
+sem_Type (Type_NamedWildcard _range _name) =
+    (sem_Type_NamedWildcard _range _name)
+sem_Type (Type_Forall _range _typevariables _type) =
+    (sem_Type_Forall _range _typevariables (sem_Type _type))
+sem_Type (Type_Exists _range _typevariables _type) =
+    (sem_Type_Exists _range _typevariables (sem_Type _type))
+sem_Type (Type_RowUpdate _range _type _rowTypeUpdates) =
+    (sem_Type_RowUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
+sem_Type (Type_RowEmpty _range) =
+    (sem_Type_RowEmpty _range)
+sem_Type (Type_RowRecUpdate _range _type _rowTypeUpdates) =
+    (sem_Type_RowRecUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
+sem_Type (Type_RowRecEmpty _range) =
+    (sem_Type_RowRecEmpty _range)
+sem_Type (Type_RowSumUpdate _range _type _rowTypeUpdates) =
+    (sem_Type_RowSumUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
+sem_Type (Type_RowSumEmpty _range) =
+    (sem_Type_RowSumEmpty _range)
+sem_Type (Type_Qualified _range _context _type) =
+    (sem_Type_Qualified _range (sem_ContextItems _context) (sem_Type _type))
+sem_Type (Type_TupleConstructor _range _arity) =
+    (sem_Type_TupleConstructor _range _arity)
+-- semantic domain
+type T_Type = Bool ->
+              FixityGam ->
+              UID ->
+              IdDefOccGam ->
+              Bool ->
+              NmLev ->
+              EHCOpts ->
+              PatchEhNmInInstance ->
+              ([HsName]) ->
+              (TraceOn -> [PP_Doc] -> TrPP) ->
+              ( Name,(EH.TyExpr),(Maybe EH.PrExpr),([Maybe EH.PrExpr]),(Maybe EH.TyExpr),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,(Maybe Name),(OpChain EH.TyExpr),MaybeName,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,TypeConFixedMeaning,IdUseOccGam)
+sem_Type_NormalApplication :: Range ->
+                              T_Type ->
+                              T_Types ->
+                              T_Type
+sem_Type_NormalApplication range_ function_ arguments_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _argumentsOisAsPred :: Bool
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _functionOdoGenVarWild :: Bool
+              _functionOfixityGam :: FixityGam
+              _functionOgUniq :: UID
+              _functionOidGam :: IdDefOccGam
+              _functionOisAsPred :: Bool
+              _functionOnmLev :: NmLev
+              _functionOopts :: EHCOpts
+              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
+              _functionOtopInstanceNmL :: ([HsName])
+              _functionOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _argumentsOfixityGam :: FixityGam
+              _argumentsOgUniq :: UID
+              _argumentsOidGam :: IdDefOccGam
+              _argumentsOnmLev :: NmLev
+              _argumentsOopts :: EHCOpts
+              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _argumentsOtopInstanceNmL :: ([HsName])
+              _argumentsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _functionIconNm :: Name
+              _functionIeh :: (EH.TyExpr)
+              _functionIehMbAsPr :: (Maybe EH.PrExpr)
+              _functionIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _functionIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _functionIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _functionIerrSq :: ErrSq
+              _functionIfreeTvarS :: HsNameS
+              _functionIgUniq :: UID
+              _functionIidUseOccGam :: IdUseOccGam
+              _functionImbRefConNm :: (Maybe Name)
+              _functionIopChain :: (OpChain EH.TyExpr)
+              _functionIoperatorName :: MaybeName
+              _functionIpp :: PP_Doc
+              _functionIppWrap :: (PP_Doc -> PP_Doc)
+              _functionItopInstanceNmL :: ([HsName])
+              _functionItrpp :: TrPP
+              _functionItyConIs :: TypeConFixedMeaning
+              _functionIundefOccGam :: IdUseOccGam
+              _argumentsIeh :: ([EH.TyExpr])
+              _argumentsIerrSq :: ErrSq
+              _argumentsIfreeTvarS :: HsNameS
+              _argumentsIgUniq :: UID
+              _argumentsIidUseOccGam :: IdUseOccGam
+              _argumentsIpp :: PP_Doc
+              _argumentsIppL :: ([PP_Doc])
+              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
+              _argumentsItopInstanceNmL :: ([HsName])
+              _argumentsItrpp :: TrPP
+              _argumentsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 116, column 9)
+              _pp =
+                  let f = _functionIpp
+                  in  ppAppTop  (_functionIconNm, f)
+                            _argumentsIppL (f >#< ppSpaces _argumentsIppL)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 210, column 9)
+              _eh =
+                  appTopApp (_functionIeh : _argumentsIeh)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 347, column 9)
+              _ehMbAsPr =
+                  case _functionImbRefConNm of
+                    Just conNm | _lhsIisAsPred
+                      -> Just $ rngLift range_ EH.PrExpr_Class conNm _argumentsIeh
+                    _ -> Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 167, column 9)
+              _lhsOtyConIs =
+                  _functionItyConIs
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 177, column 9)
+              _argumentsOisAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _functionIerrSq `Seq.union` _argumentsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _functionIfreeTvarS `Set.union` _argumentsIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _functionIppWrap . _argumentsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _functionItrpp >< _argumentsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
+              -- copy rule (up)
+              _lhsOconNm =
+                  _functionIconNm
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _argumentsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _argumentsItopInstanceNmL
+              -- copy rule (down)
+              _functionOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _functionOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _functionOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _functionOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _functionOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _functionOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _functionOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _functionOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _functionOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _functionOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _argumentsOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _argumentsOgUniq =
+                  _functionIgUniq
+              -- copy rule (down)
+              _argumentsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _argumentsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _argumentsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _argumentsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _argumentsOtopInstanceNmL =
+                  _functionItopInstanceNmL
+              -- copy rule (down)
+              _argumentsOtr =
+                  _lhsItr
+              ( _functionIconNm,_functionIeh,_functionIehMbAsPr,_functionIehMbAsPrL,_functionIehMbAsTyPr,_functionIehMbAsTyPrL,_functionIerrSq,_functionIfreeTvarS,_functionIgUniq,_functionIidUseOccGam,_functionImbRefConNm,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItrpp,_functionItyConIs,_functionIundefOccGam) =
+                  function_ _functionOdoGenVarWild _functionOfixityGam _functionOgUniq _functionOidGam _functionOisAsPred _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOtopInstanceNmL _functionOtr
+              ( _argumentsIeh,_argumentsIerrSq,_argumentsIfreeTvarS,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsItrpp,_argumentsIundefOccGam) =
+                  arguments_ _argumentsOfixityGam _argumentsOgUniq _argumentsOidGam _argumentsOisAsPred _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOtopInstanceNmL _argumentsOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_InfixApplication :: Range ->
+                             T_Type ->
+                             T_Type ->
+                             T_Type ->
+                             T_Type
+sem_Type_InfixApplication range_ leftType_ operator_ rightType_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _leftTypeOisAsPred :: Bool
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftTypeOdoGenVarWild :: Bool
+              _leftTypeOfixityGam :: FixityGam
+              _leftTypeOgUniq :: UID
+              _leftTypeOidGam :: IdDefOccGam
+              _leftTypeOnmLev :: NmLev
+              _leftTypeOopts :: EHCOpts
+              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftTypeOtopInstanceNmL :: ([HsName])
+              _leftTypeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _operatorOdoGenVarWild :: Bool
+              _operatorOfixityGam :: FixityGam
+              _operatorOgUniq :: UID
+              _operatorOidGam :: IdDefOccGam
+              _operatorOisAsPred :: Bool
+              _operatorOnmLev :: NmLev
+              _operatorOopts :: EHCOpts
+              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
+              _operatorOtopInstanceNmL :: ([HsName])
+              _operatorOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightTypeOdoGenVarWild :: Bool
+              _rightTypeOfixityGam :: FixityGam
+              _rightTypeOgUniq :: UID
+              _rightTypeOidGam :: IdDefOccGam
+              _rightTypeOisAsPred :: Bool
+              _rightTypeOnmLev :: NmLev
+              _rightTypeOopts :: EHCOpts
+              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightTypeOtopInstanceNmL :: ([HsName])
+              _rightTypeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftTypeIconNm :: Name
+              _leftTypeIeh :: (EH.TyExpr)
+              _leftTypeIehMbAsPr :: (Maybe EH.PrExpr)
+              _leftTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _leftTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _leftTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _leftTypeIerrSq :: ErrSq
+              _leftTypeIfreeTvarS :: HsNameS
+              _leftTypeIgUniq :: UID
+              _leftTypeIidUseOccGam :: IdUseOccGam
+              _leftTypeImbRefConNm :: (Maybe Name)
+              _leftTypeIopChain :: (OpChain EH.TyExpr)
+              _leftTypeIoperatorName :: MaybeName
+              _leftTypeIpp :: PP_Doc
+              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
+              _leftTypeItopInstanceNmL :: ([HsName])
+              _leftTypeItrpp :: TrPP
+              _leftTypeItyConIs :: TypeConFixedMeaning
+              _leftTypeIundefOccGam :: IdUseOccGam
+              _operatorIconNm :: Name
+              _operatorIeh :: (EH.TyExpr)
+              _operatorIehMbAsPr :: (Maybe EH.PrExpr)
+              _operatorIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _operatorIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _operatorIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _operatorIerrSq :: ErrSq
+              _operatorIfreeTvarS :: HsNameS
+              _operatorIgUniq :: UID
+              _operatorIidUseOccGam :: IdUseOccGam
+              _operatorImbRefConNm :: (Maybe Name)
+              _operatorIopChain :: (OpChain EH.TyExpr)
+              _operatorIoperatorName :: MaybeName
+              _operatorIpp :: PP_Doc
+              _operatorIppWrap :: (PP_Doc -> PP_Doc)
+              _operatorItopInstanceNmL :: ([HsName])
+              _operatorItrpp :: TrPP
+              _operatorItyConIs :: TypeConFixedMeaning
+              _operatorIundefOccGam :: IdUseOccGam
+              _rightTypeIconNm :: Name
+              _rightTypeIeh :: (EH.TyExpr)
+              _rightTypeIehMbAsPr :: (Maybe EH.PrExpr)
+              _rightTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _rightTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _rightTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _rightTypeIerrSq :: ErrSq
+              _rightTypeIfreeTvarS :: HsNameS
+              _rightTypeIgUniq :: UID
+              _rightTypeIidUseOccGam :: IdUseOccGam
+              _rightTypeImbRefConNm :: (Maybe Name)
+              _rightTypeIopChain :: (OpChain EH.TyExpr)
+              _rightTypeIoperatorName :: MaybeName
+              _rightTypeIpp :: PP_Doc
+              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
+              _rightTypeItopInstanceNmL :: ([HsName])
+              _rightTypeItrpp :: TrPP
+              _rightTypeItyConIs :: TypeConFixedMeaning
+              _rightTypeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 263, column 9)
+              _lhsOconNm =
+                  _operatorIconNm
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 65, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _ctxtFormErrs, _leftTypeIerrSq, _operatorIerrSq, _rightTypeIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 120, column 9)
+              _pp =
+                  let args = [_leftTypeIpp,_rightTypeIpp]
+                      o = _operatorIpp
+                  in  ppAppTop  (_operatorIconNm, o)
+                                args (o >#< ppSpaces args)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 58, column 9)
+              _fgi =
+                  case _operatorIoperatorName of
+                    Just n
+                      -> fixityGamLookup n _lhsIfixityGam
+                    _ -> defaultFixityGamInfo
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 112, column 9)
+              _lhsOopChain =
+                  if _isPredOp
+                  then OpChain_Leaf _eh
+                  else
+                       OpChain_Op _operatorIeh _operatorIpp (fgiFixity _fgi) (fgiPrio _fgi) range_ _leftTypeIopChain _rightTypeIopChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 212, column 25)
+              (_eh,_ctxtFormErrs,_isPredOp) =
+                  if not _lhsIisAsPred && _operatorItyConIs == TyConIsPrArrow
+                  then let t = foldr app1Arr _rightTypeIeh [ pr | (Just pr) <- _leftTypeIehMbAsTyPrL ]
+                       in  if all isJust _leftTypeIehMbAsTyPrL
+                           then (t, []                                                  , True )
+                           else (t, [rngLift range_ Err_MalformedPred _leftTypeIpp]     , False)
+                  else (appRngParApp range_ [_operatorIeh,_leftTypeIeh,_rightTypeIeh], [], False)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 354, column 9)
+              _ehMbAsPr =
+                  case (_leftTypeIehMbAsPr,_rightTypeIehMbAsPr) of
+                    (Just l,Just r) | _operatorItyConIs == TyConIsPrArrow && _lhsIisAsPred
+                      -> Just $ rngLift range_ EH.PrExpr_Arrow l r
+                    (Nothing,Nothing) | _lhsIisAsPred
+                      -> case _operatorItyConIs of
+                           TyConIsPrArrow -> Just $ rngLift range_ EH.PrExpr_Class (fromJust _operatorImbRefConNm) [_leftTypeIeh,_rightTypeIeh]
+                           TyConIsEqTilde -> Just $ rngLift range_ EH.PrExpr_Eq _leftTypeIeh _rightTypeIeh
+                           TyConIsOther   -> Just $ rngLift range_ EH.PrExpr_Class (fromJust _operatorImbRefConNm) [_leftTypeIeh,_rightTypeIeh]
+                    _ -> Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 175, column 9)
+              _leftTypeOisAsPred =
+                  _lhsIisAsPred || _operatorItyConIs == TyConIsPrArrow
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _leftTypeIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightTypeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftTypeIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftTypeIppWrap . _operatorIppWrap . _rightTypeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftTypeItrpp >< _operatorItrpp >< _rightTypeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftTypeIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightTypeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightTypeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightTypeItopInstanceNmL
+              -- copy rule (down)
+              _leftTypeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _leftTypeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftTypeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftTypeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftTypeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftTypeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftTypeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftTypeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftTypeOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _operatorOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _operatorOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _operatorOgUniq =
+                  _leftTypeIgUniq
+              -- copy rule (down)
+              _operatorOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _operatorOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _operatorOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _operatorOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _operatorOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _operatorOtopInstanceNmL =
+                  _leftTypeItopInstanceNmL
+              -- copy rule (down)
+              _operatorOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rightTypeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _rightTypeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightTypeOgUniq =
+                  _operatorIgUniq
+              -- copy rule (down)
+              _rightTypeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightTypeOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _rightTypeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightTypeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightTypeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rightTypeOtopInstanceNmL =
+                  _operatorItopInstanceNmL
+              -- copy rule (down)
+              _rightTypeOtr =
+                  _lhsItr
+              ( _leftTypeIconNm,_leftTypeIeh,_leftTypeIehMbAsPr,_leftTypeIehMbAsPrL,_leftTypeIehMbAsTyPr,_leftTypeIehMbAsTyPrL,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeImbRefConNm,_leftTypeIopChain,_leftTypeIoperatorName,_leftTypeIpp,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItrpp,_leftTypeItyConIs,_leftTypeIundefOccGam) =
+                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOisAsPred _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL _leftTypeOtr
+              ( _operatorIconNm,_operatorIeh,_operatorIehMbAsPr,_operatorIehMbAsPrL,_operatorIehMbAsTyPr,_operatorIehMbAsTyPrL,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorImbRefConNm,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItrpp,_operatorItyConIs,_operatorIundefOccGam) =
+                  operator_ _operatorOdoGenVarWild _operatorOfixityGam _operatorOgUniq _operatorOidGam _operatorOisAsPred _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL _operatorOtr
+              ( _rightTypeIconNm,_rightTypeIeh,_rightTypeIehMbAsPr,_rightTypeIehMbAsPrL,_rightTypeIehMbAsTyPr,_rightTypeIehMbAsTyPrL,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeImbRefConNm,_rightTypeIopChain,_rightTypeIoperatorName,_rightTypeIpp,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItrpp,_rightTypeItyConIs,_rightTypeIundefOccGam) =
+                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOisAsPred _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL _rightTypeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_InfixApplicationChainTop :: Range ->
+                                     T_Type ->
+                                     T_Type
+sem_Type_InfixApplicationChainTop range_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOconNm :: Name
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 67, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errRearr, _typeIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 122, column 25)
+              (_ehRearrOpChain,_errRearr) =
+                  opChainReArrange _typeIopChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 122, column 9)
+              _ehFromOpChain =
+                  unOpChain _ehRearrOpChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 220, column 9)
+              _eh =
+                  _ehFromOpChain
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 364, column 9)
+              _ehMbAsPr =
+                  _typeIehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _typeIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (up)
+              _lhsOconNm =
+                  _typeIconNm
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _typeOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Constructor :: Range ->
+                        Name ->
+                        T_Type
+sem_Type_Constructor range_ name_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lhsOtyConIs :: TypeConFixedMeaning
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 660, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 676, column 29)
+              (_idOccKind,_idAsp) =
+                  if _lhsIisAsPred && _tyConIs == TyConIsOther
+                  then (IdOcc_Class,IdAsp_Class_Class)
+                  else (IdOcc_Type,IdAsp_Type_Con)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 261, column 9)
+              _lhsOconNm =
+                  name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 125, column 9)
+              _pp =
+                  ppCon name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
+              _lhsOoperatorName =
+                  Just _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 230, column 9)
+              _eh =
+                  rngLift range_ EH.TyExpr_Con _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 147, column 9)
+              _lhsOmbRefConNm =
+                  Just _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 163, column 9)
+              _tyConIs =
+                  if      hsnIsPrArrow name_ then TyConIsPrArrow
+                  else if hsnIsEqTilde name_ then TyConIsEqTilde
+                  else                            TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (from local)
+              _lhsOtyConIs =
+                  _tyConIs
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Parenthesized :: Range ->
+                          T_Type ->
+                          T_Type
+sem_Type_Parenthesized range_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 127, column 9)
+              _pp =
+                  ppParens _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 232, column 9)
+              _eh =
+                  rngLift range_ EH.TyExpr_Parens _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 364, column 9)
+              _ehMbAsPr =
+                  _typeIehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 374, column 9)
+              _ehMbAsPrL =
+                  _typeIehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _typeIehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _typeOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_SectionApplication :: Range ->
+                               T_MaybeType ->
+                               T_Type ->
+                               T_MaybeType ->
+                               T_Type
+sem_Type_SectionApplication range_ leftType_ operator_ rightType_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _leftTypeOgUniq :: UID
+              _lUniq_1_nm :: UID
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftTypeOdoGenVarWild :: Bool
+              _leftTypeOfixityGam :: FixityGam
+              _leftTypeOidGam :: IdDefOccGam
+              _leftTypeOnmLev :: NmLev
+              _leftTypeOopts :: EHCOpts
+              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftTypeOtopInstanceNmL :: ([HsName])
+              _leftTypeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _operatorOdoGenVarWild :: Bool
+              _operatorOfixityGam :: FixityGam
+              _operatorOgUniq :: UID
+              _operatorOidGam :: IdDefOccGam
+              _operatorOisAsPred :: Bool
+              _operatorOnmLev :: NmLev
+              _operatorOopts :: EHCOpts
+              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
+              _operatorOtopInstanceNmL :: ([HsName])
+              _operatorOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightTypeOdoGenVarWild :: Bool
+              _rightTypeOfixityGam :: FixityGam
+              _rightTypeOgUniq :: UID
+              _rightTypeOidGam :: IdDefOccGam
+              _rightTypeOnmLev :: NmLev
+              _rightTypeOopts :: EHCOpts
+              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightTypeOtopInstanceNmL :: ([HsName])
+              _rightTypeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftTypeIeh :: (Maybe EH.TyExpr)
+              _leftTypeIerrSq :: ErrSq
+              _leftTypeIfreeTvarS :: HsNameS
+              _leftTypeIgUniq :: UID
+              _leftTypeIidUseOccGam :: IdUseOccGam
+              _leftTypeIpp :: PP_Doc
+              _leftTypeIppMb :: (Maybe PP_Doc)
+              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
+              _leftTypeItopInstanceNmL :: ([HsName])
+              _leftTypeItrpp :: TrPP
+              _leftTypeIundefOccGam :: IdUseOccGam
+              _operatorIconNm :: Name
+              _operatorIeh :: (EH.TyExpr)
+              _operatorIehMbAsPr :: (Maybe EH.PrExpr)
+              _operatorIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _operatorIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _operatorIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _operatorIerrSq :: ErrSq
+              _operatorIfreeTvarS :: HsNameS
+              _operatorIgUniq :: UID
+              _operatorIidUseOccGam :: IdUseOccGam
+              _operatorImbRefConNm :: (Maybe Name)
+              _operatorIopChain :: (OpChain EH.TyExpr)
+              _operatorIoperatorName :: MaybeName
+              _operatorIpp :: PP_Doc
+              _operatorIppWrap :: (PP_Doc -> PP_Doc)
+              _operatorItopInstanceNmL :: ([HsName])
+              _operatorItrpp :: TrPP
+              _operatorItyConIs :: TypeConFixedMeaning
+              _operatorIundefOccGam :: IdUseOccGam
+              _rightTypeIeh :: (Maybe EH.TyExpr)
+              _rightTypeIerrSq :: ErrSq
+              _rightTypeIfreeTvarS :: HsNameS
+              _rightTypeIgUniq :: UID
+              _rightTypeIidUseOccGam :: IdUseOccGam
+              _rightTypeIpp :: PP_Doc
+              _rightTypeIppMb :: (Maybe PP_Doc)
+              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
+              _rightTypeItopInstanceNmL :: ([HsName])
+              _rightTypeItrpp :: TrPP
+              _rightTypeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 222, column 9)
+              _eh =
+                  ehSection
+                      _lUniq_1_nm range_
+                      EH.TyExpr_Var
+                      (rngAntilift id)
+                      EH.TyExpr_Lam
+                      _leftTypeIeh _operatorIeh _rightTypeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- -- generated by the unique rule mechanism.
+              (_leftTypeOgUniq,_lUniq_1_nm) =
+                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_1_nm) -> (__cont,lUniq_1_nm)} )
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftTypeIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightTypeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _leftTypeIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightTypeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftTypeIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _leftTypeIpp >-< _operatorIpp >-< _rightTypeIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftTypeIppWrap . _operatorIppWrap . _rightTypeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftTypeItrpp >< _operatorItrpp >< _rightTypeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftTypeIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightTypeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightTypeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightTypeItopInstanceNmL
+              -- copy rule (down)
+              _leftTypeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _leftTypeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _leftTypeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftTypeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftTypeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftTypeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftTypeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftTypeOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _operatorOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _operatorOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _operatorOgUniq =
+                  _leftTypeIgUniq
+              -- copy rule (down)
+              _operatorOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _operatorOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _operatorOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _operatorOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _operatorOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _operatorOtopInstanceNmL =
+                  _leftTypeItopInstanceNmL
+              -- copy rule (down)
+              _operatorOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rightTypeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _rightTypeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rightTypeOgUniq =
+                  _operatorIgUniq
+              -- copy rule (down)
+              _rightTypeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightTypeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightTypeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightTypeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rightTypeOtopInstanceNmL =
+                  _operatorItopInstanceNmL
+              -- copy rule (down)
+              _rightTypeOtr =
+                  _lhsItr
+              ( _leftTypeIeh,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeIpp,_leftTypeIppMb,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItrpp,_leftTypeIundefOccGam) =
+                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL _leftTypeOtr
+              ( _operatorIconNm,_operatorIeh,_operatorIehMbAsPr,_operatorIehMbAsPrL,_operatorIehMbAsTyPr,_operatorIehMbAsTyPrL,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorImbRefConNm,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItrpp,_operatorItyConIs,_operatorIundefOccGam) =
+                  operator_ _operatorOdoGenVarWild _operatorOfixityGam _operatorOgUniq _operatorOidGam _operatorOisAsPred _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL _operatorOtr
+              ( _rightTypeIeh,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeIpp,_rightTypeIppMb,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItrpp,_rightTypeIundefOccGam) =
+                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL _rightTypeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Annotate :: Range ->
+                     T_TypeAnnotation ->
+                     T_Type ->
+                     T_Type
+sem_Type_Annotate range_ annotation_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _annotationOfixityGam :: FixityGam
+              _annotationOgUniq :: UID
+              _annotationOidGam :: IdDefOccGam
+              _annotationOnmLev :: NmLev
+              _annotationOopts :: EHCOpts
+              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
+              _annotationOtopInstanceNmL :: ([HsName])
+              _annotationOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _annotationIeh :: (EH.TyExprAnn)
+              _annotationIerrSq :: ErrSq
+              _annotationIfreeTvarS :: HsNameS
+              _annotationIgUniq :: UID
+              _annotationIidUseOccGam :: IdUseOccGam
+              _annotationIpp :: PP_Doc
+              _annotationIppWrap :: (PP_Doc -> PP_Doc)
+              _annotationItopInstanceNmL :: ([HsName])
+              _annotationItrpp :: TrPP
+              _annotationIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 129, column 9)
+              _pp =
+                  _annotationIppWrap _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 234, column 17)
+              _eh =
+                  rngLift range_ EH.TyExpr_Ann _annotationIeh _typeIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 364, column 9)
+              _ehMbAsPr =
+                  _typeIehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 374, column 9)
+              _ehMbAsPrL =
+                  _typeIehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _annotationIerrSq `Seq.union` _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _annotationIfreeTvarS `Set.union` _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _annotationIidUseOccGam `gamAddGam` _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _annotationIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _annotationItrpp >< _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _annotationIundefOccGam `gamUnion` _typeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (up)
+              _lhsOtyConIs =
+                  _typeItyConIs
+              -- copy rule (down)
+              _annotationOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _annotationOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _annotationOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _annotationOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _annotationOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _annotationOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _annotationOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _annotationOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _annotationIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _typeOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _annotationItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _annotationIeh,_annotationIerrSq,_annotationIfreeTvarS,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationItrpp,_annotationIundefOccGam) =
+                  annotation_ _annotationOfixityGam _annotationOgUniq _annotationOidGam _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL _annotationOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Wildcard :: Range ->
+                     T_Type
+sem_Type_Wildcard range_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 131, column 9)
+              _pp =
+                  pp "..."
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 236, column 9)
+              _eh =
+                  rngLift range_ EH.TyExpr_Wild
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 386, column 17)
+              _ehMbAsTyPr =
+                  Just $ rngLift range_ EH.TyExpr_Impls
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 396, column 17)
+              _ehMbAsTyPrL =
+                  [_ehMbAsTyPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_MonoWildcard :: Range ->
+                         T_Type
+sem_Type_MonoWildcard range_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 133, column 9)
+              _pp =
+                  pp "...."
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 238, column 9)
+              _eh =
+                  rngLift range_ EH.TyExpr_Mono
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 386, column 17)
+              _ehMbAsTyPr =
+                  Just $ rngLift range_ EH.TyExpr_Impls
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 396, column 17)
+              _ehMbAsTyPrL =
+                  [_ehMbAsTyPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Variable :: Range ->
+                     Name ->
+                     T_Type
+sem_Type_Variable range_ name_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 656, column 9)
+              _idAsp =
+                  IdAsp_Type_Var
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 656, column 9)
+              _idOccKind =
+                  IdOcc_Type
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 660, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 135, column 9)
+              _pp =
+                  pp name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
+              _lhsOoperatorName =
+                  Just _refname
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 240, column 9)
+              _eh =
+                  rngLift range_ (if _lhsIdoGenVarWild then EH.TyExpr_VarWild else EH.TyExpr_Var) name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 133, column 9)
+              _lhsOfreeTvarS =
+                  Set.singleton name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_NamedWildcard :: Range ->
+                          Name ->
+                          T_Type
+sem_Type_NamedWildcard range_ name_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 656, column 9)
+              _idAsp =
+                  IdAsp_Type_Var
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 656, column 9)
+              _idOccKind =
+                  IdOcc_Type
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 660, column 29)
+              (_refname,_,_idUseOccGam,_errIdUse) =
+                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
+              _errSq =
+                  Seq.fromList _errIdUse
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 137, column 9)
+              _pp =
+                  "%" >|< name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 242, column 9)
+              _eh =
+                  rngLift range_ EH.TyExpr_VarWild name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 133, column 9)
+              _lhsOfreeTvarS =
+                  Set.singleton name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _idUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Forall :: Range ->
+                   Names ->
+                   T_Type ->
+                   T_Type
+sem_Type_Forall range_ typevariables_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 307, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 481, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamInside _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 112, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamInside
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 63, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, _typeIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 139, column 9)
+              _pp =
+                  "forall" >#< ppSpaces typevariables_ >#< "." >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 244, column 9)
+              _eh =
+                  foldr (rngLift range_ EH.TyExpr_Quant tyQu_Forall) _typeIeh typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 352, column 9)
+              _ehMbAsPr =
+                  foldr (\tv pr -> fmap (rngLift range_ EH.PrExpr_Forall tv) pr) _typeIehMbAsPr typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 135, column 9)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS `Set.difference` Set.fromList typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _typeOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Exists :: Range ->
+                   Names ->
+                   T_Type ->
+                   T_Type
+sem_Type_Exists range_ typevariables_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 307, column 9)
+              _idDefOccGamInside =
+                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 481, column 9)
+              _idGam =
+                  gamUnion _idDefOccGamInside _lhsIidGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
+              _nmLev =
+                  _lhsInmLev + 1
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 112, column 9)
+              _errDupIntro =
+                  idDefOccGamCheckDupNames _idDefOccGamInside
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 63, column 9)
+              _errSq =
+                  Seq.unions [Seq.fromList _errDupIntro, _typeIerrSq]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 141, column 9)
+              _pp =
+                  "exists" >#< ppSpaces typevariables_ >#< "." >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 246, column 9)
+              _eh =
+                  foldr (rngLift range_ EH.TyExpr_Quant tyQu_Exists) _typeIeh typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 135, column 9)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS `Set.difference` Set.fromList typevariables_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _errSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (from local)
+              _typeOidGam =
+                  _idGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (from local)
+              _typeOnmLev =
+                  _nmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_RowUpdate :: Range ->
+                      T_Type ->
+                      T_RowTypeUpdates ->
+                      T_Type
+sem_Type_RowUpdate range_ type_ rowTypeUpdates_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rowTypeUpdatesOdoGenVarWild :: Bool
+              _rowTypeUpdatesOfixityGam :: FixityGam
+              _rowTypeUpdatesOgUniq :: UID
+              _rowTypeUpdatesOidGam :: IdDefOccGam
+              _rowTypeUpdatesOisAsPred :: Bool
+              _rowTypeUpdatesOnmLev :: NmLev
+              _rowTypeUpdatesOopts :: EHCOpts
+              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
+              _rowTypeUpdatesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
+              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _rowTypeUpdatesIerrSq :: ErrSq
+              _rowTypeUpdatesIfreeTvarS :: HsNameS
+              _rowTypeUpdatesIgUniq :: UID
+              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
+              _rowTypeUpdatesIpp :: PP_Doc
+              _rowTypeUpdatesIppL :: ([PP_Doc])
+              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
+              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
+              _rowTypeUpdatesItrpp :: TrPP
+              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 143, column 9)
+              _pp =
+                  ppAppTop  (hsnRow,mkPPAppFun hsnRowEmpty _typeIpp)
+                            _rowTypeUpdatesIppL _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 248, column 9)
+              _eh =
+                  foldl (flip ($)) _typeIeh _rowTypeUpdatesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap . _rowTypeUpdatesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp >< _rowTypeUpdatesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rowTypeUpdatesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rowTypeUpdatesItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rowTypeUpdatesOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _rowTypeUpdatesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rowTypeUpdatesOgUniq =
+                  _typeIgUniq
+              -- copy rule (down)
+              _rowTypeUpdatesOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _rowTypeUpdatesOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _rowTypeUpdatesOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rowTypeUpdatesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rowTypeUpdatesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rowTypeUpdatesOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _rowTypeUpdatesOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesItrpp,_rowTypeUpdatesIundefOccGam) =
+                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL _rowTypeUpdatesOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_RowEmpty :: Range ->
+                     T_Type
+sem_Type_RowEmpty range_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 146, column 9)
+              _pp =
+                  hsnORow >|< hsnCRow
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 250, column 9)
+              _eh =
+                  rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_RowRecUpdate :: Range ->
+                         T_Type ->
+                         T_RowTypeUpdates ->
+                         T_Type
+sem_Type_RowRecUpdate range_ type_ rowTypeUpdates_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rowTypeUpdatesOdoGenVarWild :: Bool
+              _rowTypeUpdatesOfixityGam :: FixityGam
+              _rowTypeUpdatesOgUniq :: UID
+              _rowTypeUpdatesOidGam :: IdDefOccGam
+              _rowTypeUpdatesOisAsPred :: Bool
+              _rowTypeUpdatesOnmLev :: NmLev
+              _rowTypeUpdatesOopts :: EHCOpts
+              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
+              _rowTypeUpdatesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
+              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _rowTypeUpdatesIerrSq :: ErrSq
+              _rowTypeUpdatesIfreeTvarS :: HsNameS
+              _rowTypeUpdatesIgUniq :: UID
+              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
+              _rowTypeUpdatesIpp :: PP_Doc
+              _rowTypeUpdatesIppL :: ([PP_Doc])
+              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
+              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
+              _rowTypeUpdatesItrpp :: TrPP
+              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 148, column 9)
+              _pp =
+                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _typeIpp)
+                            _rowTypeUpdatesIppL _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 252, column 9)
+              _eh =
+                  foldl (\e u -> appCon1App hsnRec $ u $ ehTyExprArg $ e) _typeIeh _rowTypeUpdatesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 372, column 9)
+              _ehMbAsPrL =
+                  _rowTypeUpdatesIehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 394, column 9)
+              _ehMbAsTyPrL =
+                  _rowTypeUpdatesIehMbAsTyPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap . _rowTypeUpdatesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp >< _rowTypeUpdatesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rowTypeUpdatesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rowTypeUpdatesItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _typeOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rowTypeUpdatesOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _rowTypeUpdatesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rowTypeUpdatesOgUniq =
+                  _typeIgUniq
+              -- copy rule (down)
+              _rowTypeUpdatesOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rowTypeUpdatesOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _rowTypeUpdatesOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rowTypeUpdatesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rowTypeUpdatesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rowTypeUpdatesOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _rowTypeUpdatesOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesItrpp,_rowTypeUpdatesIundefOccGam) =
+                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL _rowTypeUpdatesOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_RowRecEmpty :: Range ->
+                        T_Type
+sem_Type_RowRecEmpty range_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 151, column 9)
+              _pp =
+                  pp hsnRec
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 254, column 9)
+              _eh =
+                  appCon1App hsnRec $ rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_RowSumUpdate :: Range ->
+                         T_Type ->
+                         T_RowTypeUpdates ->
+                         T_Type
+sem_Type_RowSumUpdate range_ type_ rowTypeUpdates_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rowTypeUpdatesOdoGenVarWild :: Bool
+              _rowTypeUpdatesOfixityGam :: FixityGam
+              _rowTypeUpdatesOgUniq :: UID
+              _rowTypeUpdatesOidGam :: IdDefOccGam
+              _rowTypeUpdatesOisAsPred :: Bool
+              _rowTypeUpdatesOnmLev :: NmLev
+              _rowTypeUpdatesOopts :: EHCOpts
+              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
+              _rowTypeUpdatesOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
+              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _rowTypeUpdatesIerrSq :: ErrSq
+              _rowTypeUpdatesIfreeTvarS :: HsNameS
+              _rowTypeUpdatesIgUniq :: UID
+              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
+              _rowTypeUpdatesIpp :: PP_Doc
+              _rowTypeUpdatesIppL :: ([PP_Doc])
+              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
+              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
+              _rowTypeUpdatesItrpp :: TrPP
+              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 153, column 9)
+              _pp =
+                  ppAppTop  (hsnSum,mkPPAppFun hsnRowEmpty _typeIpp)
+                            _rowTypeUpdatesIppL _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 256, column 9)
+              _eh =
+                  foldl (\e u -> appCon1App hsnSum $ u $ ehTyExprArg $ e) _typeIeh _rowTypeUpdatesIeh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _typeIppWrap . _rowTypeUpdatesIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _typeItrpp >< _rowTypeUpdatesItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rowTypeUpdatesIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rowTypeUpdatesItopInstanceNmL
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _typeOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _typeOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _rowTypeUpdatesOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _rowTypeUpdatesOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _rowTypeUpdatesOgUniq =
+                  _typeIgUniq
+              -- copy rule (down)
+              _rowTypeUpdatesOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _rowTypeUpdatesOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _rowTypeUpdatesOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rowTypeUpdatesOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rowTypeUpdatesOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rowTypeUpdatesOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _rowTypeUpdatesOtr =
+                  _lhsItr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesItrpp,_rowTypeUpdatesIundefOccGam) =
+                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL _rowTypeUpdatesOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_RowSumEmpty :: Range ->
+                        T_Type
+sem_Type_RowSumEmpty range_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 156, column 9)
+              _pp =
+                  pp hsnSum
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 258, column 9)
+              _eh =
+                  appCon1App hsnSum $ rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_Qualified :: Range ->
+                      T_ContextItems ->
+                      T_Type ->
+                      T_Type
+sem_Type_Qualified range_ context_ type_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _contextOfixityGam :: FixityGam
+              _contextOgUniq :: UID
+              _contextOidGam :: IdDefOccGam
+              _contextOnmLev :: NmLev
+              _contextOopts :: EHCOpts
+              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
+              _contextOtopInstanceNmL :: ([HsName])
+              _contextOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _typeOdoGenVarWild :: Bool
+              _typeOfixityGam :: FixityGam
+              _typeOgUniq :: UID
+              _typeOidGam :: IdDefOccGam
+              _typeOisAsPred :: Bool
+              _typeOnmLev :: NmLev
+              _typeOopts :: EHCOpts
+              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
+              _typeOtopInstanceNmL :: ([HsName])
+              _typeOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _contextIeh :: ([EH.PrExpr])
+              _contextIehTy :: ([EH.TyExpr])
+              _contextIerrSq :: ErrSq
+              _contextIfreeTvarS :: HsNameS
+              _contextIgUniq :: UID
+              _contextIidUseOccGam :: IdUseOccGam
+              _contextIpp :: PP_Doc
+              _contextIppWrap :: (PP_Doc -> PP_Doc)
+              _contextItopInstanceNmL :: ([HsName])
+              _contextItrpp :: TrPP
+              _contextIundefOccGam :: IdUseOccGam
+              _typeIconNm :: Name
+              _typeIeh :: (EH.TyExpr)
+              _typeIehMbAsPr :: (Maybe EH.PrExpr)
+              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _typeIerrSq :: ErrSq
+              _typeIfreeTvarS :: HsNameS
+              _typeIgUniq :: UID
+              _typeIidUseOccGam :: IdUseOccGam
+              _typeImbRefConNm :: (Maybe Name)
+              _typeIopChain :: (OpChain EH.TyExpr)
+              _typeIoperatorName :: MaybeName
+              _typeIpp :: PP_Doc
+              _typeIppWrap :: (PP_Doc -> PP_Doc)
+              _typeItopInstanceNmL :: ([HsName])
+              _typeItrpp :: TrPP
+              _typeItyConIs :: TypeConFixedMeaning
+              _typeIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 158, column 9)
+              _pp =
+                  _contextIpp >#< "=>" >#< _typeIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 260, column 9)
+              _eh =
+                  foldr app1Arr _typeIeh _contextIehTy
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 180, column 17)
+              _isAsPred =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _contextIerrSq `Seq.union` _typeIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _contextIfreeTvarS `Set.union` _typeIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _contextIidUseOccGam `gamAddGam` _typeIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _contextIppWrap . _typeIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _contextItrpp >< _typeItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _contextIundefOccGam `gamUnion` _typeIundefOccGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _typeIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _typeItopInstanceNmL
+              -- copy rule (down)
+              _contextOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _contextOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _contextOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _contextOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _contextOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _contextOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _contextOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _contextOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _typeOdoGenVarWild =
+                  _lhsIdoGenVarWild
+              -- copy rule (down)
+              _typeOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _typeOgUniq =
+                  _contextIgUniq
+              -- copy rule (down)
+              _typeOidGam =
+                  _lhsIidGam
+              -- copy rule (from local)
+              _typeOisAsPred =
+                  _isAsPred
+              -- copy rule (down)
+              _typeOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _typeOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _typeOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _typeOtopInstanceNmL =
+                  _contextItopInstanceNmL
+              -- copy rule (down)
+              _typeOtr =
+                  _lhsItr
+              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextItrpp,_contextIundefOccGam) =
+                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL _contextOtr
+              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItrpp,_typeItyConIs,_typeIundefOccGam) =
+                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL _typeOtr
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+sem_Type_TupleConstructor :: Range ->
+                             Int ->
+                             T_Type
+sem_Type_TupleConstructor range_ arity_ =
+    (\ _lhsIdoGenVarWild
+       _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOconNm :: Name
+              _lhsOoperatorName :: MaybeName
+              _lhsOopChain :: (OpChain EH.TyExpr)
+              _lhsOmbRefConNm :: (Maybe Name)
+              _lhsOtyConIs :: TypeConFixedMeaning
+              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
+              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExpr)
+              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
+              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
+              _lhsOconNm =
+                  hsnUnknown
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
+              _lhsOoperatorName =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
+              _lhsOopChain =
+                  OpChain_Leaf _eh
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 262, column 9)
+              _eh =
+                  ehTupleConstructor range_ arity_ EH.TyExpr_Var (rngAntilift id)
+                      EH.TyExpr_Lam
+                      (\ps r ->                                                      r)
+                      (rngAntilift $ \row -> appCon1App hsnRec (rngLift range_ EH.TyExpr_Row row))
+                      EH.RowTyExpr_Ext EH.RowTyExpr_Empty
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 366, column 9)
+              _ehMbAsPr =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 376, column 9)
+              _ehMbAsPrL =
+                  [_ehMbAsPr]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 388, column 17)
+              _ehMbAsTyPr =
+                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 398, column 17)
+              _ehMbAsTyPrL =
+                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 149, column 9)
+              _lhsOmbRefConNm =
+                  Nothing
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 9)
+              _lhsOtyConIs =
+                  TyConIsOther
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 368, column 44)
+              _lhsOehMbAsPrL =
+                  _ehMbAsPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 390, column 46)
+              _lhsOehMbAsTyPrL =
+                  _ehMbAsTyPrL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (from local)
+              _lhsOehMbAsPr =
+                  _ehMbAsPr
+              -- copy rule (from local)
+              _lhsOehMbAsTyPr =
+                  _ehMbAsTyPr
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtyConIs,_lhsOundefOccGam)))
+-- TypeAnnotation ----------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.TyExprAnn
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Strict:
+         visit 0:
+            local ppWrap      : _
+            local eh          : _
+      alternative AnnotationName:
+         child name           : {Name}
+         visit 0:
+            local eh          : _
+      alternative AnnotationVar:
+         child name           : {Name}
+         child var            : {Name}
+         visit 0:
+            local eh          : _
+-}
+-- cata
+sem_TypeAnnotation :: TypeAnnotation ->
+                      T_TypeAnnotation
+sem_TypeAnnotation (TypeAnnotation_Strict) =
+    (sem_TypeAnnotation_Strict)
+sem_TypeAnnotation (TypeAnnotation_AnnotationName _name) =
+    (sem_TypeAnnotation_AnnotationName _name)
+sem_TypeAnnotation (TypeAnnotation_AnnotationVar _name _var) =
+    (sem_TypeAnnotation_AnnotationVar _name _var)
+-- semantic domain
+type T_TypeAnnotation = FixityGam ->
+                        UID ->
+                        IdDefOccGam ->
+                        NmLev ->
+                        EHCOpts ->
+                        PatchEhNmInInstance ->
+                        ([HsName]) ->
+                        (TraceOn -> [PP_Doc] -> TrPP) ->
+                        ( (EH.TyExprAnn),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_TypeAnnotation_Strict :: T_TypeAnnotation
+sem_TypeAnnotation_Strict =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExprAnn)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 376, column 9)
+              _ppWrap =
+                  \t -> "!" >|< t
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 888, column 9)
+              _eh =
+                  EH.TyExprAnn_Strictness (Strictness_Strict)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _ppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_TypeAnnotation_AnnotationName :: Name ->
+                                     T_TypeAnnotation
+sem_TypeAnnotation_AnnotationName name_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExprAnn)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 890, column 9)
+              _eh =
+                  case show name_ of
+                    "strict"    ->  EH.TyExprAnn_Strictness (Strictness_Strict)
+                    "nonStrict" ->  EH.TyExprAnn_Strictness (Strictness_NonStrict)
+                    _           -> EH.TyExprAnn_Empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_TypeAnnotation_AnnotationVar :: Name ->
+                                    Name ->
+                                    T_TypeAnnotation
+sem_TypeAnnotation_AnnotationVar name_ var_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOeh :: (EH.TyExprAnn)
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 895, column 9)
+              _eh =
+                  case show name_ of
+                    "strictness" -> EH.TyExprAnn_Strictness (Strictness_Var var_)
+                    _            -> EH.TyExprAnn_Empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (from local)
+              _lhsOeh =
+                  _eh
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+-- TypeLeftHandSide --------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.TyVar]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idDefOccGam          : IdDefOccGam
+         idOccDefs            : [IdOcc]
+         idUseOccGam          : IdUseOccGam
+         name                 : Name
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         range                : Range
+         trpp                 : TrPP
+         typevariables        : Names
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Function:
+         child range          : {Range}
+         child name           : {Name}
+         child patterns       : TypePatterns 
+         visit 0:
+            local pp          : _
+      alternative Infix:
+         child range          : {Range}
+         child leftPattern    : TypePattern 
+         child operator       : {Name}
+         child rightPattern   : TypePattern 
+         visit 0:
+            local pp          : _
+      alternative Parenthesized:
+         child range          : {Range}
+         child lefthandside   : TypeLeftHandSide 
+         child patterns       : TypePatterns 
+         visit 0:
+            local pp          : _
+-}
+-- cata
+sem_TypeLeftHandSide :: TypeLeftHandSide ->
+                        T_TypeLeftHandSide
+sem_TypeLeftHandSide (TypeLeftHandSide_Function _range _name _patterns) =
+    (sem_TypeLeftHandSide_Function _range _name (sem_TypePatterns _patterns))
+sem_TypeLeftHandSide (TypeLeftHandSide_Infix _range _leftPattern _operator _rightPattern) =
+    (sem_TypeLeftHandSide_Infix _range (sem_TypePattern _leftPattern) _operator (sem_TypePattern _rightPattern))
+sem_TypeLeftHandSide (TypeLeftHandSide_Parenthesized _range _lefthandside _patterns) =
+    (sem_TypeLeftHandSide_Parenthesized _range (sem_TypeLeftHandSide _lefthandside) (sem_TypePatterns _patterns))
+-- semantic domain
+type T_TypeLeftHandSide = FixityGam ->
+                          UID ->
+                          IdDefOccGam ->
+                          HsName ->
+                          NmLev ->
+                          EHCOpts ->
+                          PatchEhNmInInstance ->
+                          ([HsName]) ->
+                          (TraceOn -> [PP_Doc] -> TrPP) ->
+                          ( ([EH.TyVar]),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,Name,PP_Doc,(PP_Doc -> PP_Doc),Range,([HsName]),TrPP,Names,IdUseOccGam)
+sem_TypeLeftHandSide_Function :: Range ->
+                                 Name ->
+                                 T_TypePatterns ->
+                                 T_TypeLeftHandSide
+sem_TypeLeftHandSide_Function range_ name_ patterns_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOrange :: Range
+              _lhsOname :: Name
+              _lhsOeh :: ([EH.TyVar])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtypevariables :: Names
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsIeh :: ([EH.TyVar])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsItypevariables :: Names
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 212, column 9)
+              _lhsOrange =
+                  range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 212, column 9)
+              _lhsOname =
+                  name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 333, column 9)
+              _pp =
+                  name_ >#< ppSpaces _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 774, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.TyVar_Var name_ : _patternsIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _patternsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _patternsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
+              _lhsOtypevariables =
+                  _patternsItypevariables
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _patternsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsItypevariables,_patternsIundefOccGam) =
+                  patterns_ _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtypevariables,_lhsOundefOccGam)))
+sem_TypeLeftHandSide_Infix :: Range ->
+                              T_TypePattern ->
+                              Name ->
+                              T_TypePattern ->
+                              T_TypeLeftHandSide
+sem_TypeLeftHandSide_Infix range_ leftPattern_ operator_ rightPattern_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOrange :: Range
+              _lhsOname :: Name
+              _lhsOeh :: ([EH.TyVar])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtypevariables :: Names
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _leftPatternOgUniq :: UID
+              _leftPatternOidGam :: IdDefOccGam
+              _leftPatternOmoduleNm :: HsName
+              _leftPatternOnmLev :: NmLev
+              _leftPatternOopts :: EHCOpts
+              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _leftPatternOtopInstanceNmL :: ([HsName])
+              _leftPatternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _rightPatternOgUniq :: UID
+              _rightPatternOidGam :: IdDefOccGam
+              _rightPatternOmoduleNm :: HsName
+              _rightPatternOnmLev :: NmLev
+              _rightPatternOopts :: EHCOpts
+              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
+              _rightPatternOtopInstanceNmL :: ([HsName])
+              _rightPatternOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _leftPatternIeh :: (EH.TyVar)
+              _leftPatternIerrSq :: ErrSq
+              _leftPatternIgUniq :: UID
+              _leftPatternIidUseOccGam :: IdUseOccGam
+              _leftPatternIpp :: PP_Doc
+              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
+              _leftPatternItopInstanceNmL :: ([HsName])
+              _leftPatternItrpp :: TrPP
+              _leftPatternItypevariables :: Names
+              _leftPatternIundefOccGam :: IdUseOccGam
+              _rightPatternIeh :: (EH.TyVar)
+              _rightPatternIerrSq :: ErrSq
+              _rightPatternIgUniq :: UID
+              _rightPatternIidUseOccGam :: IdUseOccGam
+              _rightPatternIpp :: PP_Doc
+              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
+              _rightPatternItopInstanceNmL :: ([HsName])
+              _rightPatternItrpp :: TrPP
+              _rightPatternItypevariables :: Names
+              _rightPatternIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 215, column 9)
+              _lhsOrange =
+                  range_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 215, column 9)
+              _lhsOname =
+                  operator_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 335, column 9)
+              _pp =
+                  _leftPatternIpp >#< operator_ >#< _rightPatternIpp
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 776, column 9)
+              _lhsOeh =
+                  [ rngLift range_ EH.TyVar_Var operator_
+                  , _leftPatternIeh
+                  , _rightPatternIeh
+                  ]
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _leftPatternIerrSq `Seq.union` _rightPatternIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _leftPatternIidUseOccGam `gamAddGam` _rightPatternIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _leftPatternIppWrap . _rightPatternIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _leftPatternItrpp >< _rightPatternItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
+              _lhsOtypevariables =
+                  _leftPatternItypevariables ++ _rightPatternItypevariables
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _rightPatternIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _rightPatternItopInstanceNmL
+              -- copy rule (down)
+              _leftPatternOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _leftPatternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _leftPatternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _leftPatternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _leftPatternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _leftPatternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _leftPatternOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _leftPatternOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _rightPatternOgUniq =
+                  _leftPatternIgUniq
+              -- copy rule (down)
+              _rightPatternOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _rightPatternOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _rightPatternOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _rightPatternOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _rightPatternOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _rightPatternOtopInstanceNmL =
+                  _leftPatternItopInstanceNmL
+              -- copy rule (down)
+              _rightPatternOtr =
+                  _lhsItr
+              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidUseOccGam,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternItrpp,_leftPatternItypevariables,_leftPatternIundefOccGam) =
+                  leftPattern_ _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL _leftPatternOtr
+              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidUseOccGam,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternItrpp,_rightPatternItypevariables,_rightPatternIundefOccGam) =
+                  rightPattern_ _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL _rightPatternOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtypevariables,_lhsOundefOccGam)))
+sem_TypeLeftHandSide_Parenthesized :: Range ->
+                                      T_TypeLeftHandSide ->
+                                      T_TypePatterns ->
+                                      T_TypeLeftHandSide
+sem_TypeLeftHandSide_Parenthesized range_ lefthandside_ patterns_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOeh :: ([EH.TyVar])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidDefOccGam :: IdDefOccGam
+              _lhsOidOccDefs :: ([IdOcc])
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtypevariables :: Names
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOname :: Name
+              _lhsOrange :: Range
+              _lhsOtopInstanceNmL :: ([HsName])
+              _lefthandsideOfixityGam :: FixityGam
+              _lefthandsideOgUniq :: UID
+              _lefthandsideOidGam :: IdDefOccGam
+              _lefthandsideOmoduleNm :: HsName
+              _lefthandsideOnmLev :: NmLev
+              _lefthandsideOopts :: EHCOpts
+              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
+              _lefthandsideOtopInstanceNmL :: ([HsName])
+              _lefthandsideOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _patternsOgUniq :: UID
+              _patternsOidGam :: IdDefOccGam
+              _patternsOmoduleNm :: HsName
+              _patternsOnmLev :: NmLev
+              _patternsOopts :: EHCOpts
+              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
+              _patternsOtopInstanceNmL :: ([HsName])
+              _patternsOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _lefthandsideIeh :: ([EH.TyVar])
+              _lefthandsideIerrSq :: ErrSq
+              _lefthandsideIfreeTvarS :: HsNameS
+              _lefthandsideIgUniq :: UID
+              _lefthandsideIidDefOccGam :: IdDefOccGam
+              _lefthandsideIidOccDefs :: ([IdOcc])
+              _lefthandsideIidUseOccGam :: IdUseOccGam
+              _lefthandsideIname :: Name
+              _lefthandsideIpp :: PP_Doc
+              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
+              _lefthandsideIrange :: Range
+              _lefthandsideItopInstanceNmL :: ([HsName])
+              _lefthandsideItrpp :: TrPP
+              _lefthandsideItypevariables :: Names
+              _lefthandsideIundefOccGam :: IdUseOccGam
+              _patternsIeh :: ([EH.TyVar])
+              _patternsIerrSq :: ErrSq
+              _patternsIgUniq :: UID
+              _patternsIidUseOccGam :: IdUseOccGam
+              _patternsIpp :: PP_Doc
+              _patternsIppL :: ([PP_Doc])
+              _patternsIppWrap :: (PP_Doc -> PP_Doc)
+              _patternsItopInstanceNmL :: ([HsName])
+              _patternsItrpp :: TrPP
+              _patternsItypevariables :: Names
+              _patternsIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 337, column 9)
+              _pp =
+                  ppParens _lefthandsideIpp >#< ppSpaces _patternsIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 781, column 9)
+              _lhsOeh =
+                  _lefthandsideIeh ++ _patternsIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _lefthandsideIerrSq `Seq.union` _patternsIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _lefthandsideIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 23)
+              _lhsOidDefOccGam =
+                  _lefthandsideIidDefOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
+              _lhsOidOccDefs =
+                  _lefthandsideIidOccDefs
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _lefthandsideIidUseOccGam `gamAddGam` _patternsIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _lefthandsideIppWrap . _patternsIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _lefthandsideItrpp >< _patternsItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
+              _lhsOtypevariables =
+                  _lefthandsideItypevariables ++ _patternsItypevariables
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _lefthandsideIundefOccGam `gamUnion` _patternsIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _patternsIgUniq
+              -- copy rule (up)
+              _lhsOname =
+                  _lefthandsideIname
+              -- copy rule (up)
+              _lhsOrange =
+                  _lefthandsideIrange
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _patternsItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _lefthandsideOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _lefthandsideOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _lefthandsideOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _lefthandsideOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _lefthandsideOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _lefthandsideOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _lefthandsideOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _lefthandsideOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _patternsOgUniq =
+                  _lefthandsideIgUniq
+              -- copy rule (down)
+              _patternsOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _patternsOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _patternsOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _patternsOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _patternsOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _patternsOtopInstanceNmL =
+                  _lefthandsideItopInstanceNmL
+              -- copy rule (down)
+              _patternsOtr =
+                  _lhsItr
+              ( _lefthandsideIeh,_lefthandsideIerrSq,_lefthandsideIfreeTvarS,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIname,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrange,_lefthandsideItopInstanceNmL,_lefthandsideItrpp,_lefthandsideItypevariables,_lefthandsideIundefOccGam) =
+                  lefthandside_ _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOtopInstanceNmL _lefthandsideOtr
+              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItrpp,_patternsItypevariables,_patternsIundefOccGam) =
+                  patterns_ _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL _patternsOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtypevariables,_lhsOundefOccGam)))
+-- TypePattern -------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : EH.TyVar
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         typevariables        : Names
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Variable:
+         child range          : {Range}
+         child name           : {Name}
+         visit 0:
+            local refname     : _
+            local pp          : _
+-}
+-- cata
+sem_TypePattern :: TypePattern ->
+                   T_TypePattern
+sem_TypePattern (TypePattern_Variable _range _name) =
+    (sem_TypePattern_Variable _range _name)
+-- semantic domain
+type T_TypePattern = UID ->
+                     IdDefOccGam ->
+                     HsName ->
+                     NmLev ->
+                     EHCOpts ->
+                     PatchEhNmInInstance ->
+                     ([HsName]) ->
+                     (TraceOn -> [PP_Doc] -> TrPP) ->
+                     ( (EH.TyVar),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TrPP,Names,IdUseOccGam)
+sem_TypePattern_Variable :: Range ->
+                            Name ->
+                            T_TypePattern
+sem_TypePattern_Variable range_ name_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOtypevariables :: Names
+              _lhsOeh :: (EH.TyVar)
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 58, column 9)
+              _refname =
+                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 220, column 9)
+              _lhsOtypevariables =
+                  [name_]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 380, column 9)
+              _pp =
+                  pp name_
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 861, column 9)
+              _lhsOeh =
+                  rngLift range_ EH.TyVar_Var _refname
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _pp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtypevariables,_lhsOundefOccGam)))
+-- TypePatterns ------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         idGam                : IdDefOccGam
+         moduleNm             : HsName
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.TyVar]
+         errSq                : ErrSq
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         typevariables        : Names
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : TypePattern 
+         child tl             : TypePatterns 
+      alternative Nil:
+-}
+-- cata
+sem_TypePatterns :: TypePatterns ->
+                    T_TypePatterns
+sem_TypePatterns list =
+    (Prelude.foldr sem_TypePatterns_Cons sem_TypePatterns_Nil (Prelude.map sem_TypePattern list))
+-- semantic domain
+type T_TypePatterns = UID ->
+                      IdDefOccGam ->
+                      HsName ->
+                      NmLev ->
+                      EHCOpts ->
+                      PatchEhNmInInstance ->
+                      ([HsName]) ->
+                      (TraceOn -> [PP_Doc] -> TrPP) ->
+                      ( ([EH.TyVar]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,Names,IdUseOccGam)
+sem_TypePatterns_Cons :: T_TypePattern ->
+                         T_TypePatterns ->
+                         T_TypePatterns
+sem_TypePatterns_Cons hd_ tl_ =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.TyVar])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtypevariables :: Names
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOmoduleNm :: HsName
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOmoduleNm :: HsName
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIeh :: (EH.TyVar)
+              _hdIerrSq :: ErrSq
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdItypevariables :: Names
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.TyVar])
+              _tlIerrSq :: ErrSq
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlItypevariables :: Names
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 440, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 855, column 28)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
+              _lhsOtypevariables =
+                  _hdItypevariables ++ _tlItypevariables
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOmoduleNm =
+                  _lhsImoduleNm
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdItypevariables,_hdIundefOccGam) =
+                  hd_ _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlItypevariables,_tlIundefOccGam) =
+                  tl_ _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtypevariables,_lhsOundefOccGam)))
+sem_TypePatterns_Nil :: T_TypePatterns
+sem_TypePatterns_Nil =
+    (\ _lhsIgUniq
+       _lhsIidGam
+       _lhsImoduleNm
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.TyVar])
+              _lhsOerrSq :: ErrSq
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOtypevariables :: Names
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 442, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 855, column 28)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
+              _lhsOtypevariables =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOtypevariables,_lhsOundefOccGam)))
+-- Types -------------------------------------------------------
+{-
+   visit 0:
+      inherited attributes:
+         fixityGam            : FixityGam
+         idGam                : IdDefOccGam
+         isAsPred             : Bool
+         nmLev                : NmLev
+         opts                 : EHCOpts
+         patchEhNmInInstance  : PatchEhNmInInstance
+         tr                   : TraceOn -> [PP_Doc] -> TrPP
+      chained attributes:
+         gUniq                : UID
+         topInstanceNmL       : [HsName]
+      synthesized attributes:
+         eh                   : [EH.TyExpr]
+         errSq                : ErrSq
+         freeTvarS            : HsNameS
+         idUseOccGam          : IdUseOccGam
+         pp                   : PP_Doc
+         ppL                  : [PP_Doc]
+         ppWrap               : PP_Doc -> PP_Doc
+         trpp                 : TrPP
+         undefOccGam          : IdUseOccGam
+   alternatives:
+      alternative Cons:
+         child hd             : Type 
+         child tl             : Types 
+         visit 0:
+            local doGenVarWild : _
+      alternative Nil:
+-}
+-- cata
+sem_Types :: Types ->
+             T_Types
+sem_Types list =
+    (Prelude.foldr sem_Types_Cons sem_Types_Nil (Prelude.map sem_Type list))
+-- semantic domain
+type T_Types = FixityGam ->
+               UID ->
+               IdDefOccGam ->
+               Bool ->
+               NmLev ->
+               EHCOpts ->
+               PatchEhNmInInstance ->
+               ([HsName]) ->
+               (TraceOn -> [PP_Doc] -> TrPP) ->
+               ( ([EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),TrPP,IdUseOccGam)
+sem_Types_Cons :: T_Type ->
+                  T_Types ->
+                  T_Types
+sem_Types_Cons hd_ tl_ =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              _hdOdoGenVarWild :: Bool
+              _hdOfixityGam :: FixityGam
+              _hdOgUniq :: UID
+              _hdOidGam :: IdDefOccGam
+              _hdOisAsPred :: Bool
+              _hdOnmLev :: NmLev
+              _hdOopts :: EHCOpts
+              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
+              _hdOtopInstanceNmL :: ([HsName])
+              _hdOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _tlOfixityGam :: FixityGam
+              _tlOgUniq :: UID
+              _tlOidGam :: IdDefOccGam
+              _tlOisAsPred :: Bool
+              _tlOnmLev :: NmLev
+              _tlOopts :: EHCOpts
+              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
+              _tlOtopInstanceNmL :: ([HsName])
+              _tlOtr :: (TraceOn -> [PP_Doc] -> TrPP)
+              _hdIconNm :: Name
+              _hdIeh :: (EH.TyExpr)
+              _hdIehMbAsPr :: (Maybe EH.PrExpr)
+              _hdIehMbAsPrL :: ([Maybe EH.PrExpr])
+              _hdIehMbAsTyPr :: (Maybe EH.TyExpr)
+              _hdIehMbAsTyPrL :: ([Maybe EH.TyExpr])
+              _hdIerrSq :: ErrSq
+              _hdIfreeTvarS :: HsNameS
+              _hdIgUniq :: UID
+              _hdIidUseOccGam :: IdUseOccGam
+              _hdImbRefConNm :: (Maybe Name)
+              _hdIopChain :: (OpChain EH.TyExpr)
+              _hdIoperatorName :: MaybeName
+              _hdIpp :: PP_Doc
+              _hdIppWrap :: (PP_Doc -> PP_Doc)
+              _hdItopInstanceNmL :: ([HsName])
+              _hdItrpp :: TrPP
+              _hdItyConIs :: TypeConFixedMeaning
+              _hdIundefOccGam :: IdUseOccGam
+              _tlIeh :: ([EH.TyExpr])
+              _tlIerrSq :: ErrSq
+              _tlIfreeTvarS :: HsNameS
+              _tlIgUniq :: UID
+              _tlIidUseOccGam :: IdUseOccGam
+              _tlIpp :: PP_Doc
+              _tlIppL :: ([PP_Doc])
+              _tlIppWrap :: (PP_Doc -> PP_Doc)
+              _tlItopInstanceNmL :: ([HsName])
+              _tlItrpp :: TrPP
+              _tlIundefOccGam :: IdUseOccGam
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 414, column 9)
+              _lhsOppL =
+                  _hdIpp : _tlIppL
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 221, column 9)
+              _doGenVarWild =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 198, column 21)
+              _lhsOeh =
+                  _hdIeh : _tlIeh
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  _hdIerrSq `Seq.union` _tlIerrSq
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  _hdIpp >-< _tlIpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  _hdIppWrap . _tlIppWrap
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  _hdItrpp >< _tlItrpp
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
+              -- copy rule (up)
+              _lhsOgUniq =
+                  _tlIgUniq
+              -- copy rule (up)
+              _lhsOtopInstanceNmL =
+                  _tlItopInstanceNmL
+              -- copy rule (from local)
+              _hdOdoGenVarWild =
+                  _doGenVarWild
+              -- copy rule (down)
+              _hdOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (down)
+              _hdOgUniq =
+                  _lhsIgUniq
+              -- copy rule (down)
+              _hdOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _hdOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _hdOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _hdOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _hdOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (down)
+              _hdOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+              -- copy rule (down)
+              _hdOtr =
+                  _lhsItr
+              -- copy rule (down)
+              _tlOfixityGam =
+                  _lhsIfixityGam
+              -- copy rule (chain)
+              _tlOgUniq =
+                  _hdIgUniq
+              -- copy rule (down)
+              _tlOidGam =
+                  _lhsIidGam
+              -- copy rule (down)
+              _tlOisAsPred =
+                  _lhsIisAsPred
+              -- copy rule (down)
+              _tlOnmLev =
+                  _lhsInmLev
+              -- copy rule (down)
+              _tlOopts =
+                  _lhsIopts
+              -- copy rule (down)
+              _tlOpatchEhNmInInstance =
+                  _lhsIpatchEhNmInInstance
+              -- copy rule (chain)
+              _tlOtopInstanceNmL =
+                  _hdItopInstanceNmL
+              -- copy rule (down)
+              _tlOtr =
+                  _lhsItr
+              ( _hdIconNm,_hdIeh,_hdIehMbAsPr,_hdIehMbAsPrL,_hdIehMbAsTyPr,_hdIehMbAsTyPrL,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdImbRefConNm,_hdIopChain,_hdIoperatorName,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItrpp,_hdItyConIs,_hdIundefOccGam) =
+                  hd_ _hdOdoGenVarWild _hdOfixityGam _hdOgUniq _hdOidGam _hdOisAsPred _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL _hdOtr
+              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItrpp,_tlIundefOccGam) =
+                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisAsPred _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL _tlOtr
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
+sem_Types_Nil :: T_Types
+sem_Types_Nil =
+    (\ _lhsIfixityGam
+       _lhsIgUniq
+       _lhsIidGam
+       _lhsIisAsPred
+       _lhsInmLev
+       _lhsIopts
+       _lhsIpatchEhNmInInstance
+       _lhsItopInstanceNmL
+       _lhsItr ->
+         (let _lhsOppL :: ([PP_Doc])
+              _lhsOeh :: ([EH.TyExpr])
+              _lhsOerrSq :: ErrSq
+              _lhsOfreeTvarS :: HsNameS
+              _lhsOidUseOccGam :: IdUseOccGam
+              _lhsOpp :: PP_Doc
+              _lhsOppWrap :: (PP_Doc -> PP_Doc)
+              _lhsOtrpp :: TrPP
+              _lhsOundefOccGam :: IdUseOccGam
+              _lhsOgUniq :: UID
+              _lhsOtopInstanceNmL :: ([HsName])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 416, column 9)
+              _lhsOppL =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 198, column 21)
+              _lhsOeh =
+                  []
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
+              _lhsOerrSq =
+                  Seq.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 129, column 21)
+              _lhsOfreeTvarS =
+                  Set.empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 30)
+              _lhsOidUseOccGam =
+                  emptyGam
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
+              _lhsOpp =
+                  empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
+              _lhsOppWrap =
+                  const empty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Trace.ag"(line 1, column 29)
+              _lhsOtrpp =
+                  trppEmpty
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 842, column 30)
+              _lhsOundefOccGam =
+                  emptyGam
+              -- copy rule (chain)
+              _lhsOgUniq =
+                  _lhsIgUniq
+              -- copy rule (chain)
+              _lhsOtopInstanceNmL =
+                  _lhsItopInstanceNmL
+          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtrpp,_lhsOundefOccGam)))
diff --git a/src/UHC/Light/Compiler/HS/ModImpExp.hs b/src/UHC/Light/Compiler/HS/ModImpExp.hs
--- a/src/UHC/Light/Compiler/HS/ModImpExp.hs
+++ b/src/UHC/Light/Compiler/HS/ModImpExp.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.a)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.a)
 module UHC.Light.Compiler.HS.ModImpExp(Inh_AGItf (..), Syn_AGItf (..), sem_AGItf, wrap_AGItf) where
 
 import UHC.Light.Compiler.Base.HsName.Builtin
@@ -12,10 +12,9 @@
 import qualified Data.Set as Set
 import qualified Data.Map as Map
 import Data.Maybe
+import UHC.Light.Compiler.Base.UnderDev
 import qualified UHC.Util.Rel as Rel
 import UHC.Light.Compiler.Module.ImportExport
-import UHC.Light.Compiler.Base.Debug as Debug
-import UHC.Util.Pretty
 import UHC.Light.Compiler.Base.Target
 import qualified UHC.Light.Compiler.Base.Pragma as Pragma
 
@@ -44,6 +43,10 @@
 
 
 
+
+
+deriving instance Typeable Syn_AGItf
+
 -- AGItf -------------------------------------------------------
 {-
    visit 0:
@@ -108,13 +111,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 13, column 9)
               _nmLev =
                   nmLevModule
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 55, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 58, column 9)
               _topInstanceNmL =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
               _lhsOfileHeaderPragmas =
                   _moduleIfileHeaderPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _moduleImainValExists
               -- copy rule (up)
@@ -452,15 +455,15 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 8, column 9)
               _refmainname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm hsnMain
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 188, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 186, column 9)
               _idOccDefMain =
                   IdOcc hsnMain IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 271, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 278, column 9)
               _extraModImpL =
                   if   ehcOptOverloadedStrings _lhsIopts
                   then [ModImp True hsnModDataString hsnModDataString False [ModEntSpec (hsnQualified hsnDataStringFromString) range_ Nothing] range_]
                   else []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _declarationsImainValExists
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -1596,7 +1599,7 @@
               _patternItopInstanceNmL :: ([HsName])
               _contextIgUniq :: UID
               _contextItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
               -- copy rule (up)
@@ -1684,7 +1687,7 @@
               _tlIgUniq :: UID
               _tlIidOccDefs :: ([IdOcc])
               _tlItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
               -- copy rule (up)
@@ -1731,7 +1734,7 @@
          (let _lhsOidOccDefs :: ([IdOcc])
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -1819,6 +1822,7 @@
             local idOccDefsFld : _
             local generMaxRemArity : _
             local idOccDefsGener : _
+            local generArities : _
             local idOccDefs   : _
             local nmLev       : _
       alternative Newtype:
@@ -1836,6 +1840,7 @@
             local idOccDefsFld : _
             local generMaxRemArity : _
             local idOccDefsGener : _
+            local generArities : _
             local idOccDefs   : _
             local nmLev       : _
       alternative GADT:
@@ -1853,6 +1858,7 @@
             local idOccDefsFld : _
             local generMaxRemArity : _
             local idOccDefsGener : _
+            local generArities : _
             local idOccDefs   : _
             local nmLev       : _
       alternative KindSignature:
@@ -1896,7 +1902,6 @@
             local modEntsSub  : _
             local instancerefname : _
             local classrefname : _
-            local extranames  : _
             local idOccDef    : _
             local idOccDefVal : _
             local idOccDefsSig : _
@@ -1904,7 +1909,7 @@
             local instancename : _
             local nmLev       : _
             local mbPrevInstancename : _
-            local generDerivInfoL : _
+            local generderivnames : _
             local lUniq       : {UID}
       alternative Instance:
          child range          : {Range}
@@ -1926,11 +1931,11 @@
       alternative InstanceUseImplicitly:
          child range          : {Range}
          child expression     : Expression 
-         child name           : {Name}
-         child types          : Types 
+         child type           : Type 
          visit 0:
             local instancerefname : _
             local idOccDef    : _
+            local idOccDefVal : _
             local idOccDefs   : _
             local instancename : _
             local nmLev       : _
@@ -1996,8 +2001,8 @@
     (sem_Declaration_Class _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_FunctionalDependencies _dependencies) (sem_MaybeDeclarations _where))
 sem_Declaration (Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly _context _type _where) =
     (sem_Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly (sem_ContextItems _context) (sem_Type _type) (sem_MaybeDeclarations _where))
-sem_Declaration (Declaration_InstanceUseImplicitly _range _expression _name _types) =
-    (sem_Declaration_InstanceUseImplicitly _range (sem_Expression _expression) _name (sem_Types _types))
+sem_Declaration (Declaration_InstanceUseImplicitly _range _expression _type) =
+    (sem_Declaration_InstanceUseImplicitly _range (sem_Expression _expression) (sem_Type _type))
 sem_Declaration (Declaration_Default _range _name _types) =
     (sem_Declaration_Default _range _name (sem_Types _types))
 sem_Declaration (Declaration_Type _range _typelefthandside _type) =
@@ -2041,16 +2046,16 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 121, column 9)
               _lhsOmodDefsRel =
                   Rel.fromList [ (hsnQualified (ioccNm o),ModEnt IdOcc_Val o Set.empty range_) | o <- _idOccDefs ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 115, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 111, column 9)
               _idOccDefs =
                   _bindingsIidOccDefs
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _bindingsImainValExists
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -2117,13 +2122,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 121, column 9)
               _lhsOmodDefsRel =
                   Rel.fromList [ (hsnQualified (ioccNm o),ModEnt IdOcc_Val o Set.empty range_) | o <- _idOccDefs ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
               _idOccDef =
                   IdOcc (maybe (mkHNm _lUniq) id _patternImbTopRefname) IdOcc_Pat
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
               _idOccDefsPat =
                   [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
               _idOccDefs =
                   _patternIidOccDefs
               -- -- generated by the unique rule mechanism.
@@ -2132,10 +2137,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -2205,7 +2210,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 14, column 9)
               _refnames =
                   map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 9)
               _idOccDefs =
                   [ IdOcc n IdOcc_Val | n <- _refnames ]
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 17, column 9)
@@ -2214,10 +2219,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -2265,10 +2270,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -2301,10 +2306,10 @@
               _lhsOmodDefsRel :: ModEntRel
               _lhsOmodHideDefsRel :: ModEntRel
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
               _idOccDef =
                   IdOcc (mkHNm _lUniq) IdOcc_Fusion
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
               _idOccDefs =
                   [_idOccDef]
               -- -- generated by the unique rule mechanism.
@@ -2313,10 +2318,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -2347,10 +2352,10 @@
               _lhsOmodDefsRel :: ModEntRel
               _lhsOmodHideDefsRel :: ModEntRel
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
               _idOccDef =
                   IdOcc (mkHNm _lUniq) IdOcc_Fusion
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 161, column 9)
               _idOccDefs =
                   [_idOccDef]
               -- -- generated by the unique rule mechanism.
@@ -2359,10 +2364,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -2393,10 +2398,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -2461,6 +2466,7 @@
               _constructorsItopInstanceNmL :: ([HsName])
               _derivingsIgUniq :: UID
               _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _derivingsIhasGenericDeriving :: Bool
               _derivingsIidOccDefs :: ([IdOcc])
               _derivingsImodDefsRel :: ModEntRel
               _derivingsImodHideDefsRel :: ModEntRel
@@ -2486,24 +2492,25 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
               _typerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDef =
                   IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefsCon =
                   [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefsFld =
                   concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _generMaxRemArity =
                   length _typelefthandsideItypevariables `min` 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsGener =
-                  if ehcOptGenGenerics _lhsIopts
-                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 124, column 29)
+              (_idOccDefsGener,_generArities) =
+                  if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving
+                  then let arities = [0 .. _generMaxRemArity]
+                       in  ([IdOcc (hsnNm2GenerReprSyn a _typerefname) IdOcc_Type | a <- arities], arities)
+                  else ([], [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefs =
                   [_idOccDef]
                   ++ _idOccDefsCon
@@ -2515,10 +2522,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _derivingsIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -2584,7 +2591,7 @@
                   typelefthandside_ _typelefthandsideOgUniq _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOtopInstanceNmL
               ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIgUniq,_constructorsItopInstanceNmL) | True =
                   constructors_ _constructorsOgUniq _constructorsOmoduleNm _constructorsOnmLev _constructorsOtopInstanceNmL
-              ( _derivingsIgUniq,_derivingsIgathPragmas,_derivingsIidOccDefs,_derivingsImodDefsRel,_derivingsImodHideDefsRel,_derivingsItopInstanceNmL) | True =
+              ( _derivingsIgUniq,_derivingsIgathPragmas,_derivingsIhasGenericDeriving,_derivingsIidOccDefs,_derivingsImodDefsRel,_derivingsImodHideDefsRel,_derivingsItopInstanceNmL) | True =
                   derivings_ _derivingsOgUniq _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOtopInstanceNmL
           in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmainValExists,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 sem_Declaration_Newtype :: Range ->
@@ -2636,6 +2643,7 @@
               _constructorsItopInstanceNmL :: ([HsName])
               _derivingsIgUniq :: UID
               _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _derivingsIhasGenericDeriving :: Bool
               _derivingsIidOccDefs :: ([IdOcc])
               _derivingsImodDefsRel :: ModEntRel
               _derivingsImodHideDefsRel :: ModEntRel
@@ -2661,24 +2669,25 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
               _typerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDef =
                   IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefsCon =
                   [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefsFld =
                   concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _generMaxRemArity =
                   length _typelefthandsideItypevariables `min` 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsGener =
-                  if ehcOptGenGenerics _lhsIopts
-                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 124, column 29)
+              (_idOccDefsGener,_generArities) =
+                  if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving
+                  then let arities = [0 .. _generMaxRemArity]
+                       in  ([IdOcc (hsnNm2GenerReprSyn a _typerefname) IdOcc_Type | a <- arities], arities)
+                  else ([], [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefs =
                   [_idOccDef]
                   ++ _idOccDefsCon
@@ -2690,10 +2699,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _derivingsIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -2759,7 +2768,7 @@
                   typelefthandside_ _typelefthandsideOgUniq _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOtopInstanceNmL
               ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIgUniq,_constructorsItopInstanceNmL) | True =
                   constructors_ _constructorsOgUniq _constructorsOmoduleNm _constructorsOnmLev _constructorsOtopInstanceNmL
-              ( _derivingsIgUniq,_derivingsIgathPragmas,_derivingsIidOccDefs,_derivingsImodDefsRel,_derivingsImodHideDefsRel,_derivingsItopInstanceNmL) | True =
+              ( _derivingsIgUniq,_derivingsIgathPragmas,_derivingsIhasGenericDeriving,_derivingsIidOccDefs,_derivingsImodDefsRel,_derivingsImodHideDefsRel,_derivingsItopInstanceNmL) | True =
                   derivings_ _derivingsOgUniq _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOtopInstanceNmL
           in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmainValExists,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 sem_Declaration_GADT :: Range ->
@@ -2811,6 +2820,7 @@
               _constructorsItopInstanceNmL :: ([HsName])
               _derivingsIgUniq :: UID
               _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
+              _derivingsIhasGenericDeriving :: Bool
               _derivingsIidOccDefs :: ([IdOcc])
               _derivingsImodDefsRel :: ModEntRel
               _derivingsImodHideDefsRel :: ModEntRel
@@ -2836,24 +2846,25 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
               _typerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDef =
                   IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefsCon =
                   [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefsFld =
                   concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _generMaxRemArity =
                   length _typelefthandsideItypevariables `min` 1
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
-              _idOccDefsGener =
-                  if ehcOptGenGenerics _lhsIopts
-                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
-                  else []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 124, column 29)
+              (_idOccDefsGener,_generArities) =
+                  if ehcOptGenGenerics _lhsIopts || _derivingsIhasGenericDeriving
+                  then let arities = [0 .. _generMaxRemArity]
+                       in  ([IdOcc (hsnNm2GenerReprSyn a _typerefname) IdOcc_Type | a <- arities], arities)
+                  else ([], [])
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 119, column 9)
               _idOccDefs =
                   [_idOccDef]
                   ++ _idOccDefsCon
@@ -2865,10 +2876,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _derivingsIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -2934,7 +2945,7 @@
                   typelefthandside_ _typelefthandsideOgUniq _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOtopInstanceNmL
               ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIgUniq,_constructorsItopInstanceNmL) | True =
                   constructors_ _constructorsOgUniq _constructorsOmoduleNm _constructorsOnmLev _constructorsOtopInstanceNmL
-              ( _derivingsIgUniq,_derivingsIgathPragmas,_derivingsIidOccDefs,_derivingsImodDefsRel,_derivingsImodHideDefsRel,_derivingsItopInstanceNmL) | True =
+              ( _derivingsIgUniq,_derivingsIgathPragmas,_derivingsIhasGenericDeriving,_derivingsIidOccDefs,_derivingsImodDefsRel,_derivingsImodHideDefsRel,_derivingsItopInstanceNmL) | True =
                   derivings_ _derivingsOgUniq _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOtopInstanceNmL
           in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmainValExists,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 sem_Declaration_KindSignature :: Range ->
@@ -2962,7 +2973,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 16, column 9)
               _refnames =
                   map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 137, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 134, column 9)
               _idOccDefs =
                   [ IdOcc n IdOcc_Type | n <- _refnames ]
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 22, column 9)
@@ -2971,10 +2982,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3033,19 +3044,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 20, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 157, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 155, column 9)
               _idOccDef =
                   IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 157, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 155, column 9)
               _idOccDefs =
                   [_idOccDef]
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -3097,19 +3108,19 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 32, column 9)
               _exportrefname =
                   hsnUniqify HsNameUniqifier_FFE name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 160, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 158, column 9)
               _idOccDef =
                   IdOcc _exportrefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 160, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 158, column 9)
               _idOccDefs =
                   [_idOccDef]
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3213,35 +3224,32 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 26, column 9)
               _classrefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 17)
-              _extranames =
-                  []
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
               _idOccDef =
                   IdOcc _classrefname IdOcc_Class
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
               _idOccDefVal =
                   IdOcc _instancerefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
               _idOccDefsSig =
                   _whereIidOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 136, column 9)
               _idOccDefs =
                   [_idOccDef] ++ _idOccDefsSig
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 235, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 242, column 9)
               _instancename =
                   hsnUniqifyUID HsNameUniqifier_Class _lUniq (mkHNm _typelefthandsideIname)
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
               _nmLev =
                   _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 50, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 53, column 9)
               _lhsOtopInstanceNmL =
                   _instancename : _lhsItopInstanceNmL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 65, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 68, column 9)
               _mbPrevInstancename =
                   Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 90, column 9)
-              _generDerivInfoL =
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 93, column 9)
+              _generderivnames =
                   []
               -- -- generated by the unique rule mechanism.
               (_contextOgUniq,_lUniq) =
@@ -3249,10 +3257,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _dependenciesIgathPragmas `Set.union` _whereIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _whereImainValExists
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -3368,25 +3376,25 @@
               _instancerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm
                   $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 141, column 9)
               _idOccDef =
                   IdOcc _instancerefname IdOcc_Inst
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 141, column 9)
               _idOccDefVal =
                   IdOcc _instancerefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 141, column 9)
               _idOccDefs =
                   [_idOccDef,_idOccDefVal]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 233, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 240, column 9)
               _instancename =
                   maybe (hsnUniqifyUID HsNameUniqifier_ClassDict _lUniq (_typeIconNm)) id maybeinstancename_
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 26, column 9)
               _nmLev =
                   _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 50, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 53, column 9)
               _lhsOtopInstanceNmL =
                   _instancename : _lhsItopInstanceNmL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 65, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 68, column 9)
               _mbPrevInstancename =
                   Nothing
               -- -- generated by the unique rule mechanism.
@@ -3395,10 +3403,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _whereIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _whereImainValExists
               -- copy rule (up)
@@ -3443,10 +3451,9 @@
           in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmainValExists,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 sem_Declaration_InstanceUseImplicitly :: Range ->
                                          T_Expression ->
-                                         Name ->
-                                         T_Types ->
+                                         T_Type ->
                                          T_Declaration
-sem_Declaration_InstanceUseImplicitly range_ expression_ name_ types_ =
+sem_Declaration_InstanceUseImplicitly range_ expression_ type_ =
     (\ _lhsIgUniq
        _lhsImoduleNm
        _lhsInmLev
@@ -3465,14 +3472,15 @@
               _expressionOnmLev :: NmLev
               _expressionOopts :: EHCOpts
               _expressionOtopInstanceNmL :: ([HsName])
-              _typesOgUniq :: UID
-              _typesOnmLev :: NmLev
-              _typesOtopInstanceNmL :: ([HsName])
+              _typeOgUniq :: UID
+              _typeOnmLev :: NmLev
+              _typeOtopInstanceNmL :: ([HsName])
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              _typesIgUniq :: UID
-              _typesItopInstanceNmL :: ([HsName])
+              _typeIconNm :: Name
+              _typeIgUniq :: UID
+              _typeItopInstanceNmL :: ([HsName])
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 149, column 9)
               _lhsOmodDefsRel =
                   Rel.singleton _instancename (ModEnt IdOcc_Inst _idOccDef Set.empty range_)
@@ -3480,22 +3488,25 @@
               _instancerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm
                   $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 148, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 145, column 9)
               _idOccDef =
                   IdOcc _instancerefname IdOcc_Inst
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 148, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 145, column 9)
+              _idOccDefVal =
+                  IdOcc _instancerefname IdOcc_Val
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 145, column 9)
               _idOccDefs =
-                  [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 237, column 9)
+                  if ehcOptIsUnderDev UnderDev_NameAnalysis _lhsIopts then [_idOccDef,_idOccDefVal] else [_idOccDef]
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 244, column 9)
               _instancename =
                   mkHNm _lUniq
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
               _nmLev =
                   _lhsInmLev
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 50, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 53, column 9)
               _lhsOtopInstanceNmL =
                   _instancename : _lhsItopInstanceNmL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 65, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 68, column 9)
               _mbPrevInstancename =
                   Nothing
               -- -- generated by the unique rule mechanism.
@@ -3504,10 +3515,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -3515,7 +3526,7 @@
                   Rel.empty
               -- copy rule (up)
               _lhsOgUniq =
-                  _typesIgUniq
+                  _typeIgUniq
               -- copy rule (down)
               _expressionOmoduleNm =
                   _lhsImoduleNm
@@ -3529,18 +3540,18 @@
               _expressionOtopInstanceNmL =
                   _lhsItopInstanceNmL
               -- copy rule (chain)
-              _typesOgUniq =
+              _typeOgUniq =
                   _expressionIgUniq
               -- copy rule (from local)
-              _typesOnmLev =
+              _typeOnmLev =
                   _nmLev
               -- copy rule (chain)
-              _typesOtopInstanceNmL =
+              _typeOtopInstanceNmL =
                   _expressionItopInstanceNmL
               ( _expressionIconNm,_expressionIgUniq,_expressionItopInstanceNmL) | True =
                   expression_ _expressionOgUniq _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOtopInstanceNmL
-              ( _typesIgUniq,_typesItopInstanceNmL) | True =
-                  types_ _typesOgUniq _typesOnmLev _typesOtopInstanceNmL
+              ( _typeIconNm,_typeIgUniq,_typeItopInstanceNmL) | True =
+                  type_ _typeOgUniq _typeOnmLev _typeOtopInstanceNmL
           in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmainValExists,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 sem_Declaration_Default :: Range ->
                            MaybeName ->
@@ -3565,13 +3576,13 @@
               _typesOtopInstanceNmL :: ([HsName])
               _typesIgUniq :: UID
               _typesItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 151, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 149, column 9)
               _idOccDef =
                   IdOcc _defaultname IdOcc_Dflt
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 151, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 149, column 9)
               _idOccDefs =
                   [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 239, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 246, column 9)
               _defaultname =
                   mkHNm _lUniq
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
@@ -3583,10 +3594,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3649,10 +3660,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 28, column 9)
               _typerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 154, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 152, column 9)
               _idOccDef =
                   IdOcc _typerefname IdOcc_Type
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 154, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 152, column 9)
               _idOccDefs =
                   [_idOccDef]
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 29, column 9)
@@ -3661,10 +3672,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 116, column 26)
@@ -3727,10 +3738,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _pragmaIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3785,10 +3796,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3898,10 +3909,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _hdImainValExists || _tlImainValExists
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3968,10 +3979,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -3999,6 +4010,7 @@
          topInstanceNmL       : [HsName]
       synthesized attributes:
          gathPragmas          : Set.Set Pragma.Pragma
+         hasGenericDeriving   : Bool
          idOccDefs            : [IdOcc]
          modDefsRel           : ModEntRel
          modHideDefsRel       : ModEntRel
@@ -4013,6 +4025,7 @@
             local idOccDef    : _
             local idOccDefVal : _
             local idOccDefs   : _
+            local hasGenericDeriving : _
             local instancename : _
             local mbPrevInstancename : _
             local lUniq       : {UID}
@@ -4028,7 +4041,7 @@
                   NmLev ->
                   EHCOpts ->
                   ([HsName]) ->
-                  ( UID,(Set.Set Pragma.Pragma),([IdOcc]),ModEntRel,ModEntRel,([HsName]))
+                  ( UID,(Set.Set Pragma.Pragma),Bool,([IdOcc]),ModEntRel,ModEntRel,([HsName]))
 sem_Deriving_Deriving :: Range ->
                          MaybeName ->
                          Bool ->
@@ -4046,30 +4059,38 @@
               _lhsOgUniq :: UID
               _lUniq :: UID
               _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOhasGenericDeriving :: Bool
               _lhsOidOccDefs :: ([IdOcc])
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 153, column 29)
               (_lhsOmodDefsRel,_lhsOmodHideDefsRel) =
-                  mkInstDefsRel useimplicitly_ _instancename maybeinstancename_ _idOccDef _idOccDefVal
+                  if _hasGenericDeriving
+                  then (Rel.empty, Rel.empty)
+                  else
+                       mkInstDefsRel useimplicitly_ _instancename maybeinstancename_ _idOccDef _idOccDefVal
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 37, column 9)
               _instancerefname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm
                   $ maybe _instancename id _mbPrevInstancename
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 190, column 9)
               _idOccDef =
                   IdOcc _instancerefname IdOcc_Inst
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 190, column 9)
               _idOccDefVal =
                   IdOcc _instancerefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 190, column 9)
               _idOccDefs =
+                  if _hasGenericDeriving then [] else
                   [_idOccDef,_idOccDefVal]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 247, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 200, column 9)
+              _hasGenericDeriving =
+                  name_ == (hsnQualified $ ehbnGenerClassGeneric $ ehcOptBuiltinNames $ _lhsIopts)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 254, column 9)
               _instancename =
                   maybe (mkHNm _lUniq) id maybeinstancename_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 60, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 63, column 9)
               _lhsOtopInstanceNmL =
                   _instancename : _lhsItopInstanceNmL
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 70, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 73, column 9)
               _mbPrevInstancename =
                   Nothing
               -- -- generated by the unique rule mechanism.
@@ -4078,10 +4099,13 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 196, column 43)
+              _lhsOhasGenericDeriving =
+                  _hasGenericDeriving
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-          in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
+          in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOhasGenericDeriving,_lhsOidOccDefs,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 -- Derivings ---------------------------------------------------
 {-
    visit 0:
@@ -4094,6 +4118,7 @@
          topInstanceNmL       : [HsName]
       synthesized attributes:
          gathPragmas          : Set.Set Pragma.Pragma
+         hasGenericDeriving   : Bool
          idOccDefs            : [IdOcc]
          modDefsRel           : ModEntRel
          modHideDefsRel       : ModEntRel
@@ -4114,7 +4139,7 @@
                    NmLev ->
                    EHCOpts ->
                    ([HsName]) ->
-                   ( UID,(Set.Set Pragma.Pragma),([IdOcc]),ModEntRel,ModEntRel,([HsName]))
+                   ( UID,(Set.Set Pragma.Pragma),Bool,([IdOcc]),ModEntRel,ModEntRel,([HsName]))
 sem_Derivings_Cons :: T_Deriving ->
                       T_Derivings ->
                       T_Derivings
@@ -4125,6 +4150,7 @@
        _lhsIopts
        _lhsItopInstanceNmL ->
          (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOhasGenericDeriving :: Bool
               _lhsOidOccDefs :: ([IdOcc])
               _lhsOmodDefsRel :: ModEntRel
               _lhsOmodHideDefsRel :: ModEntRel
@@ -4142,12 +4168,14 @@
               _tlOtopInstanceNmL :: ([HsName])
               _hdIgUniq :: UID
               _hdIgathPragmas :: (Set.Set Pragma.Pragma)
+              _hdIhasGenericDeriving :: Bool
               _hdIidOccDefs :: ([IdOcc])
               _hdImodDefsRel :: ModEntRel
               _hdImodHideDefsRel :: ModEntRel
               _hdItopInstanceNmL :: ([HsName])
               _tlIgUniq :: UID
               _tlIgathPragmas :: (Set.Set Pragma.Pragma)
+              _tlIhasGenericDeriving :: Bool
               _tlIidOccDefs :: ([IdOcc])
               _tlImodDefsRel :: ModEntRel
               _tlImodHideDefsRel :: ModEntRel
@@ -4155,7 +4183,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 196, column 43)
+              _lhsOhasGenericDeriving =
+                  _hdIhasGenericDeriving || _tlIhasGenericDeriving
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -4200,11 +4231,11 @@
               -- copy rule (chain)
               _tlOtopInstanceNmL =
                   _hdItopInstanceNmL
-              ( _hdIgUniq,_hdIgathPragmas,_hdIidOccDefs,_hdImodDefsRel,_hdImodHideDefsRel,_hdItopInstanceNmL) | True =
+              ( _hdIgUniq,_hdIgathPragmas,_hdIhasGenericDeriving,_hdIidOccDefs,_hdImodDefsRel,_hdImodHideDefsRel,_hdItopInstanceNmL) | True =
                   hd_ _hdOgUniq _hdOmoduleNm _hdOnmLev _hdOopts _hdOtopInstanceNmL
-              ( _tlIgUniq,_tlIgathPragmas,_tlIidOccDefs,_tlImodDefsRel,_tlImodHideDefsRel,_tlItopInstanceNmL) | True =
+              ( _tlIgUniq,_tlIgathPragmas,_tlIhasGenericDeriving,_tlIidOccDefs,_tlImodDefsRel,_tlImodHideDefsRel,_tlItopInstanceNmL) | True =
                   tl_ _tlOgUniq _tlOmoduleNm _tlOnmLev _tlOopts _tlOtopInstanceNmL
-          in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
+          in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOhasGenericDeriving,_lhsOidOccDefs,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 sem_Derivings_Nil :: T_Derivings
 sem_Derivings_Nil =
     (\ _lhsIgUniq
@@ -4213,6 +4244,7 @@
        _lhsIopts
        _lhsItopInstanceNmL ->
          (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
+              _lhsOhasGenericDeriving :: Bool
               _lhsOidOccDefs :: ([IdOcc])
               _lhsOmodDefsRel :: ModEntRel
               _lhsOmodHideDefsRel :: ModEntRel
@@ -4221,7 +4253,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 196, column 43)
+              _lhsOhasGenericDeriving =
+                  False
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 115, column 26)
@@ -4236,7 +4271,7 @@
               -- copy rule (chain)
               _lhsOtopInstanceNmL =
                   _lhsItopInstanceNmL
-          in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOidOccDefs,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
+          in  ( _lhsOgUniq,_lhsOgathPragmas,_lhsOhasGenericDeriving,_lhsOidOccDefs,_lhsOmodDefsRel,_lhsOmodHideDefsRel,_lhsOtopInstanceNmL)))
 -- Export ------------------------------------------------------
 {-
    visit 0:
@@ -4707,7 +4742,7 @@
               _literalOtopInstanceNmL :: ([HsName])
               _literalIgUniq :: UID
               _literalItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -4740,7 +4775,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -4762,7 +4797,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 263, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 270, column 9)
               _lhsOconNm =
                   name_
               -- copy rule (chain)
@@ -4784,7 +4819,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -4814,7 +4849,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -4869,7 +4904,7 @@
               _functionItopInstanceNmL :: ([HsName])
               _argumentsIgUniq :: UID
               _argumentsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -4949,7 +4984,7 @@
               _operatorItopInstanceNmL :: ([HsName])
               _rightExpressionIgUniq :: UID
               _rightExpressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5048,7 +5083,7 @@
               _rightExpressionIconNm :: Name
               _rightExpressionIgUniq :: UID
               _rightExpressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5129,7 +5164,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5185,7 +5220,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
@@ -5263,7 +5298,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
@@ -5329,7 +5364,7 @@
               _expressionsOtopInstanceNmL :: ([HsName])
               _expressionsIgUniq :: UID
               _expressionsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5383,7 +5418,7 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 52, column 9)
@@ -5441,7 +5476,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5496,7 +5531,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5568,7 +5603,7 @@
               _functionItopInstanceNmL :: ([HsName])
               _argumentsIgUniq :: UID
               _argumentsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5650,7 +5685,7 @@
               _elseExpressionIconNm :: Name
               _elseExpressionIgUniq :: UID
               _elseExpressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5739,7 +5774,7 @@
               _expressionItopInstanceNmL :: ([HsName])
               _alternativesIgUniq :: UID
               _alternativesItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5802,7 +5837,7 @@
               _expressionsOtopInstanceNmL :: ([HsName])
               _expressionsIgUniq :: UID
               _expressionsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5865,7 +5900,7 @@
               _thenItopInstanceNmL :: ([HsName])
               _toIgUniq :: UID
               _toItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -5954,7 +5989,7 @@
               _expressionItopInstanceNmL :: ([HsName])
               _qualifiersIgUniq :: UID
               _qualifiersItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6018,7 +6053,7 @@
               _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
               _recordExpressionBindingsIgUniq :: UID
               _recordExpressionBindingsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6073,7 +6108,7 @@
               _expressionItopInstanceNmL :: ([HsName])
               _recordExpressionBindingsIgUniq :: UID
               _recordExpressionBindingsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6145,7 +6180,7 @@
               _expressionItopInstanceNmL :: ([HsName])
               _rowRecordExpressionUpdatesIgUniq :: UID
               _rowRecordExpressionUpdatesItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6200,7 +6235,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -6231,7 +6266,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6277,7 +6312,7 @@
               _statementsOtopInstanceNmL :: ([HsName])
               _statementsIgUniq :: UID
               _statementsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6332,7 +6367,7 @@
               _functionItopInstanceNmL :: ([HsName])
               _argumentsIgUniq :: UID
               _argumentsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6404,7 +6439,7 @@
               _expressionIconNm :: Name
               _expressionIgUniq :: UID
               _expressionItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 272, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -6851,10 +6886,10 @@
               _lefthandsideItopInstanceNmL :: ([HsName])
               _righthandsideIgUniq :: UID
               _righthandsideItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 169, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 167, column 9)
               _idOccDef =
                   IdOcc _lefthandsideIrefname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 169, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 167, column 9)
               _idOccDefs =
                   [_idOccDef]
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
@@ -6863,10 +6898,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
               _nmLevFun =
                   _lhsInmLev
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _lefthandsideImainValExists
               -- copy rule (up)
@@ -6975,10 +7010,10 @@
               _tlIidOccDefs :: ([IdOcc])
               _tlImainValExists :: Bool
               _tlItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _hdImainValExists || _tlImainValExists
               -- copy rule (up)
@@ -7033,10 +7068,10 @@
               _lhsOmainValExists :: Bool
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (chain)
@@ -7111,7 +7146,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _hdIgathPragmas `Set.union` _tlIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
               -- copy rule (up)
@@ -7169,7 +7204,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -7227,7 +7262,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -8514,13 +8549,13 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 47, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLevFun _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 79, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 82, column 9)
               _mainValExists =
                   name_ == hsnMain
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _mainValExists
               -- copy rule (up)
@@ -8585,10 +8620,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 49, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLevFun _lhsImoduleNm operator_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _leftPatternImainValExists || _rightPatternImainValExists
               -- copy rule (up)
@@ -8664,10 +8699,10 @@
               _patternsIidOccDefs :: ([IdOcc])
               _patternsImainValExists :: Bool
               _patternsItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _lefthandsideIidOccDefs ++ _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _lefthandsideImainValExists || _patternsImainValExists
               -- copy rule (up)
@@ -8750,10 +8785,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 60, column 9)
               _typeOnmLev =
                   _lhsInmLev + 1
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _lefthandsideIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _lefthandsideImainValExists
               -- copy rule (up)
@@ -8959,10 +8994,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   _justIgathPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _justIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _justImainValExists
               -- copy rule (up)
@@ -9004,10 +9039,10 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
               _lhsOgathPragmas =
                   Set.empty
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (chain)
@@ -9494,7 +9529,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 68, column 9)
               _realModuleNm =
                   maybe _lhsImoduleNm id name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 160, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Module.ag"(line 164, column 9)
               _lhsOmod =
                   Mod _lhsImoduleNm name_
                       _exportsImodExpsMb _modImpL
@@ -9503,7 +9538,7 @@
               -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
               _lhsOfileHeaderPragmas =
                   _fileHeaderPragmas
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _bodyImainValExists
               -- copy rule (up)
@@ -9711,13 +9746,13 @@
               _literalOtopInstanceNmL :: ([HsName])
               _literalIgUniq :: UID
               _literalItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (up)
@@ -9754,28 +9789,28 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 100, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 9)
               _isWildcard =
                   hsnIsWild name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
               _idOccDef =
                   IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
               _idOccDefsNoWildcard =
                   if _isWildcard then [] else [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 178, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 176, column 9)
               _idOccDefs =
                   _idOccDefsNoWildcard
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 227, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 234, column 9)
               _lhsOmbTopRefname =
                   if _isWildcard then Just _refname else Nothing
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 85, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 88, column 9)
               _mainValExists =
                   name_ == hsnMain
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _mainValExists
               -- copy rule (chain)
@@ -9807,16 +9842,16 @@
               _patternsIidOccDefs :: ([IdOcc])
               _patternsImainValExists :: Bool
               _patternsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 219, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 226, column 9)
               _conNm =
                   name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternsImainValExists
               -- copy rule (up)
@@ -9862,13 +9897,13 @@
               _patternImainValExists :: Bool
               _patternImbTopRefname :: (Maybe HsName)
               _patternItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -9918,25 +9953,25 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 100, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 9)
               _isWildcard =
                   hsnIsWild name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
               _idOccDef =
                   IdOcc _refname IdOcc_Val
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 172, column 9)
               _idOccDefsNoWildcard =
                   if _isWildcard then [] else [_idOccDef]
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 180, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 178, column 9)
               _idOccDefs =
                   _idOccDefsNoWildcard ++ _patternIidOccDefs
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 227, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 234, column 9)
               _lhsOmbTopRefname =
                   if _isWildcard then Just _refname else Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _idOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -9972,13 +10007,13 @@
               _lhsOmainValExists :: Bool
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (chain)
@@ -10010,13 +10045,13 @@
               _patternsIidOccDefs :: ([IdOcc])
               _patternsImainValExists :: Bool
               _patternsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternsImainValExists
               -- copy rule (up)
@@ -10070,13 +10105,13 @@
               _patternImainValExists :: Bool
               _patternImbTopRefname :: (Maybe HsName)
               _patternItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _annotationIidOccDefs ++ _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -10143,16 +10178,16 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 56, column 9)
               _typeOnmLev =
                   _lhsInmLev + 1
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -10217,16 +10252,16 @@
               _rightPatternImainValExists :: Bool
               _rightPatternImbTopRefname :: (Maybe HsName)
               _rightPatternItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 221, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 228, column 9)
               _conNm =
                   constructorOperator_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _leftPatternImainValExists || _rightPatternImainValExists
               -- copy rule (up)
@@ -10285,13 +10320,13 @@
               _patternsIidOccDefs :: ([IdOcc])
               _patternsImainValExists :: Bool
               _patternsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternsImainValExists
               -- copy rule (up)
@@ -10336,16 +10371,16 @@
               _recordPatternBindingsIgUniq :: UID
               _recordPatternBindingsIidOccDefs :: ([IdOcc])
               _recordPatternBindingsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 219, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 226, column 9)
               _conNm =
                   name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _recordPatternBindingsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (up)
@@ -10399,13 +10434,13 @@
               _rowRecordPattternBindingsIgUniq :: UID
               _rowRecordPattternBindingsIidOccDefs :: ([IdOcc])
               _rowRecordPattternBindingsItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs ++ _rowRecordPattternBindingsIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -10455,13 +10490,13 @@
               _lhsOmainValExists :: Bool
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (chain)
@@ -10493,13 +10528,13 @@
               _patternImainValExists :: Bool
               _patternImbTopRefname :: (Maybe HsName)
               _patternItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -10545,13 +10580,13 @@
               _patternImainValExists :: Bool
               _patternImbTopRefname :: (Maybe HsName)
               _patternItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 236, column 9)
               _lhsOmbTopRefname =
                   Nothing
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _patternImainValExists
               -- copy rule (up)
@@ -10609,7 +10644,7 @@
          (let _lhsOidOccDefs :: ([IdOcc])
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -10677,10 +10712,10 @@
               _tlIidOccDefs :: ([IdOcc])
               _tlImainValExists :: Bool
               _tlItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   _hdImainValExists || _tlImainValExists
               -- copy rule (up)
@@ -10728,10 +10763,10 @@
               _lhsOmainValExists :: Bool
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 75, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ModImpExp.ag"(line 78, column 25)
               _lhsOmainValExists =
                   False
               -- copy rule (chain)
@@ -11570,7 +11605,7 @@
               _patternImainValExists :: Bool
               _patternImbTopRefname :: (Maybe HsName)
               _patternItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
               -- copy rule (up)
@@ -11608,10 +11643,10 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 92, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 184, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 182, column 9)
               _idOccDef =
                   IdOcc _refname IdOcc_Val
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -11674,7 +11709,7 @@
               _tlIgUniq :: UID
               _tlIidOccDefs :: ([IdOcc])
               _tlItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
               -- copy rule (up)
@@ -11721,7 +11756,7 @@
          (let _lhsOidOccDefs :: ([IdOcc])
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -12197,7 +12232,7 @@
               _patternImainValExists :: Bool
               _patternImbTopRefname :: (Maybe HsName)
               _patternItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _patternIidOccDefs
               -- copy rule (up)
@@ -12274,7 +12309,7 @@
               _tlIgUniq :: UID
               _tlIidOccDefs :: ([IdOcc])
               _tlItopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _hdIidOccDefs ++ _tlIidOccDefs
               -- copy rule (up)
@@ -12321,7 +12356,7 @@
          (let _lhsOidOccDefs :: ([IdOcc])
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
               -- copy rule (chain)
@@ -13118,7 +13153,7 @@
               _rightTypeIconNm :: Name
               _rightTypeIgUniq :: UID
               _rightTypeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 256, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 263, column 9)
               _lhsOconNm =
                   _operatorIconNm
               -- copy rule (up)
@@ -13208,7 +13243,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 254, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 261, column 9)
               _lhsOconNm =
                   name_
               -- copy rule (chain)
@@ -13234,7 +13269,7 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13283,7 +13318,7 @@
               _operatorItopInstanceNmL :: ([HsName])
               _rightTypeIgUniq :: UID
               _rightTypeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13348,7 +13383,7 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13389,7 +13424,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13408,7 +13443,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13428,7 +13463,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13448,7 +13483,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13475,7 +13510,7 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
@@ -13516,7 +13551,7 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
@@ -13562,7 +13597,7 @@
               _typeItopInstanceNmL :: ([HsName])
               _rowTypeUpdatesIgUniq :: UID
               _rowTypeUpdatesItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13603,7 +13638,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13635,7 +13670,7 @@
               _typeItopInstanceNmL :: ([HsName])
               _rowTypeUpdatesIgUniq :: UID
               _rowTypeUpdatesItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13676,7 +13711,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13708,7 +13743,7 @@
               _typeItopInstanceNmL :: ([HsName])
               _rowTypeUpdatesIgUniq :: UID
               _rowTypeUpdatesItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13749,7 +13784,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13781,7 +13816,7 @@
               _typeIconNm :: Name
               _typeIgUniq :: UID
               _typeItopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (up)
@@ -13823,7 +13858,7 @@
          (let _lhsOconNm :: Name
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 266, column 9)
               _lhsOconNm =
                   hsnUnknown
               -- copy rule (chain)
@@ -13974,16 +14009,16 @@
               _patternsIgUniq :: UID
               _patternsItopInstanceNmL :: ([HsName])
               _patternsItypevariables :: Names
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 205, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 212, column 9)
               _lhsOrange =
                   range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 205, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 212, column 9)
               _lhsOname =
                   name_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
               _lhsOtypevariables =
                   _patternsItypevariables
               -- copy rule (up)
@@ -14037,16 +14072,16 @@
               _rightPatternIgUniq :: UID
               _rightPatternItopInstanceNmL :: ([HsName])
               _rightPatternItypevariables :: Names
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 215, column 9)
               _lhsOrange =
                   range_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 215, column 9)
               _lhsOname =
                   operator_
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   []
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
               _lhsOtypevariables =
                   _leftPatternItypevariables ++ _rightPatternItypevariables
               -- copy rule (up)
@@ -14116,10 +14151,10 @@
               _patternsIgUniq :: UID
               _patternsItopInstanceNmL :: ([HsName])
               _patternsItypevariables :: Names
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 105, column 21)
               _lhsOidOccDefs =
                   _lefthandsideIidOccDefs
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
               _lhsOtypevariables =
                   _lefthandsideItypevariables ++ _patternsItypevariables
               -- copy rule (up)
@@ -14206,7 +14241,7 @@
               -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 58, column 9)
               _refname =
                   hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
-              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 213, column 9)
+              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 220, column 9)
               _lhsOtypevariables =
                   [name_]
               -- copy rule (chain)
@@ -14269,7 +14304,7 @@
               _tlIgUniq :: UID
               _tlItopInstanceNmL :: ([HsName])
               _tlItypevariables :: Names
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
               _lhsOtypevariables =
                   _hdItypevariables ++ _tlItypevariables
               -- copy rule (up)
@@ -14316,7 +14351,7 @@
          (let _lhsOtypevariables :: Names
               _lhsOgUniq :: UID
               _lhsOtopInstanceNmL :: ([HsName])
-              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
+              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 25)
               _lhsOtypevariables =
                   []
               -- copy rule (chain)
diff --git a/src/UHC/Light/Compiler/HS/Parser.hs b/src/UHC/Light/Compiler/HS/Parser.hs
--- a/src/UHC/Light/Compiler/HS/Parser.hs
+++ b/src/UHC/Light/Compiler/HS/Parser.hs
@@ -19,13 +19,15 @@
 import UHC.Util.Pretty
 import Data.Maybe
 import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Base.UnderDev
 import qualified UHC.Util.FastSeq as Seq
 
 
 
 
 
-{-# LINE 41 "src/ehc/HS/Parser.chs" #-}
+
+{-# LINE 44 "src/ehc/HS/Parser.chs" #-}
 pPacked' :: HSParser Token -> HSParser Token -> HSParser (Range -> v) -> HSParser v
 pPacked' pO pC pMk = (\o mk c -> mk (mkRange2 o c)) <$> pO <*> pMk <*> pC
 
@@ -38,33 +40,33 @@
 pCurlys' :: HSParser (Range -> v) -> HSParser v
 pCurlys' = pPacked' pOCURLY pCCURLY
 
-{-# LINE 55 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 58 "src/ehc/HS/Parser.chs" #-}
 pImpls' :: HSParser (Range -> v) -> HSParser v
 pImpls' = pPacked' pOIMPL pCIMPL
 
 pImpls :: IsParser p Token => p v -> p v
 pImpls = pPacked pOIMPL pCIMPL
 
-{-# LINE 63 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 66 "src/ehc/HS/Parser.chs" #-}
 pApp            ::   AppLike a boundmeta => HSParser a -> HSParser a
 pApp p          =    appTopApp <$> pList1 p
 
-{-# LINE 72 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 75 "src/ehc/HS/Parser.chs" #-}
 type HSParser         ep    =    LayoutParser Token ep
 type HSParser2        ep    =    LayoutParser2 Token ep
 type HSParser'        ep    =    PlainParser Token ep
 
-{-# LINE 78 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 81 "src/ehc/HS/Parser.chs" #-}
 pAGItf :: EHCOpts -> HSParser AGItf
 pAGItf opts
   =   AGItf_AGItf <$> pModule opts pBody'
 
-{-# LINE 88 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 91 "src/ehc/HS/Parser.chs" #-}
 pAGItfImport :: EHCOpts -> HSParser AGItf
 pAGItfImport opts
   =   AGItf_AGItf <$> pModule opts (\opts _ -> pBodyImport opts)
 
-{-# LINE 102 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 105 "src/ehc/HS/Parser.chs" #-}
 data Expression4Result
   = Expression4Result_Op                (Expression,Range)
   | Expression4Result_CommaList         [Expression]
@@ -75,7 +77,7 @@
 type Expression4 = (Expression,Int,[Expression4Result])
 
 
-{-# LINE 118 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 121 "src/ehc/HS/Parser.chs" #-}
 pPragma' :: (Range -> Pragma -> x) -> HSParser x
 pPragma' mk
   = pPacked' pOPRAGMA pCPRAGMA
@@ -97,7 +99,7 @@
   = pPragma' Declaration_Pragma
 
 
-{-# LINE 145 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 148 "src/ehc/HS/Parser.chs" #-}
 pModule :: EHCOpts -> (EHCOpts -> (HSParser2 Declaration) -> HSParser Body) -> HSParser Module
 pModule opts pBody
   = pList_gr pPragma
@@ -106,7 +108,7 @@
          )
   <?> "pModule"
 
-{-# LINE 171 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 174 "src/ehc/HS/Parser.chs" #-}
 pImportExport :: (Range -> Name -> ie,Range -> Name -> MaybeNames -> ie,Range -> Name -> ie) -> HSParser ie
 pImportExport (sem_Var,sem_tOrC,sem_tOrC_complete)
   =   mkRngNm sem_Var <$> qvar
@@ -119,7 +121,7 @@
            )
   <?> "pImportExport"
 
-{-# LINE 185 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 188 "src/ehc/HS/Parser.chs" #-}
 pExport :: HSParser Export
 pExport
   =   (\t m -> Export_Module (mkRange1 t) (tokMkQName m)) <$> pMODULE <*> modid
@@ -132,7 +134,7 @@
   <|> pSucceed Nothing
   <?> "pMaybeExports"
 
-{-# LINE 199 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 202 "src/ehc/HS/Parser.chs" #-}
 pImport :: HSParser Import
 pImport
   =   pImportExport (Import_Variable,Import_TypeOrClass,Import_TypeOrClassComplete)
@@ -152,7 +154,7 @@
             <**> pParens'
                    ((\i r h -> ImportSpecification_Import r h i) <$> pListSep_ng pCOMMA pImport <* pMb pCOMMA)
 
-{-# LINE 224 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 227 "src/ehc/HS/Parser.chs" #-}
 pLayoutList :: HSParser d -> HSParser [d]
 pLayoutList pD
   =   pBlock pOCURLY pSEMI pCCURLY pD
@@ -162,17 +164,17 @@
   =   pBlock1 pOCURLY pSEMI pCCURLY pD
 
 
-{-# LINE 239 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 242 "src/ehc/HS/Parser.chs" #-}
 pBodyImport :: EHCOpts -> HSParser Body
 pBodyImport opts
   =   (\d -> Body_Body emptyRange d []) <$> pLayoutList pImportDeclaration
   <?> "pBodyImport"
 
-{-# LINE 246 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 249 "src/ehc/HS/Parser.chs" #-}
 pBody :: EHCOpts -> HSParser Body
 pBody opts = pBody' opts id
 
-{-# LINE 251 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 254 "src/ehc/HS/Parser.chs" #-}
 pBody' :: EHCOpts -> (HSParser2 Declaration) -> HSParser Body
 pBody' opts addDecl
   =   (\ids -> let (i,d) = foldr cmbid ([],[]) ids in Body_Body emptyRange i d)
@@ -181,10 +183,18 @@
                       )
   <?> "pBody"
   where
+        -- config
+        {-
+        altInstIf :: a -> a -> a
+        altInstIf | ehcOptIsUnderDev UnderDev_NamedInst opts = \t _ -> t
+                  | otherwise                                = \_ e -> e
+        -}
+
+        -- utils
         cmbid ([i],_) (is,ds) = (i:is,ds)
         cmbid (_,[d]) (_ ,ds) = ([],d:ds)
 
-{-# LINE 275 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 286 "src/ehc/HS/Parser.chs" #-}
         pDeclaration :: HSParser Declaration
         pDeclaration
           =   pDeclarationValue
@@ -197,7 +207,7 @@
           <|> pDeclarationConversion
           <?> "pDeclaration"
 
-{-# LINE 299 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 310 "src/ehc/HS/Parser.chs" #-}
         pTopDeclaration :: HSParser Declaration
         pTopDeclaration
           =   pDeclaration
@@ -207,7 +217,7 @@
           <|> pDeclarationDefault
           <?> "pTopDeclaration"
 
-{-# LINE 314 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 325 "src/ehc/HS/Parser.chs" #-}
         pDeclarations :: HSParser Declarations
         pDeclarations
           =   pLayoutList pDeclaration
@@ -216,17 +226,17 @@
         pDeclarations1
           =   pLayoutList1 pDeclaration
 
-{-# LINE 324 "src/ehc/HS/Parser.chs" #-}
-        pWhere'' :: HSParser d -> HSParser [d]
-        pWhere'' pD = pWHERE *> pLayoutList pD
+{-# LINE 335 "src/ehc/HS/Parser.chs" #-}
+        pWhere :: HSParser d -> HSParser [d]
+        pWhere pD = pWHERE *> pLayoutList pD
 
-        pWhere' :: HSParser d -> HSParser (Maybe [d])
-        pWhere' pD = pMb (pWhere'' pD)
+        pWhereMb :: HSParser d -> HSParser (Maybe [d])
+        pWhereMb pD = pMb (pWhere pD)
 
-        pWhere :: HSParser MaybeDeclarations
-        pWhere = pWhere' pDeclaration
+        pWhereMbDecls :: HSParser MaybeDeclarations
+        pWhereMbDecls = pWhereMb pDeclaration
 
-{-# LINE 339 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 350 "src/ehc/HS/Parser.chs" #-}
         pDeclarationFixity :: HSParser Declaration
         pDeclarationFixity
           = (\f p os@(o:_) -> Declaration_Fixity (mkRange1 o) f p (tokMkQNames os))
@@ -237,7 +247,7 @@
         pFixity :: HSParser' Fixity
         pFixity = Fixity_Infixl <$ pINFIXL <|> Fixity_Infixr <$ pINFIXR <|> Fixity_Infix <$ pINFIX
 
-{-# LINE 355 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 366 "src/ehc/HS/Parser.chs" #-}
         pDeclarationTypeSignature :: HSParser Declaration
         pDeclarationTypeSignature
           =   (\(v:vs) t -> Declaration_TypeSignature (mkRange1 v) (tokMkQNames (v:vs)) t)
@@ -281,7 +291,7 @@
                 mkTyPat (Just (tok,ty),rhs) = (\p -> Pattern_Typed      (mkRange1 tok) p ty,rhs)
                 mkTyPat (_            ,rhs) = (id                                          ,rhs)
 
-{-# LINE 410 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 421 "src/ehc/HS/Parser.chs" #-}
         pDeclarationSimpleValue :: HSParser Declaration
         pDeclarationSimpleValue
           =   Declaration_PatternBinding emptyRange <$> lhs <*> rhs
@@ -289,23 +299,23 @@
           where lhs = mkRngNm Pattern_Variable <$> var
                 rhs = (\t e -> RightHandSide_Expression (mkRange1 t) e Nothing) <$> pEQUAL <*> pExpression
 
-{-# LINE 419 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 430 "src/ehc/HS/Parser.chs" #-}
         pRhs :: HSParser Token -> HSParser RightHandSide
         pRhs pSep
-          =   (RightHandSide_Expression . mkRange1) <$> pSep <*> pExpression <*> pWhere
+          =   (RightHandSide_Expression . mkRange1) <$> pSep <*> pExpression <*> pWhereMbDecls
           <|> RightHandSide_Guarded emptyRange
               <$> pList1 ((GuardedExpression_GuardedExpression . mkRange1) <$> pVBAR <*> pExpression <* pSep <*> pExpression)
-              <*> pWhere
+              <*> pWhereMbDecls
           <?> "pRhs"
 
-{-# LINE 431 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 442 "src/ehc/HS/Parser.chs" #-}
         pDeclarationKindSignature :: HSParser Declaration
         pDeclarationKindSignature
           =   (\(v:vs) t -> Declaration_KindSignature (mkRange1 v) (tokMkQNames (v:vs)) t)
               <$> pList1Sep pCOMMA con <* pDCOLON <*> pKind
           <?> "pDeclarationKindSignature"
 
-{-# LINE 443 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 454 "src/ehc/HS/Parser.chs" #-}
         pDeclarationData :: HSParser Declaration
         pDeclarationData
           =   pDATA
@@ -314,8 +324,9 @@
               <**>   (   (\cs der lhs cx k -> mk Declaration_Data k cx lhs cs der)
                          <$> (pEQUAL *> pListSep pVBAR pDCon) <*> pDer
                      <|> (\cs der lhs cx k -> mk Declaration_Data k cx lhs cs der)
-                         <$> pWhere'' (pGADTConstructor) <*> pDer
-                     <|> pSucceed (\lhs cx k -> mk Declaration_Data k cx lhs [] [])
+                         <$> pWhere (pGADTConstructor) <*> pDer
+                     <|> (\der lhs cx k -> mk Declaration_Data k cx lhs [] der)
+                         <$> pDer
                    )))
           <|> pNEWTYPE
               <**> (   (\cx lhs c der k -> mk Declaration_Newtype k cx lhs c der)
@@ -334,42 +345,42 @@
                 pDer :: HSParser [Deriving]
                 pDer = pDERIVING *> ((:[]) <$> pDeriving <|> pParens (pListSep pCOMMA pDeriving)) <|> pSucceed []
 
-{-# LINE 495 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 507 "src/ehc/HS/Parser.chs" #-}
         pDeriving :: HSParser Deriving
         pDeriving
-          = (\(n,u) t -> Deriving_Deriving (mkRange1 t) n u (tokMkQName t)) <$> pInstanceName <*> qconid
+          = (\(n,u) t -> Deriving_Deriving (mkRange1 t) n u (tokMkQName t)) <$> pInstanceNameMb <*> qconid
 
-{-# LINE 501 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 513 "src/ehc/HS/Parser.chs" #-}
         pConstructor :: HSParser Constructor
         pConstructor
           =   con
               <**> (   (\ts c -> mkRngNm Constructor_Constructor c ts) <$> pList pTB
-{-# LINE 507 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 519 "src/ehc/HS/Parser.chs" #-}
                    <|> pCurlys' ((\fs r c -> mkRngNm Constructor_Record c fs) <$> pListSep pCOMMA pFieldDeclaration)
-{-# LINE 510 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 522 "src/ehc/HS/Parser.chs" #-}
                    )
           <|> (\l o r -> Constructor_Infix (mkRange1 o) l (tokMkQName o) r) <$> pT <*> conop <*> pT
           where pT  = pAnnotatedType pType
                 pTB = pAnnotatedType pTypeBase
 
-{-# LINE 517 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 529 "src/ehc/HS/Parser.chs" #-}
         pContextedConstructor :: HSParser Constructor
         pContextedConstructor
           =   Constructor_Contexted emptyRange <$> pContextItemsPrefix <*> pConstructor
           <|> pConstructor
 
-{-# LINE 524 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 536 "src/ehc/HS/Parser.chs" #-}
         pGADTConstructor :: HSParser Constructor
         pGADTConstructor
           =   mkRngNm Constructor_GADTFunction <$> con <* pDCOLON <*> pType
 
-{-# LINE 530 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 542 "src/ehc/HS/Parser.chs" #-}
         pFieldDeclaration :: HSParser FieldDeclaration
         pFieldDeclaration
           = (\vs@(v:_) -> FieldDeclaration_FieldDeclaration (mkRange1 v) (tokMkQNames vs))
             <$> pList1Sep pCOMMA var <* pDCOLON <*> pAnnotatedType pType
 
-{-# LINE 541 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 553 "src/ehc/HS/Parser.chs" #-}
         pDeclarationForeign :: HSParser Declaration
         pDeclarationForeign
           = pFOREIGN
@@ -381,7 +392,7 @@
           where pSafety =  (Just . tokMkStr) <$> safety <|> pSucceed Nothing
                 pFSpec = (,,) <$> ((Just . tokMkStr) <$> pStringTk <|> pSucceed Nothing) <*> var{-id_no_foreign-} <* pDCOLON <*> pType
 
-{-# LINE 560 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 572 "src/ehc/HS/Parser.chs" #-}
         pDeclarationClass :: HSParser Declaration
         pDeclarationClass
           = (\t -> Declaration_Class (mkRange1 t))
@@ -390,36 +401,62 @@
             <*> (pVBAR *> pListSep pCOMMA pFunctionalDependency
                 `opt` []
                 )
-            <*> pWhere' (pDeclarationValue <|> pDeclarationTypeSignature)
+            <*> pWhereMb (pDeclarationValue <|> pDeclarationTypeSignature)
           where pFunctionalDependency :: HSParser FunctionalDependency
                 pFunctionalDependency
                   = (\vs1@(v:_) vs2 -> FunctionalDependency_Dependency (mkRange1 v) (tokMkQNames vs1) (tokMkQNames vs2))
                     <$> pList1 tyvar <* pRARROW <*> pList1 tyvar
 
-{-# LINE 580 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 592 "src/ehc/HS/Parser.chs" #-}
         pInstanceName :: HSParser (Maybe HsName,Bool)
         pInstanceName
-          =   (\n e -> (Just (tokMkQName n),e)) <$> varid <*> (True <$ pLTCOLON <|> False <$ pDCOLON)
+          =   (if ehcOptIsUnderDev UnderDev_NamedInst opts
+               then (\n e -> (Just (tokMkQName n),e)) <$> varid <*> (                     False <$ pEQUAL )
+               else (\n e -> (Just (tokMkQName n),e)) <$> varid <*> (True <$ pLTCOLON <|> False <$ pDCOLON)
+              )
+
+        pInstanceNameMb :: HSParser (Maybe HsName,Bool)
+        pInstanceNameMb
+          =   pInstanceName
           <|> pSucceed (Nothing,True)
 
-{-# LINE 587 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 606 "src/ehc/HS/Parser.chs" #-}
         pDeclarationInstance :: HSParser Declaration
         pDeclarationInstance
           =   pINSTANCE
-              <**> (   -- (\((n,u),c,cl,ts) d t -> Declaration_Instance (mkRange1 t) InstNormal n u c (tokMkQName cl) ts d)
-                       (\((n,u),c,h) d t -> Declaration_Instance (mkRange1 t) InstNormal n u c h d)
+              <**> (if ehcOptIsUnderDev UnderDev_NamedInst opts
+                    then -- new one
+                      (   pInstanceName
+                          <**> ( (\c h md (n,u) t -> Declaration_Instance (mkRange1 t) InstNormal n u c h md)
+                                 <$> pContextItemsPrefixOpt <*> pHeaderTy <*> pWhereMb pDeclarationValue
+                               )
+                      <|> (\c h md t -> Declaration_Instance (mkRange1 t) InstNormal Nothing True c h md)
+                          <$> pContextItemsPrefixOpt <*> pHeaderTy <*> pWhereMb pDeclarationValue
+                      <|> (\hty e t -> Declaration_InstanceUseImplicitly (mkRange1 t) e hty)
+                          <$> pHeaderTy <* pEQUAL <*> pExpression
+                      )
+                    else -- old one
+                      (   (\((n,u),c,h) d t -> Declaration_Instance (mkRange1 t) InstNormal n u c h d)
+                          <$> pHeader
+                          <*> pWhereMb pDeclarationValue
+                      <|> (\e hty t -> Declaration_InstanceUseImplicitly (mkRange1 t) e hty)
+                          <$> pExpression <* pLTCOLON <*> pHeaderTy
+                   )  )
+{-
+          =   pINSTANCE
+              <**> (   (\((n,u),c,h) d t -> Declaration_Instance (mkRange1 t) InstNormal n u c h d)
                        <$> pHeader
-                       <*> pWhere' pDeclarationValue
-                   <|> (\e cl ts t -> Declaration_InstanceUseImplicitly (mkRange1 t) e (tokMkQName cl) ts)
-                       <$> pExpression <* pLTCOLON <*> qconid <*> pList1 pTypeBase
+                       <*> pWhereMb pDeclarationValue
+                   <|> (\e hty t -> Declaration_InstanceUseImplicitly (mkRange1 t) e hty)
+                       <$> pExpression <* pLTCOLON <*> pHeaderTy
                    )
-          <|> -- (\t ((n,u),c,cl,ts) -> Declaration_Instance (mkRange1 t) (InstDeriving InstDerivingFrom_Standalone) n u c (tokMkQName cl) ts Nothing)
-              (\t ((n,u),c,h) -> Declaration_Instance (mkRange1 t) (InstDeriving InstDerivingFrom_Standalone) n u c h Nothing)
-              <$> pDERIVING <* pINSTANCE <*> pHeader
-          -- where pHeader = (,,,) <$> pInstanceName <*> pContextItemsPrefixOpt <*> qconid <*> pList1 pTypeBase
-          where pHeader = (,,) <$> pInstanceName <*> pContextItemsPrefixOpt <*> pType' pTypeOpBase (\_ p -> p)
+-}
+          <|> (\t (n,u) c h -> Declaration_Instance (mkRange1 t) (InstDeriving InstDerivingFrom_Standalone) n u c h Nothing)
+              <$> pDERIVING <* pINSTANCE <*> pInstanceNameMb <*> pContextItemsPrefixOpt <*> pHeaderTy
+          where pHeader = (,,) <$> pInstanceNameMb <*> pContextItemsPrefixOpt <*> pHeaderTy
+                pHeaderTy = pType' pTypeOpBase (\_ p -> p)
 
-{-# LINE 607 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 645 "src/ehc/HS/Parser.chs" #-}
         pDeclarationDefault :: HSParser Declaration
         pDeclarationDefault
           = (Declaration_Default . mkRange1) <$> pDEFAULT <*> pMb (tokMkQName <$> qtyconid)
@@ -427,12 +464,12 @@
                 <|> pParens (pListSep pCOMMA pTypeBase)
                 )
 
-{-# LINE 620 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 658 "src/ehc/HS/Parser.chs" #-}
         pDeclarationType :: HSParser Declaration
         pDeclarationType
           =   (Declaration_Type . mkRange1) <$> pTYPE <*> pTypeLeftHandSide <* pEQUAL <*> pType
 
-{-# LINE 631 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 669 "src/ehc/HS/Parser.chs" #-}
 
         pDeclarationFusion :: HSParser Declaration
         pDeclarationFusion
@@ -442,7 +479,7 @@
         pDeclarationConversion
           = (Declaration_FusionConversion . mkRange1) <$> pCONVERT <*> (tokMkQName <$> qvar) <* pCOMMA <*> (tokMkQName <$> qvar)
 
-{-# LINE 647 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 685 "src/ehc/HS/Parser.chs" #-}
         pKindBase :: HSParser Kind
         pKindBase
           =   mkRngNm Kind_Constructor <$> pSTAR
@@ -475,7 +512,7 @@
           =  ((Kind_Forall . mkRange1) <$> pFORALL)
              <*> (tokMkQNames <$> pTyVarBinds) <* pDOT
 
-{-# LINE 685 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 723 "src/ehc/HS/Parser.chs" #-}
         pTypeBaseCon :: HSParser Type
         pTypeBaseCon
           =   mkRngNm Type_Constructor <$> gtycon_no_delims_commas
@@ -533,7 +570,7 @@
                            )
                        <*  pVBAR <*> pFlds
 
-{-# LINE 775 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 813 "src/ehc/HS/Parser.chs" #-}
         pType' :: HSParser (Type,Range) -> (HSParser Type -> HSParser (Type,Int) -> HSParser (Type,Int)) -> HSParser Type
         pType' pOp extend
           = pT'
@@ -549,7 +586,7 @@
                 mkT (e,0) =  e
                 mkT (e,_) =  Type_InfixApplicationChainTop emptyRange e
 
-{-# LINE 796 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 834 "src/ehc/HS/Parser.chs" #-}
         pType ::  HSParser Type
         pType
           = pType'
@@ -574,53 +611,53 @@
                 mkT (e,_) =  Type_InfixApplicationChainTop emptyRange e
 -}
 
-{-# LINE 830 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 868 "src/ehc/HS/Parser.chs" #-}
         pTypeQuantPrefix :: HSParser (Type -> Type)
         pTypeQuantPrefix
           =  ((Type_Forall . mkRange1) <$> pFORALL <|> (Type_Exists . mkRange1) <$> pEXISTS)
              <*> (tokMkQNames <$> pTyVarBinds) <* pDOT
 
-{-# LINE 837 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 875 "src/ehc/HS/Parser.chs" #-}
         pTypeOpPrefix :: HSParser (Type -> Type)
         pTypeOpPrefix
           =   (\l (op,rng) r -> Type_InfixApplication rng l op r) <$> pTypeApp <*> pTypeOp
           <|> (\c -> Type_Qualified emptyRange [c]) <$> pContextItemImpl <* pRARROW
 
-{-# LINE 846 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 884 "src/ehc/HS/Parser.chs" #-}
         pTypeOp :: HSParser (Type,Range)
         pTypeOp
           =   pTypeOpBaseEq
           <|> mkRngNm' Type_Variable    <$> varop_no_ty
           <|> mkRngNm' Type_Constructor <$> pDARROW
 
-{-# LINE 858 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 896 "src/ehc/HS/Parser.chs" #-}
         pTypeOpBase :: HSParser (Type,Range)
         pTypeOpBase
           = mkRngNm' Type_Constructor
             <$> (   gtycon_for_insection
                 )
 
-{-# LINE 866 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 904 "src/ehc/HS/Parser.chs" #-}
         pTypeOpBaseEq :: HSParser (Type,Range)
         pTypeOpBaseEq
           =   pTypeOpBase
           <|> mkRngNm' Type_Constructor <$> pTILDE
 
-{-# LINE 879 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 917 "src/ehc/HS/Parser.chs" #-}
         pTypeApp :: HSParser Type
         pTypeApp
           =  pT <??> pA
           where pT = pTypeBase
                 pA = (\es e -> Type_NormalApplication emptyRange e es) <$> pList1 pT
 
-{-# LINE 887 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 925 "src/ehc/HS/Parser.chs" #-}
         pTyVarBind :: HSParser Token
         pTyVarBind =  tyvar
 
         pTyVarBinds :: HSParser [Token]
         pTyVarBinds =  pList1 pTyVarBind
 
-{-# LINE 901 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 939 "src/ehc/HS/Parser.chs" #-}
         pTypeLeftHandSide :: HSParser TypeLeftHandSide
         pTypeLeftHandSide
           =   pLhs
@@ -638,7 +675,7 @@
                 pLhsTail ::  HSParser [TypePattern]
                 pLhsTail =   pList1 pTypePatternBase
 
-{-# LINE 920 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 958 "src/ehc/HS/Parser.chs" #-}
         pAnnotatedType :: HSParser Type -> HSParser Type
         pAnnotatedType pT
           =   (\(r,s) t -> if s
@@ -648,7 +685,7 @@
               <$> ((\t -> (mkRange1 t,True)) <$> pBANG <|> pSucceed (emptyRange,False))
               <*> pT
 
-{-# LINE 943 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 981 "src/ehc/HS/Parser.chs" #-}
         pContextItemsPrefix1 :: HSParser ContextItems
         pContextItemsPrefix1
           =   (:[]) <$> pContextItemImpl <* pRARROW
@@ -679,17 +716,17 @@
         pTypeContextPrefix
           = Type_Qualified emptyRange <$> pContextItemsPrefix
 
-{-# LINE 979 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1017 "src/ehc/HS/Parser.chs" #-}
         pContextItemClass :: HSParser ContextItem
         pContextItemClass
           =    mkRngNm ContextItem_Class <$> qconid <*> pList1 pTypeBase
 
-{-# LINE 985 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1023 "src/ehc/HS/Parser.chs" #-}
         pContextItemPrefix :: HSParser (ContextItem -> ContextItem)
         pContextItemPrefix
           =   (ContextItem_Forall . mkRange1) <$> pFORALL <*> (tokMkQNames <$> pTyVarBinds) <* pDOT
 
-{-# LINE 991 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1029 "src/ehc/HS/Parser.chs" #-}
         pContextItem :: HSParser ContextItem
         pContextItem
           =   pContextItemBase
@@ -698,11 +735,11 @@
                    )
           <|> pContextItemPrefix <*> pContextItem
 
-{-# LINE 1005 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1043 "src/ehc/HS/Parser.chs" #-}
         pContextItemImplWild :: HSParser ContextItem
         pContextItemImplWild = (ContextItem_Implicits . mkRange1) <$> pTDOT
 
-{-# LINE 1010 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1048 "src/ehc/HS/Parser.chs" #-}
         pContextItemImpl :: HSParser ContextItem
         pContextItemImpl
           = pImpls'
@@ -710,7 +747,7 @@
               <|>  pSucceed ContextItem_NoImplicits
               )
 
-{-# LINE 1019 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1057 "src/ehc/HS/Parser.chs" #-}
         pContextItemBase ::   HSParser ContextItem
         pContextItemBase
           =   pContextItemClass
@@ -718,7 +755,7 @@
                                <$ pLAM <*> pSelector
                           )
 
-{-# LINE 1043 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1081 "src/ehc/HS/Parser.chs" #-}
         pLiteralNumber :: HSParser Literal
         pLiteralNumber
           =   mk  8 <$> pInteger8Tk
@@ -727,7 +764,7 @@
           <?> "pLiteralNumber"
           where mk b t = Literal_Int (mkRange1 t) b (tokMkStr t)
 
-{-# LINE 1059 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1097 "src/ehc/HS/Parser.chs" #-}
         pLiteral :: HSParser Literal
         pLiteral
           =   pLiteralNumber
@@ -736,7 +773,7 @@
           <|> mkRngStr Literal_Float  <$> pFractionTk
           <?> "pLiteral"
 
-{-# LINE 1077 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1115 "src/ehc/HS/Parser.chs" #-}
         pExpressionMinusPrefix :: HSParser (Expression -> Expression)
         pExpressionMinusPrefix
           =   (Expression_Negate . mkRange1) <$> pMINUS
@@ -820,7 +857,7 @@
                                    )
                                <*  pVBAR <*> pFlds
 
-{-# LINE 1181 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1219 "src/ehc/HS/Parser.chs" #-}
         pExpressionList :: HSParser Expression
         pExpressionList
           = pBracks'
@@ -852,7 +889,7 @@
                   <|> (Qualifier_Let . mkRange1) <$> pLET <*> pDeclarations
                   <|> Qualifier_Generator emptyRange <$> pPattern <* pLARROW <*> pExpression
 
-{-# LINE 1221 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1259 "src/ehc/HS/Parser.chs" #-}
         pExpressionDo :: HSParser Expression
         pExpressionDo
           =   (Expression_Do . mkRange1) <$> pDO <*> pBlock1 pOCURLY pSEMI pCCURLY pStatement
@@ -864,7 +901,7 @@
                       -- common prefix with 'let x=e in e' dies out
                   <|> (Statement_Let . mkRange1) <$> pLET <*> pDeclarations
 
-{-# LINE 1269 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1307 "src/ehc/HS/Parser.chs" #-}
         pExpressionConUpd :: HSParser Expression
         pExpressionConUpd
           =   qcon
@@ -877,13 +914,13 @@
           where pU =   pCurlys' ((\bs r e -> Expression_RecordUpdate r e bs) <$> pList1Sep pCOMMA pRecordExpressionBinding)
                    <|> pRowRecordSelectionSuffix
 
-{-# LINE 1289 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1327 "src/ehc/HS/Parser.chs" #-}
         pRecordExpressionBinding :: HSParser RecordExpressionBinding
         pRecordExpressionBinding
           =   mkRngNm RecordExpressionBinding_Binding <$> qvar <* pEQUAL <*> pExpression
           <?> "pRecordExpressionBinding"
 
-{-# LINE 1296 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1334 "src/ehc/HS/Parser.chs" #-}
         pExpressionApp :: HSParser Expression
         pExpressionApp
           =   pE <**> ((\as e -> foldl (flip ($)) e as) <$> pList pA)
@@ -892,10 +929,12 @@
                 pA =   (\es e -> Expression_NormalApplication emptyRange e es) <$> pList1 pE
                    <|> (\es e -> Expression_ImpredicativeApplication emptyRange e es) <$> pList1 (pTILDE *> pE)
                    <|> (\es e -> Expression_ImplicitApplication emptyRange e es) <$> pList1 (pImpls' pContextedExpression)
-                   where pContextedExpression = (\e c r -> ContextedExpression_Contexted r e c) <$> pExpression <* pLTCOLON <*> pContextItem
+                   where pContextedExpression = if ehcOptIsUnderDev UnderDev_NamedInst opts
+                           then (\c e r -> ContextedExpression_Contexted r e c) <$> pContextItem <* pEQUAL   <*> pExpression
+                           else (\e c r -> ContextedExpression_Contexted r e c) <$> pExpression  <* pLTCOLON <*> pContextItem
                          pContextedExpression :: HSParser (Range -> ContextedExpression)
 
-{-# LINE 1313 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1353 "src/ehc/HS/Parser.chs" #-}
         pExpressionLayout :: HSParser Expression
         pExpressionLayout
           =   pMaybe id id pExpressionMinusPrefix <*> pExpressionApp
@@ -903,12 +942,12 @@
           <|> pExpressionDo
           <?> "pExpressionLayout"
 
-{-# LINE 1326 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1366 "src/ehc/HS/Parser.chs" #-}
         pOp, pOpm :: HSParser (Expression,Range)
         pOp  = mkRngNm' Expression_Variable <$> qvarop          <|> mkRngNm' Expression_Constructor <$> qconop
         pOpm = mkRngNm' Expression_Variable <$> qvarop_no_minus <|> mkRngNm' Expression_Constructor <$> qconop
 
-{-# LINE 1332 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1372 "src/ehc/HS/Parser.chs" #-}
         pExpression4'' :: Bool -> HSParser (Expression,Range) -> HSParser (Expression -> Expression) -> HSParser Expression -> HSParser Expression4
         pExpression4'' inParen pOp pPreNotOp pBase
           =   ((\(e,cnt,res) -> (mkC cnt e,0,res)) <$> pE)
@@ -954,7 +993,7 @@
         pExpression4' :: HSParser (Expression -> Expression) -> HSParser Expression
         pExpression4' pPreNotOp = (\(e,_,_) -> e) <$> pExpression4'' False pOp pPreNotOp pExpressionLayout
 
-{-# LINE 1379 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1419 "src/ehc/HS/Parser.chs" #-}
         pExpressionPreBase :: HSParser Expression
         pExpressionPreBase = (\ps e -> foldr ($) e ps) <$> pList_gr pExpressionPrefix <*> pExpressionLayout
 
@@ -966,7 +1005,7 @@
           = pExpression4' pExpressionPrefix
             <?> "pExpression"
 
-{-# LINE 1392 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1432 "src/ehc/HS/Parser.chs" #-}
         pExpressionNoLet :: HSParser Expression
         pExpressionNoLet
           -- =   pExpression' pExpressionNoLetPrefix
@@ -977,7 +1016,7 @@
           where pBase3 :: HSParser Expression
                 pBase3 = (\ps e -> foldr ($) e ps) <$> pList pExpressionNoLetPrefix <*> pExpressionLayout
 
-{-# LINE 1404 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1444 "src/ehc/HS/Parser.chs" #-}
         pExpressionLetPrefix :: HSParser (Expression -> Expression)
         pExpressionLetPrefix
           =   (\(s,t,d) -> Expression_Let (mkRange1 t) s d)
@@ -986,7 +1025,7 @@
                   )
           <?> "pExpressionLetPrefix"
 
-{-# LINE 1420 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1460 "src/ehc/HS/Parser.chs" #-}
         pExpressionNoLetPrefix :: HSParser (Expression -> Expression)
         pExpressionNoLetPrefix
           =   pLAM <**> pLamArgs
@@ -1000,17 +1039,19 @@
                           )
                       <*> pLamArgs
                   <|> (\_ e -> e) <$ pRARROW
-                pContextedPattern = (\p c r -> ContextedPattern_Contexted r p c) <$> pPattern <* pLTCOLON <*> pContextItem
+                pContextedPattern = if ehcOptIsUnderDev UnderDev_NamedInst opts
+                  then (\c p r -> ContextedPattern_Contexted r p c) <$> pContextItem <* pEQUAL   <*> pPattern
+                  else (\p c r -> ContextedPattern_Contexted r p c) <$> pPattern     <* pLTCOLON <*> pContextItem
                 pContextedPattern :: HSParser (Range -> ContextedPattern)
 
-{-# LINE 1444 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1486 "src/ehc/HS/Parser.chs" #-}
         pExpressionPrefix :: HSParser (Expression -> Expression)
         pExpressionPrefix
           =   pExpressionLetPrefix
           <|> pExpressionNoLetPrefix
           <?> "pExpressionPrefix"
 
-{-# LINE 1456 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1498 "src/ehc/HS/Parser.chs" #-}
         pAlternative :: HSParser Alternative
         pAlternative
           = Alternative_Alternative emptyRange <$> pPattern <*> pRhs pRARROW
@@ -1019,7 +1060,7 @@
         pAlternatives
           = pBlock1 pOCURLY pSEMI pCCURLY pAlternative
 
-{-# LINE 1470 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1512 "src/ehc/HS/Parser.chs" #-}
         pPatternBaseInParens :: HSParser (Range -> Pattern)
         pPatternBaseInParens
           =   (pPattern
@@ -1047,11 +1088,11 @@
                            )
                        <*  pVBAR <*> pFlds
 
-{-# LINE 1508 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1550 "src/ehc/HS/Parser.chs" #-}
         pPatternBaseMinusLiteral :: HSParser Pattern
         pPatternBaseMinusLiteral = (\m n -> Pattern_Literal (mkRange1 m) (-1) n) <$> pMINUS <*> pLiteralNumber
 
-{-# LINE 1513 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1555 "src/ehc/HS/Parser.chs" #-}
         pPatternBaseNoParens :: HSParser Pattern
         pPatternBaseNoParens
           = (
@@ -1069,28 +1110,28 @@
             ) )
           <?> "pPatternBaseNoParens"
 
-{-# LINE 1539 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1581 "src/ehc/HS/Parser.chs" #-}
         pPatternBase :: HSParser Pattern
         pPatternBase
           =   pPatternBaseNoParens
           <|> pParens' pPatternBaseInParens
           <?> "pPatternBase"
 
-{-# LINE 1547 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1589 "src/ehc/HS/Parser.chs" #-}
         pPatternConSuffix :: HSParser (Token -> Pattern)
         pPatternConSuffix
           =   pSucceed (\c -> mkRngNm Pattern_Constructor c [])
           <|> pCurlys' ((\bs _ c -> mkRngNm Pattern_Record c bs) <$> pListSep pCOMMA pRecordPatternBinding)
           <?> "pPatternConSuffix"
 
-{-# LINE 1557 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1599 "src/ehc/HS/Parser.chs" #-}
         pPatternBaseCon :: HSParser Pattern
         pPatternBaseCon
           =   pPatternBase
           <|> qconid <**> pPatternConSuffix
           <?> "pPatternBaseCon"
 
-{-# LINE 1565 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1607 "src/ehc/HS/Parser.chs" #-}
         pRecordPatternBinding :: HSParser RecordPatternBinding
         pRecordPatternBinding
           =   qvar
@@ -1099,7 +1140,7 @@
                    )
           <?> "pRecordPatternBinding"
 
-{-# LINE 1575 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1617 "src/ehc/HS/Parser.chs" #-}
         pPatternApp :: HSParser Pattern
         pPatternApp
           =   pPatternBase
@@ -1111,7 +1152,7 @@
           <|> (Pattern_Tuple emptyRange) <$> pParens commas_arity <*> pList1 pPatternBaseCon
           <?> "pPatternApp"
 
-{-# LINE 1590 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1632 "src/ehc/HS/Parser.chs" #-}
         pPatternOp :: HSParser Pattern
         pPatternOp
           -- =   (\l rs -> foldr (\(o,r) mk -> \l -> o l (mk r)) id rs l) <$> pPatternApp <*> pList_ng (pOp <+> pPatternApp)
@@ -1120,32 +1161,32 @@
           where pOp =
                     ((\o l r -> Pattern_InfixConstructor (mkRange1 o) l (tokMkQName o) r) <$> qconop)
 
-{-# LINE 1604 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1646 "src/ehc/HS/Parser.chs" #-}
         pPattern :: HSParser Pattern
         pPattern
           =   pPatternOp
               <??> ((\c t p -> Pattern_Typed (mkRange1 c) p t) <$> pDCOLON <*> pType)
           <?> "pPattern"
 
-{-# LINE 1614 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1656 "src/ehc/HS/Parser.chs" #-}
         pRowRecordSelectionSuffix :: HSParser (Expression -> Expression)
         pRowRecordSelectionSuffix
           = (\lbls e -> foldl (\e l -> Expression_RowRecordSelect (mkRange1 l) e (tokMkQName l)) e lbls)
             <$> pList1 (pHASH *> pSelector)
 
-{-# LINE 1621 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1663 "src/ehc/HS/Parser.chs" #-}
         pSelector :: HSParser Token
         pSelector
           =   qvarid <|> qconid <|> pIntegerTk
 
-{-# LINE 1631 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1673 "src/ehc/HS/Parser.chs" #-}
         pTypePatternBase :: HSParser TypePattern
         pTypePatternBase
           =   mkRngNm TypePattern_Variable <$> var_no_ty
           <?> "pTypePatternBase"
 
 
-{-# LINE 1653 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1695 "src/ehc/HS/Parser.chs" #-}
 commas' :: HSParser [Token]
 commas' = pList1 pCOMMA
 
@@ -1153,22 +1194,22 @@
 commas =  (map (\s -> strProd (length s + 1)) . foldr tokConcat tokEmpty) <$> commas'
   where map = tokenMap
 
-{-# LINE 1666 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1708 "src/ehc/HS/Parser.chs" #-}
 commas_arity :: HSParser Int
 commas_arity =  (\ts -> length ts + 1) <$> commas'
 
-{-# LINE 1673 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1715 "src/ehc/HS/Parser.chs" #-}
 pOptSEMISeparator :: HSParser (Maybe ())
 pOptSEMISeparator = pMb (pSeparator <|> () <$ pSEMI)
 
-{-# LINE 1678 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1720 "src/ehc/HS/Parser.chs" #-}
 modid :: HSParser Token
 modid
   =   pCONID
   <|> pQCONID
   <?> "modid"
 
-{-# LINE 1688 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1730 "src/ehc/HS/Parser.chs" #-}
 qcnames :: HSParser [Token]
 qcnames
   =   pListSep pCOMMA qcname
@@ -1180,7 +1221,7 @@
   <|> gcon
   <?> "qcname"
 
-{-# LINE 1701 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1743 "src/ehc/HS/Parser.chs" #-}
 identifier :: HSParser Token
 identifier
   =   qvar
@@ -1212,7 +1253,7 @@
   <?> "sysdcon"
 
 
-{-# LINE 1740 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1782 "src/ehc/HS/Parser.chs" #-}
 qcon    :: HSParser Token
 qcon
   =   qconid
@@ -1233,14 +1274,14 @@
   <|> pBACKQUOTE *> qconid <* pBACKQUOTE
   <?> "qconop"
 
-{-# LINE 1767 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1809 "src/ehc/HS/Parser.chs" #-}
 qconid :: HSParser Token    -- Qualified or unqualifiedb
 qconid
   =   conid
   <|> pQCONID
   <?> "qconid"
 
-{-# LINE 1777 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1819 "src/ehc/HS/Parser.chs" #-}
 conid_nopragma   :: HSParser Token
 conid_nopragma
   =   pCONID
@@ -1259,21 +1300,21 @@
   <|> pQCONSYM
   <?> "qconsym"
 
-{-# LINE 1801 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1843 "src/ehc/HS/Parser.chs" #-}
 consym :: HSParser Token
 consym
   =   pCONSYM
   <|> pCOLON -- ':' means only list cons
   <?> "consym"
 
-{-# LINE 1809 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1851 "src/ehc/HS/Parser.chs" #-}
 con :: HSParser Token
 con
   =   conid
   <|> pParens consym
   <?> "con"
 
-{-# LINE 1817 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1859 "src/ehc/HS/Parser.chs" #-}
 -----------------------------------------------------------------------------
 -- Any operator
 
@@ -1290,13 +1331,13 @@
   <?> "qop"
 
 
-{-# LINE 1854 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1896 "src/ehc/HS/Parser.chs" #-}
 tyvar   :: HSParser Token
 tyvar
   =   varid_no_ty
   <?> "tyvar"
 
-{-# LINE 1865 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1907 "src/ehc/HS/Parser.chs" #-}
 -- | special identifier: FFI safety
 safety :: HSParser Token
 safety
@@ -1305,14 +1346,14 @@
   <|> pTHREADSAFE
   <?> "safety"
 
-{-# LINE 1877 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1919 "src/ehc/HS/Parser.chs" #-}
 -- | special identifier: FFI calling convention
 callconv :: HSParser Token
 callconv
   =   snd <$> pFFIWay
   <?> "callconv"
 
-{-# LINE 1885 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1927 "src/ehc/HS/Parser.chs" #-}
 -- These special_ids are treated as keywords in various places,
 -- but as ordinary ids elsewhere.   'special_id' collects all these
 -- except 'unsafe' and 'forall' whose treatment differs depending on context
@@ -1327,14 +1368,14 @@
   <|> pDYNAMIC
   <?> "special_id_no_callconv"
 
-{-# LINE 1905 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1947 "src/ehc/HS/Parser.chs" #-}
 special_id :: HSParser Token
 special_id
   =   special_id_no_callconv
   <|> callconv
   <?> "special_id"
 
-{-# LINE 1913 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1955 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified value/function, e.g.: f, except type related keywords
 varid_no_ty :: HSParser Token
 varid_no_ty
@@ -1344,7 +1385,7 @@
   <|> safety
   <?> "varid_no_ty"
 
-{-# LINE 1929 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1971 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified value/function, e.g.: f
 varid :: HSParser Token
 varid
@@ -1353,7 +1394,7 @@
   <|> pEXISTS
   <?> "varid"
 
-{-# LINE 1941 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1983 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified value/function, e.g.: X.f
 qvarid :: HSParser Token
 qvarid
@@ -1361,7 +1402,7 @@
   <|> pQVARID
   <?> "qvarid"
 
-{-# LINE 1952 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 1994 "src/ehc/HS/Parser.chs" #-}
 -- | See comments with special_id
 special_sym_no_bang :: HSParser Token
 special_sym_no_bang
@@ -1376,7 +1417,7 @@
   <|> special_sym_no_bang
   <?> "special_sym"
 
-{-# LINE 1968 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2010 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified operator, e.g.: +, except -, !
 varsym_no_minus_bang :: HSParser Token
 varsym_no_minus_bang
@@ -1390,7 +1431,7 @@
   <|> special_sym
   <?> "varsym_no_minus"
 
-{-# LINE 1983 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2025 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified operator, e.g.: +
 varsym :: HSParser Token
 varsym
@@ -1398,14 +1439,14 @@
   <|> pMINUS
   <?> "varsym"
 
-{-# LINE 1992 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2034 "src/ehc/HS/Parser.chs" #-}
 -- | Qualified operator, e.g.: X.+, only base
 qvarsym_base :: HSParser Token
 qvarsym_base
   =   pQVARSYM
   <?> "qvarsym1"
 
-{-# LINE 2000 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2042 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: X.+, except -
 qvarsym_no_minus :: HSParser Token
 qvarsym_no_minus
@@ -1413,7 +1454,7 @@
   <|> qvarsym_base
   <?> "qvarsym_no_minus"
 
-{-# LINE 2011 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2053 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: X.+, for use inside parens
 qvarsym_for_inparens :: HSParser Token
 qvarsym_for_inparens
@@ -1421,14 +1462,14 @@
   <|> qvarsym_base
   <?> "qvarsym_for_inparens"
 
-{-# LINE 2022 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2064 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: X.+
 qvarsym :: HSParser Token
 qvarsym
   =   qvarsym_for_inparens
   <?> "qvarsym"
 
-{-# LINE 2030 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2072 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: +, `f`, except -, !
 varop_no_minus_bang   :: HSParser Token
 varop_no_minus_bang
@@ -1443,7 +1484,7 @@
   <|> pBACKQUOTE *> varid <* pBACKQUOTE
   <?> "varop_no_minus"
 
-{-# LINE 2046 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2088 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: +, `f`, except type related keywords
 varop_no_ty   :: HSParser Token
 varop_no_ty
@@ -1451,7 +1492,7 @@
   <|> pBACKQUOTE *> varid_no_ty <* pBACKQUOTE
   <?> "varop_no_minus"
 
-{-# LINE 2055 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2097 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: +, `f`, except !
 varop_no_bang   :: HSParser Token
 varop_no_bang
@@ -1466,7 +1507,7 @@
   <|> pMINUS
   <?> "varop"
 
-{-# LINE 2071 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2113 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: X.+, `X.f`, except -
 qvarop_no_minus :: HSParser Token
 qvarop_no_minus
@@ -1474,7 +1515,7 @@
   <|> pBACKQUOTE *> qvarid <* pBACKQUOTE
   <?> "qvarop_no_minus"
 
-{-# LINE 2080 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2122 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified operator, e.g.: X.+, `X.f`
 qvarop :: HSParser Token
 qvarop
@@ -1482,7 +1523,7 @@
   <|> pBACKQUOTE *> qvarid <* pBACKQUOTE
   <?> "qvarop"
 
-{-# LINE 2089 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2131 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified value/function, e.g.: f, (+), except type related keywords
 var_no_ty     :: HSParser Token
 var_no_ty
@@ -1490,7 +1531,7 @@
   <|> pParens varsym
   <?> "var"
 
-{-# LINE 2098 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2140 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified value/function, e.g.: f, (+)
 var     :: HSParser Token
 var
@@ -1498,7 +1539,7 @@
   <|> pParens varsym
   <?> "var"
 
-{-# LINE 2107 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2149 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified value/function, e.g.: X.f, (X.+)
 qvar    :: HSParser Token
 qvar
@@ -1506,14 +1547,14 @@
   <|> pParens qvarsym_for_inparens
   <?> "qvar"
 
-{-# LINE 2124 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2166 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified type constructor, e.g.: :+:
 tyconsym :: HSParser Token
 tyconsym
   =   pCONSYM
   <?> "tyconsym"
 
-{-# LINE 2132 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2174 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified type constructor, e.g.: X.:+:
 qtyconsym :: HSParser Token
 qtyconsym
@@ -1521,14 +1562,14 @@
   <|> pQCONSYM
   <?> "qtyconsym"
 
-{-# LINE 2143 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2185 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified type constructor, e.g.: Either
 tyconid   :: HSParser Token
 tyconid
   =   pCONID
   <?> "tyconid"
 
-{-# LINE 2154 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2196 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified type constructor, e.g.: X.Either
 qtyconid :: HSParser Token
 qtyconid
@@ -1536,7 +1577,7 @@
   <|> pQCONID
   <?> "qtyconid"
 
-{-# LINE 2165 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2207 "src/ehc/HS/Parser.chs" #-}
 -- | Unqualified infix type operator, e.g.: `Either`, :+:
 tyconop :: HSParser Token   -- Unqualified
 tyconop
@@ -1544,7 +1585,7 @@
   <|> pBACKQUOTE *> tyconid <* pBACKQUOTE
   <?> "tyconop"
 
-{-# LINE 2174 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2216 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified infix type operator, e.g.: `X.Either`, X.:+:
 qtyconop :: HSParser Token
 qtyconop
@@ -1552,7 +1593,7 @@
   <|> pBACKQUOTE *> qtyconid <* pBACKQUOTE
   <?> "qtyconop"
 
-{-# LINE 2183 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2225 "src/ehc/HS/Parser.chs" #-}
 -- | (Un)qualified prefix type constructor, e.g.: X.Either, (X.:+:)
 qtycon :: HSParser Token
 qtycon
@@ -1560,7 +1601,7 @@
   <|> pParens qtyconsym
   <?> "qtycon"
 
-{-# LINE 2192 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2234 "src/ehc/HS/Parser.chs" #-}
 -- | General (un)qualified prefix type constructor, no delimiting brackets (e.g. []), to be parameterized with the part inside parenthesis (the general part)
 gtycon_no_delims' :: HSParser Token -> HSParser Token
 gtycon_no_delims' pInParens
@@ -1568,7 +1609,7 @@
   <|> pParens pInParens
   <?> "gtycon_no_delims"
 
-{-# LINE 2201 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2243 "src/ehc/HS/Parser.chs" #-}
 -- | Inside parenthesis part for gtycon
 gtycon_for_inparens_arrow :: HSParser Token
 gtycon_for_inparens_arrow
@@ -1590,28 +1631,28 @@
   <|> qtyconop
   <?> "gtycon_for_insection"
 
-{-# LINE 2226 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2268 "src/ehc/HS/Parser.chs" #-}
 -- | General (un)qualified prefix type constructor, e.g.: X.Either, (X.:+:), and (->)
 gtycon_no_delims_commas :: HSParser Token
 gtycon_no_delims_commas
   =   gtycon_no_delims' gtycon_for_inparens_arrow
   <?> "gtycon_no_delims_commas"
 
-{-# LINE 2234 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2276 "src/ehc/HS/Parser.chs" #-}
 -- | General (un)qualified prefix type constructor, e.g.: X.Either, (X.:+:), and (,,,), (->)
 gtycon_no_delims :: HSParser Token   -- A "general" qualified tycon
 gtycon_no_delims
   =   gtycon_no_delims' gtycon_for_inparens_arrow_commas
   <?> "gtycon_no_delims"
 
-{-# LINE 2242 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2284 "src/ehc/HS/Parser.chs" #-}
 gtycon_only_bracks :: HSParser Token   -- A "general" qualified tycon
 gtycon_only_bracks
   =   tokConcat <$> pOBRACK <*> pCBRACK
   -- <|> tokConcat <$> pOPABRACK <*> pCPABRACK
   <?> "gtycon_only_delims"
 
-{-# LINE 2250 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2292 "src/ehc/HS/Parser.chs" #-}
 -- | General (un)qualified prefix type constructor, including delimiting brackets, to be parameterized with the part inside parenthesis (the general part)
 gtycon' :: HSParser Token -> HSParser Token
 gtycon' pInParens
@@ -1619,7 +1660,7 @@
   <|> gtycon_only_bracks
   <?> "gtycon'"
 
-{-# LINE 2261 "src/ehc/HS/Parser.chs" #-}
+{-# LINE 2303 "src/ehc/HS/Parser.chs" #-}
 -- | General (un)qualified prefix type constructor, e.g.: X.Either, (X.:+:), and (,,,), (->), []
 gtycon :: HSParser Token   -- A "general" qualified tycon
 gtycon
diff --git a/src/UHC/Light/Compiler/Module/ImportExport.hs b/src/UHC/Light/Compiler/Module/ImportExport.hs
--- a/src/UHC/Light/Compiler/Module/ImportExport.hs
+++ b/src/UHC/Light/Compiler/Module/ImportExport.hs
@@ -33,7 +33,6 @@
 import Control.Monad
 import UHC.Util.Binary
 import UHC.Util.Serialize
-import UHC.Light.Compiler.Base.Debug
 
 
 
@@ -142,16 +141,16 @@
 data ModExp
   = ModExpEnt !ModEntSpec
   | ModExpMod !HsName
-  deriving (Show)
+  deriving (Show,Typeable)
 
 data ModEntSpec
   = ModEntSpec !HsName !Range !(Maybe ModEntSubSpec)
-  deriving (Show)
+  deriving (Show,Typeable)
 
 data ModEntSubSpec
   = ModEntSubAll
   | ModEntSubs ![HsName]
-  deriving (Show)
+  deriving (Show,Typeable)
 
 data ModImp
   = ModImp
@@ -162,7 +161,7 @@
       , mimpImpL        :: ![ModEntSpec]
       , mimpRange		:: !Range
       }
-  deriving (Show)
+  deriving (Show,Typeable)
 
 emptyModImp :: ModImp
 emptyModImp = ModImp False hsnUnknown hsnUnknown True [] emptyRange
@@ -210,7 +209,7 @@
       , modHiddenExps   :: !ModEntRel
       , modInstNmL      :: ![HsName]
       }
-  deriving (Show)
+  deriving (Show,Typeable)
 
 emptyMod' n = Mod n Nothing Nothing [] Rel.empty Rel.empty []
 emptyMod = emptyMod' hsnUnknown
@@ -387,6 +386,7 @@
       , mmiHiddenExps     	:: !ModEntRel
       , mmiNmOffMp  		:: !HsName2FldMp		-- cached mapping of names to offsets, for all that is exported, visible or hidden
       }
+  deriving (Typeable)
 
 instance Show ModMpInfo where
   show _ = "ModMpInfo"
@@ -413,13 +413,13 @@
 resetModMpInfo :: HsName -> ModMpInfo -> ModMpInfo
 resetModMpInfo modNm i = i {mmiNmOffMp = expsNmOffMp modNm $ mmiExps i `Rel.union` mmiHiddenExps i}
 
-{-# LINE 509 "src/ehc/Module/ImportExport.chs" #-}
+{-# LINE 510 "src/ehc/Module/ImportExport.chs" #-}
 type ModMp = Map.Map HsName ModMpInfo
 
 ppModMp :: ModMp -> PP_Doc
 ppModMp = vlist . map (\(n,i) -> n >#< pp i) . Map.toList
 
-{-# LINE 516 "src/ehc/Module/ImportExport.chs" #-}
+{-# LINE 517 "src/ehc/Module/ImportExport.chs" #-}
 modMpAddHiddenExps :: HsName -> [(HsName,IdOccKind)] -> ModMp -> ModMp
 modMpAddHiddenExps modNm newExpNms mm
   = Map.update (\i@(ModMpInfo {mmiHiddenExps=he})
@@ -430,7 +430,7 @@
                               }
                ) modNm mm
 
-{-# LINE 530 "src/ehc/Module/ImportExport.chs" #-}
+{-# LINE 531 "src/ehc/Module/ImportExport.chs" #-}
 expsNmOffMp :: HsName -> ModEntRel -> HsName2FldMp
 expsNmOffMp modNm exps
   = Map.fromList
@@ -446,7 +446,7 @@
       , panicJust ("Module.expsNmOffMp: " ++ show nm) mbqual == modNm
       ]
 
-{-# LINE 547 "src/ehc/Module/ImportExport.chs" #-}
+{-# LINE 548 "src/ehc/Module/ImportExport.chs" #-}
 modMpCombine' :: (HsName -> ModMpInfo) -> [Mod] -> ModMp -> (ModMp,[Err])
 modMpCombine' dfltMod ms mp
   = (newMp,concat errs)
@@ -461,7 +461,7 @@
 modMpCombine ::  [Mod] -> ModMp -> (ModMp,[Err])
 modMpCombine = modMpCombine' (const emptyModMpInfo)
 
-{-# LINE 576 "src/ehc/Module/ImportExport.chs" #-}
+{-# LINE 577 "src/ehc/Module/ImportExport.chs" #-}
 instance Serialize ModEnt where
   sput (ModEnt a b c d) = sput a >> sput b >> sput c >> sput d
   sget = liftM4 ModEnt sget sget sget sget
diff --git a/src/UHC/Light/Compiler/NameAspect.hs b/src/UHC/Light/Compiler/NameAspect.hs
--- a/src/UHC/Light/Compiler/NameAspect.hs
+++ b/src/UHC/Light/Compiler/NameAspect.hs
@@ -2,6 +2,7 @@
 ( IdDefOcc (..), emptyIdDefOcc, mkIdDefOcc
 , IdAspect (..)
 , iaspIsFun, iaspIsPat, iaspIsValSig, iaspIsValVar, iaspIsValFix
+, mbUseAspOfIdOccKind
 , iaspIsTypeVar
 , iaspIsValCon, iaspIsTypeDef, iaspIsValFld
 , iaspIsTypeSig
@@ -19,7 +20,7 @@
 
 
 
-{-# LINE 60 "src/ehc/NameAspect.chs" #-}
+{-# LINE 32 "src/ehc/NameAspect.chs" #-}
 data IdAspect
   = IdAsp_Val_Var
   | IdAsp_Val_Pat       	{iaspDecl   ::  EH.Decl                         }
@@ -45,7 +46,7 @@
                        	 	{iaspDecl   :: !EH.Decl, iaspIgnore   :: !Bool  }
   | IdAsp_Any
 
-{-# LINE 101 "src/ehc/NameAspect.chs" #-}
+{-# LINE 73 "src/ehc/NameAspect.chs" #-}
 iaspIsFun :: IdAspect -> Bool
 iaspIsFun (IdAsp_Val_Fun _ _ _) = True
 iaspIsFun _                     = False
@@ -66,12 +67,12 @@
 iaspIsValFix IdAsp_Val_Fix = True
 iaspIsValFix _             = False
 
-{-# LINE 123 "src/ehc/NameAspect.chs" #-}
+{-# LINE 95 "src/ehc/NameAspect.chs" #-}
 iaspIsTypeVar :: IdAspect -> Bool
 iaspIsTypeVar IdAsp_Type_Var = True
 iaspIsTypeVar _              = False
 
-{-# LINE 129 "src/ehc/NameAspect.chs" #-}
+{-# LINE 101 "src/ehc/NameAspect.chs" #-}
 iaspIsValCon :: IdAspect -> Bool
 iaspIsValCon IdAsp_Val_Con = True
 iaspIsValCon _             = False
@@ -84,26 +85,26 @@
 iaspIsTypeDef (IdAsp_Type_Def _) = True
 iaspIsTypeDef _                  = False
 
-{-# LINE 143 "src/ehc/NameAspect.chs" #-}
+{-# LINE 115 "src/ehc/NameAspect.chs" #-}
 iaspIsTypeSig :: IdAspect -> Bool
 iaspIsTypeSig (IdAsp_Type_Sig _) = True
 iaspIsTypeSig _                  = False
 
-{-# LINE 149 "src/ehc/NameAspect.chs" #-}
+{-# LINE 121 "src/ehc/NameAspect.chs" #-}
 iaspIsValForeign :: IdAspect -> Bool
 iaspIsValForeign (IdAsp_Val_Foreign _) = True
 iaspIsValForeign _                     = False
 
-{-# LINE 155 "src/ehc/NameAspect.chs" #-}
+{-# LINE 127 "src/ehc/NameAspect.chs" #-}
 iaspIsClassDef :: IdAspect -> Bool
 iaspIsClassDef (IdAsp_Class_Def _ _) = True
 iaspIsClassDef _                     = False
 
-{-# LINE 161 "src/ehc/NameAspect.chs" #-}
+{-# LINE 133 "src/ehc/NameAspect.chs" #-}
 instance Show IdAspect where
   show _ = "IdAspect"
 
-{-# LINE 166 "src/ehc/NameAspect.chs" #-}
+{-# LINE 138 "src/ehc/NameAspect.chs" #-}
 instance PP IdAspect where
   pp  IdAsp_Val_Var         = pp "value"
   pp (IdAsp_Val_Pat _    )  = pp "pattern"
@@ -128,7 +129,24 @@
   pp (IdAsp_Dflt_Def  _ _)  = pp "default"
   pp  IdAsp_Any             = pp "ANY"
 
-{-# LINE 210 "src/ehc/NameAspect.chs" #-}
+{-# LINE 182 "src/ehc/NameAspect.chs" #-}
+-- | Default use aspect of occurrence kind, only if a sensible choice exists
+mbUseAspOfIdOccKind :: IdOccKind -> Maybe IdAspect
+mbUseAspOfIdOccKind ok = case ok of
+    IdOcc_Val		-> Just IdAsp_Val_Var
+    -- IdOcc_Pat
+    IdOcc_Type		-> Just IdAsp_Type_Con
+    IdOcc_Kind		-> Just IdAsp_Kind_Con
+    -- IdOcc_Fld
+    IdOcc_Class		-> Just IdAsp_Class_Class
+    -- IdOcc_Inst
+    -- IdOcc_Dflt
+    -- IdOcc_Any
+    -- IdOcc_Data
+    -- IdOcc_Fusion
+    _ 				-> Nothing
+
+{-# LINE 214 "src/ehc/NameAspect.chs" #-}
 data IdDefOcc
   = IdDefOcc
       { doccOcc     :: !IdOcc
@@ -142,16 +160,16 @@
 emptyIdDefOcc :: IdDefOcc
 emptyIdDefOcc = mkIdDefOcc (IdOcc hsnUnknown IdOcc_Any) IdAsp_Any nmLevAbsent emptyRange
 
-{-# LINE 232 "src/ehc/NameAspect.chs" #-}
+{-# LINE 236 "src/ehc/NameAspect.chs" #-}
 mkIdDefOcc :: IdOcc -> IdAspect -> NmLev -> Range -> IdDefOcc
 mkIdDefOcc o a l r = IdDefOcc o a l r Set.empty
 
-{-# LINE 237 "src/ehc/NameAspect.chs" #-}
+{-# LINE 241 "src/ehc/NameAspect.chs" #-}
 instance PP IdDefOcc where
   pp o = doccOcc o >|< "/" >|< doccAsp o >|< "/" >|< doccLev o
          >|< (ppBracketsCommas $ Set.toList $ doccNmAlts o)
 
-{-# LINE 245 "src/ehc/NameAspect.chs" #-}
+{-# LINE 249 "src/ehc/NameAspect.chs" #-}
 -- | Collapse multiple 'IdDefOcc', remembering duplicates in doccNmAlts
 idDefOccLCmb :: IdDefOcc -> [IdDefOcc] -> [IdDefOcc]
 idDefOccLCmb l1 l2 =
@@ -159,12 +177,12 @@
   | g@(d:_) <- groupSortOn (\d -> (ioccKind $ doccOcc d {-, doccLev d -})) $ l1 : l2
   ]
 
-{-# LINE 254 "src/ehc/NameAspect.chs" #-}
+{-# LINE 258 "src/ehc/NameAspect.chs" #-}
 -- | Strip positional info
 doccStrip :: IdDefOcc -> IdDefOcc
 doccStrip o = o {doccRange = emptyRange}
 
-{-# LINE 311 "src/ehc/NameAspect.chs" #-}
+{-# LINE 315 "src/ehc/NameAspect.chs" #-}
 instance PP IdOcc where
   pp o = ppCurlysCommas [pp (ioccNm o),pp (ioccKind o)]
 
diff --git a/src/UHC/Light/Compiler/Opts.hs b/src/UHC/Light/Compiler/Opts.hs
--- a/src/UHC/Light/Compiler/Opts.hs
+++ b/src/UHC/Light/Compiler/Opts.hs
@@ -3,6 +3,7 @@
 , optOptsIsYes, showStr2stMp
 , defaultEHCOpts
 , ehcCmdLineOpts
+, sortOptions
 , ehcrunCmdLineOpts
 , GetOptCmdLineOpts
 , ehcCmdLineOptsApply, ehcrunCmdLineOptsApply
@@ -37,6 +38,7 @@
 import Data.Maybe
 import qualified Data.Map as Map
 import Data.Char
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Util.Pretty
 import UHC.Light.Compiler.Ty
 import qualified Data.Set as Set
@@ -45,6 +47,7 @@
 import UHC.Util.FPath
 import UHC.Light.Compiler.EHC.Environment
 import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.Base.Optimize
 import UHC.Light.Compiler.Base.FileSearchLocation
 import UHC.Light.Compiler.Error
@@ -53,7 +56,6 @@
 import UHC.Light.Compiler.Opts.CommandLine
 import UHC.Light.Compiler.Base.Parser
 import UHC.Light.Compiler.Base.Parser2
-import UHC.Light.Compiler.Base.Debug
 
 
 
@@ -63,7 +65,9 @@
 
 
 
-{-# LINE 70 "src/ehc/Opts.chs" #-}
+
+
+{-# LINE 76 "src/ehc/Opts.chs" #-}
 -- | possibly adapt with pragmas
 ehcOptUpdateWithPragmas :: Set.Set Pragma -> EHCOpts -> (EHCOpts,Bool)
 ehcOptUpdateWithPragmas pragmas opts
@@ -84,14 +88,14 @@
                                         	where (mo,_,_) = ehcCmdLineOptsApply [] (words o) opts
               _                         	-> Nothing
 
-{-# LINE 96 "src/ehc/Opts.chs" #-}
+{-# LINE 102 "src/ehc/Opts.chs" #-}
 mkStringPath :: String -> [String]
 mkStringPath = wordsBy (`elem` ";,")
 
 mkFileLocPath :: String -> FileLocPath
 mkFileLocPath = map mkDirFileLoc . mkStringPath
 
-{-# LINE 108 "src/ehc/Opts.chs" #-}
+{-# LINE 114 "src/ehc/Opts.chs" #-}
 optOpts :: Map.Map String opt -> String -> [opt]
 optOpts m s = catMaybes $ map (\os -> Map.lookup os m) $ wordsBy (==',') s
 
@@ -99,13 +103,23 @@
 optOptsIsYes mos o = maybe False (o `elem`) mos
 
 
-{-# LINE 117 "src/ehc/Opts.chs" #-}
+{-# LINE 123 "src/ehc/Opts.chs" #-}
+instance Show EhOpt where
+  show EhOpt_Dump            	 	= "dump"
+  show EhOpt_DumpAST            	= "dump-ast"
+  show _      						= "-"
+
+ehOptMp :: Map.Map String EhOpt
+ehOptMp = str2stMpWithOmit [EhOpt_NONE]
+
+{-# LINE 133 "src/ehc/Opts.chs" #-}
 instance Show CoreOpt where
   -- show CoreOpt_PPParseable      = "pp-parseable"
   show CoreOpt_Dump             	= "dump"
   show CoreOpt_DumpBinary	      	= "dump-binary"
   show CoreOpt_DumpAlsoNonParseable	= "whendump-alsononparseable"
   show CoreOpt_Run            	    = "run"
+  show CoreOpt_LoadOnly            	= "loadonly"
   show CoreOpt_RunDump            	= "dump-run"
   show CoreOpt_RunTrace            	= "run-trace"
   show CoreOpt_RunTraceExtensive	= "run-trace-extensive"
@@ -116,7 +130,7 @@
 coreOptMp :: Map.Map String CoreOpt
 coreOptMp = str2stMpWithOmit [CoreOpt_NONE]
 
-{-# LINE 180 "src/ehc/Opts.chs" #-}
+{-# LINE 197 "src/ehc/Opts.chs" #-}
 instance Show PgmExec where
   show PgmExec_CPP      = "P"
   show PgmExec_C        = "c"
@@ -125,30 +139,30 @@
 pgmExecMp :: Map.Map String PgmExec
 pgmExecMp = str2stMp
 
-{-# LINE 196 "src/ehc/Opts.chs" #-}
+{-# LINE 213 "src/ehc/Opts.chs" #-}
 -- do something with whole program
 ehcOptWholeProgOptimizationScope :: EHCOpts -> Bool
 ehcOptWholeProgOptimizationScope opts
   = ehcOptOptimizationScope opts > OptimizationScope_PerModule
 
-{-# LINE 203 "src/ehc/Opts.chs" #-}
+{-# LINE 220 "src/ehc/Opts.chs" #-}
 -- compatibility option
 ehcOptEarlyModMerge :: EHCOpts -> Bool
 ehcOptEarlyModMerge opts
   = ehcOptOptimizationScope opts >= OptimizationScope_WholeCore
 
-{-# LINE 210 "src/ehc/Opts.chs" #-}
+{-# LINE 227 "src/ehc/Opts.chs" #-}
 -- do whole program analysis, with HPT
 ehcOptWholeProgHPTAnalysis :: EHCOpts -> Bool
 ehcOptWholeProgHPTAnalysis opts
   = False
 
-{-# LINE 276 "src/ehc/Opts.chs" #-}
+{-# LINE 293 "src/ehc/Opts.chs" #-}
 -- | optimizes a particular option
 ehcOptOptimizes :: Optimize -> EHCOpts -> Bool
 ehcOptOptimizes o opts = o `Set.member` ehcOptOptimizations opts
 
-{-# LINE 286 "src/ehc/Opts.chs" #-}
+{-# LINE 303 "src/ehc/Opts.chs" #-}
 -- | The default EHC options.
 defaultEHCOpts
   = emptyEHCOpts
@@ -157,16 +171,20 @@
       	  ]
       }
 
-{-# LINE 302 "src/ehc/Opts.chs" #-}
+{-# LINE 319 "src/ehc/Opts.chs" #-}
 -- | Commandline opts for ehc/uhc (EHC)
 ehcCmdLineOpts :: GetOptCmdLineOpts
-ehcCmdLineOpts = sharedCmdLineOpts ++
-     [
+ehcCmdLineOpts = sortOptions $
+     sharedCmdLineOpts
+  ++ [
         Option "t"  ["target"]              (ReqArg oTarget (showSupportedTargets'  "|"))
                                                                                     ("generate code for target, default=" ++ show defaultTarget)
      ,  Option ""   ["target-flavor"]       (ReqArg oTargetFlavor (showAllTargetFlavors' "|"))
                                                                                     ("generate code for target flavor, default=" ++ show defaultTargetFlavor)
      ,  Option "p"  ["pretty"]              (OptArg oPretty "hs|eh|ast|-")          "show pretty printed source or EH abstract syntax tree, default=eh, -=off, (downstream only)"
+     ,  Option "d"  ["debug"]               (NoArg oDebug)                          "show debug information"
+     ,  Option ""   ["priv"]                (boolArg oPriv)                         "private flag, used during development of 2 impls of 1 feature"
+     ,  Option ""   ["underdev"]            (ReqArg oUnderDev "opt[,...]")          ("opts (specific) for flipping (on/off) under development features: " ++ showStr2stMp allUnderDevMp ++ ", on: " ++ (concat $ intersperse " " $ map show $ Set.toList $ ehcOptUnderDev emptyEHCOpts))
 
 
      ,  Option "O"  ["optimise"]            (OptArg oOptimization ("0|1|2|3|<opt>[=" ++ boolArgStr ++ "]"))
@@ -210,9 +228,8 @@
                                                                                     "opt: option for cmd used by compiler, currently only P (preprocessing)"
      ,  Option ""   ["pgmP"]                (ReqArg (oPgmExec PgmExec_CPP)          "alternate program for cmd")
                                                                                     "pgm: alternate executable used by compiler, currently only P (preprocessing)"
-     ,  Option ""   ["coreopt"]             (ReqArg oOptCore "opt[,...]")           ("opts (specific) for core: " ++ showStr2stMp coreOptMp)
      ]
-{-# LINE 466 "src/ehc/Opts.chs" #-}
+{-# LINE 479 "src/ehc/Opts.chs" #-}
   where  oPretty     ms  o =  case ms of
                                 Just "-"     -> o { ehcOptShowEH       = False     }
                                 Just "no"    -> o { ehcOptShowEH       = False     }
@@ -236,7 +253,6 @@
                                       "4" -> CompilePoint_Core
                                       _   -> CompilePoint_All
                                 }
-         oOptCore    s   o =  o { ehcOptCoreOpts = optOpts coreOptMp s ++ ehcOptCoreOpts o}
          oTarget        s o =  o { ehcOptMbTarget          = mbtarget
                                  , ehcOptOptimizationScope = if isJustOk mbtarget && targetDoesHPTAnalysis (fromJustOk mbtarget)
                                                              then max oscope (maxBound :: OptimizationScope)
@@ -361,11 +377,16 @@
                                                                               nub $ ehcOptCmdLineOpts o ++ fst (parseCmdLineOpts cmd s) }
          oPgmExec     cmd     s o   = o { ehcOptPgmExecMp                   = Map.insert cmd s $ ehcOptPgmExecMp o }
 
-{-# LINE 755 "src/ehc/Opts.chs" #-}
+{-# LINE 765 "src/ehc/Opts.chs" #-}
+-- | Sort options according to long descr field
+sortOptions :: GetOptCmdLineOpts -> GetOptCmdLineOpts
+sortOptions = sortOn (\(Option _ d _ _) -> d)
+
+{-# LINE 775 "src/ehc/Opts.chs" #-}
 -- | Commandline opts for ehcr/uhcr (EHCRun)
 ehcrunCmdLineOpts :: GetOptCmdLineOpts
-ehcrunCmdLineOpts
-     =  sharedCmdLineOpts
+ehcrunCmdLineOpts = sortOptions $
+        sharedCmdLineOpts
      ++ [  Option ""   ["trace"]               (boolArg optTrace)                      "corerun: trace execution"
         ]
   where
@@ -373,7 +394,7 @@
           where upd | b         = (CoreOpt_RunTrace :)
                     | otherwise = (\\ [CoreOpt_RunTrace])
 
-{-# LINE 776 "src/ehc/Opts.chs" #-}
+{-# LINE 796 "src/ehc/Opts.chs" #-}
 -- | The description for GetOpt
 type GetOptCmdLineOpts = [OptDescr (EHCOpts -> EHCOpts)]
 
@@ -385,13 +406,17 @@
      ,  Option ""   ["version-dotted"]      (NoArg oNumVersion)                     ("print version in \"x.y.z\" style (then stop)")
      ,  Option ""   ["version-asnumber"]    (NoArg oVersionAsNumber)                ("print version in \"xyz\" style (then stop)")
      ,  Option ""   ["numeric-version"]     (NoArg oNumVersion)                     "see --version-dotted (to become obsolete)"
-     ,  Option ""   ["driver-alt"]          (NoArg oAltDriver)                      "driver: use alternate compiler driver (under development)"
+     ,  Option ""   ["driver-alt"]          (NoArg oAltDriver)                      "driver: toggle alternate compiler driver (under development, default off, for uhcr default on)"
+     ,  Option ""   ["debug-traceon"]
+                                            (ReqArg oTraceOn "aspects")             ("debug: trace on specific aspects: " ++ showStr2stMp allTraceOnMp)
      ,  Option "v"  ["verbose"]             (OptArg oVerbose "0|1|2|3|4")           (   "be verbose, 0=quiet, 4=debug, "
                                                                                     ++ "default=1"
                                                                                     )
+     ,  Option ""   ["ehopt"]               (ReqArg oOptEh   "opt[,...]")           ("opts (specific) for EH: " ++ showStr2stMp ehOptMp)
+     ,  Option ""   ["coreopt"]             (ReqArg oOptCore "opt[,...]")           ("opts (specific) for Core: " ++ showStr2stMp coreOptMp)
      ]
 
-{-# LINE 807 "src/ehc/Opts.chs" #-}
+{-# LINE 835 "src/ehc/Opts.chs" #-}
 -- | Help
 oHelp           o =  o { ehcOptImmQuit       = Just ImmediateQuitOption_Help    }
 
@@ -408,14 +433,21 @@
                        Nothing     -> o { ehcOptVerbosity     = succ (ehcOptVerbosity o)}
                        _           -> o
 
-{-# LINE 825 "src/ehc/Opts.chs" #-}
+{-# LINE 853 "src/ehc/Opts.chs" #-}
+oOptEh      s   o =  o { ehcOptEhOpts   = optOpts ehOptMp s ++ ehcOptEhOpts o}
+
+{-# LINE 857 "src/ehc/Opts.chs" #-}
+oOptCore    s   o =  o { ehcOptCoreOpts = optOpts coreOptMp s ++ ehcOptCoreOpts o}
+
+{-# LINE 861 "src/ehc/Opts.chs" #-}
 oNumVersion            o   = o { ehcOptImmQuit                     = Just ImmediateQuitOption_VersionDotted }
 oVersionAsNumber       o   = o { ehcOptImmQuit                     = Just ImmediateQuitOption_VersionAsNumber }
 
-{-# LINE 830 "src/ehc/Opts.chs" #-}
-oAltDriver             o   = o { ehcOptAltDriver                   = True }
+{-# LINE 866 "src/ehc/Opts.chs" #-}
+oAltDriver             o   = o { ehcOptAltDriver                   = not $ ehcOptAltDriver o }
+oTraceOn               s o = o { ehcOptTraceOn = Set.fromList (optOpts allTraceOnMp s) `Set.union` ehcOptTraceOn o }
 
-{-# LINE 838 "src/ehc/Opts.chs" #-}
+{-# LINE 875 "src/ehc/Opts.chs" #-}
 -- | Int option
 intArg  tr = ReqArg (optInt tr) "<nr>"
 
@@ -424,7 +456,7 @@
 optInt tr s o
  = tr o $ read s
 
-{-# LINE 848 "src/ehc/Opts.chs" #-}
+{-# LINE 885 "src/ehc/Opts.chs" #-}
 -- | What kind of optional args are allowed
 data OptArgAllow
   = OptArgAllow_Bool
@@ -434,13 +466,13 @@
 optArgAllAllow :: [OptArgAllow]
 optArgAllAllow = [minBound .. maxBound]
 
-{-# LINE 859 "src/ehc/Opts.chs" #-}
+{-# LINE 896 "src/ehc/Opts.chs" #-}
 -- | An optional arg, universal type for all occurring variants
 data OptArg
   = OptArg_Bool     Bool
   | OptArg_Int      Int
 
-{-# LINE 866 "src/ehc/Opts.chs" #-}
+{-# LINE 903 "src/ehc/Opts.chs" #-}
 optArgTake :: [OptArgAllow] -> String -> Maybe (OptArg,String)
 optArgTake allow s
   = case s of
@@ -461,7 +493,7 @@
   where yesInt = OptArgAllow_Int `elem` allow
         noInt  = not yesInt
 
-{-# LINE 888 "src/ehc/Opts.chs" #-}
+{-# LINE 925 "src/ehc/Opts.chs" #-}
 optBooleanTake :: String -> Maybe (Bool,String)
 optBooleanTake s
   = case optArgTake [OptArgAllow_Bool] s of
@@ -477,22 +509,27 @@
 boolArgStr = "Bool"
 boolArg tr = OptArg (optBoolean tr) boolArgStr
 
-{-# LINE 909 "src/ehc/Opts.chs" #-}
+{-# LINE 946 "src/ehc/Opts.chs" #-}
 oPriv                o b = o { ehcOptPriv           = b }
 
-{-# LINE 913 "src/ehc/Opts.chs" #-}
+{-# LINE 950 "src/ehc/Opts.chs" #-}
+oUnderDev          s   o = o { ehcOptUnderDev = {- Set.fromList (optOpts allUnderDevMp s) `Set.union` ehcOptUnderDev o -- -}
+                                 foldr (\ud o -> if Set.member ud o then Set.delete ud o else Set.insert ud o) (ehcOptUnderDev o) (optOpts allUnderDevMp s)
+                             }
+
+{-# LINE 956 "src/ehc/Opts.chs" #-}
 optDumpCoreStages    o b = o { ehcOptDumpCoreStages = b }
 
-{-# LINE 921 "src/ehc/Opts.chs" #-}
+{-# LINE 964 "src/ehc/Opts.chs" #-}
 oSetGenTrampoline	 o b = o { ehcOptGenTrampoline_ = b }
 
-{-# LINE 941 "src/ehc/Opts.chs" #-}
+{-# LINE 984 "src/ehc/Opts.chs" #-}
 oStopAtCoreError     o b = o { ehcDebugStopAtCoreError     = b }
 
-{-# LINE 945 "src/ehc/Opts.chs" #-}
+{-# LINE 988 "src/ehc/Opts.chs" #-}
 oStopAtHIError       o b = o { ehcDebugStopAtHIError       = b }
 
-{-# LINE 953 "src/ehc/Opts.chs" #-}
+{-# LINE 996 "src/ehc/Opts.chs" #-}
 -- | Apply the cmdline opts description to a EHCOpts, returning Nothing when there were no options
 cmdlineOptsApply :: [OptDescr (EHCOpts -> EHCOpts)] -> [EHCOpts -> EHCOpts] -> [String] -> EHCOpts -> (Maybe EHCOpts, [String], [String])
 cmdlineOptsApply cmdlopts postopts args opts
@@ -508,7 +545,7 @@
 ehcrunCmdLineOptsApply :: [String] -> EHCOpts -> (Maybe EHCOpts, [String], [String])
 ehcrunCmdLineOptsApply = cmdlineOptsApply ehcrunCmdLineOpts []
 
-{-# LINE 974 "src/ehc/Opts.chs" #-}
+{-# LINE 1017 "src/ehc/Opts.chs" #-}
 optsDiscrRecompileRepr :: EHCOpts -> String
 optsDiscrRecompileRepr opts
   = concat
@@ -522,12 +559,12 @@
       ]
   where o m v = if v then m else ""
 
-{-# LINE 995 "src/ehc/Opts.chs" #-}
+{-# LINE 1038 "src/ehc/Opts.chs" #-}
 data FIOBind
   = FIOBindYes | FIOBindNoBut TyVarIdS
   deriving (Show)
 
-{-# LINE 1001 "src/ehc/Opts.chs" #-}
+{-# LINE 1044 "src/ehc/Opts.chs" #-}
 data FIOpts =  FIOpts   {  fioLeaveRInst     ::  !Bool                ,  fioBindRFirst           ::  !Bool
                         ,  fioBindLFirst     ::  !Bool                ,  fioBindLBeforeR         ::  !Bool
                         ,  fioMode           ::  !FIMode              ,  fioUniq                 ::  !UID
@@ -540,7 +577,7 @@
                         ,  fiMbMkErrClash    ::  Maybe (Ty -> Ty -> Err) -- alternate error construction for type clash
                         }
 
-{-# LINE 1035 "src/ehc/Opts.chs" #-}
+{-# LINE 1078 "src/ehc/Opts.chs" #-}
 fioBindNoSet :: FIOBind -> TyVarIdS
 fioBindNoSet (FIOBindNoBut s) = s
 fioBindNoSet _                = Set.empty
@@ -549,7 +586,7 @@
 fioBindIsYes FIOBindYes = True
 fioBindIsYes _          = False
 
-{-# LINE 1045 "src/ehc/Opts.chs" #-}
+{-# LINE 1088 "src/ehc/Opts.chs" #-}
 strongFIOpts :: FIOpts
 strongFIOpts =  FIOpts  {  fioLeaveRInst     =   False               ,  fioBindRFirst           =   True
                         ,  fioBindLFirst     =   True                ,  fioBindLBeforeR         =   True
@@ -563,11 +600,11 @@
                         ,  fiMbMkErrClash    =   Nothing
                         }
 
-{-# LINE 1075 "src/ehc/Opts.chs" #-}
+{-# LINE 1118 "src/ehc/Opts.chs" #-}
 instance Show FIOpts where
   show o =  "FIOpts"
 
-{-# LINE 1080 "src/ehc/Opts.chs" #-}
+{-# LINE 1123 "src/ehc/Opts.chs" #-}
 instance PP FIOpts where
   pp   o =  "FIOpts{"
             >#< "leaveRInst=" >|< pp (fioLeaveRInst o)
@@ -578,33 +615,33 @@
             >#< "allowRPredElim=" >|< pp (fioAllowRPredElim o)
             >#< "}"
 
-{-# LINE 1096 "src/ehc/Opts.chs" #-}
+{-# LINE 1139 "src/ehc/Opts.chs" #-}
 instLFIOpts :: FIOpts
 instLFIOpts = strongFIOpts {fioBindRFirst = False}
 
-{-# LINE 1101 "src/ehc/Opts.chs" #-}
+{-# LINE 1144 "src/ehc/Opts.chs" #-}
 instLRFIOpts :: FIOpts
 instLRFIOpts = strongFIOpts {fioBindRFirst = False, fioBindLFirst = False}
 
-{-# LINE 1106 "src/ehc/Opts.chs" #-}
+{-# LINE 1149 "src/ehc/Opts.chs" #-}
 unifyFIOpts :: FIOpts
 unifyFIOpts = strongFIOpts {fioMode = FitUnify}
 
 instFIOpts :: FIOpts
 instFIOpts = instLFIOpts {fioLeaveRInst = True, fioBindLFirst = False}
 
-{-# LINE 1125 "src/ehc/Opts.chs" #-}
+{-# LINE 1168 "src/ehc/Opts.chs" #-}
 weakFIOpts :: FIOpts
 weakFIOpts = fioMkWeak strongFIOpts
 
-{-# LINE 1130 "src/ehc/Opts.chs" #-}
+{-# LINE 1173 "src/ehc/Opts.chs" #-}
 predFIOpts :: FIOpts
 predFIOpts = strongFIOpts {fioPredAsTy = True, fioLeaveRInst = True}
 
 implFIOpts  :: FIOpts
 implFIOpts = strongFIOpts {fioAllowRPredElim = False}
 
-{-# LINE 1138 "src/ehc/Opts.chs" #-}
+{-# LINE 1181 "src/ehc/Opts.chs" #-}
 fioSwapOpts :: FIOpts -> FIOpts
 fioSwapOpts fio
   = fio
@@ -618,24 +655,24 @@
 fioSwapPolarity :: Polarity -> FIOpts -> FIOpts
 fioSwapPolarity pol fio = fio {fioMode = fimSwapPol pol (fioMode fio)}
 
-{-# LINE 1155 "src/ehc/Opts.chs" #-}
+{-# LINE 1198 "src/ehc/Opts.chs" #-}
 fioMkStrong :: FIOpts -> FIOpts
 fioMkStrong fi = fi {fioLeaveRInst = False, fioBindRFirst = True, fioBindLFirst = True}
 
-{-# LINE 1160 "src/ehc/Opts.chs" #-}
+{-# LINE 1203 "src/ehc/Opts.chs" #-}
 fioMkWeak :: FIOpts -> FIOpts
 fioMkWeak fi = fi {fioLeaveRInst = True, fioBindRFirst = False}
 
-{-# LINE 1165 "src/ehc/Opts.chs" #-}
+{-# LINE 1208 "src/ehc/Opts.chs" #-}
 -- | Adapt options for extracting final ty
 fioMkFinal :: FIOpts -> FIOpts
 fioMkFinal fi = fi {fioBindLFirst = False, fioBindRFirst = False, fioExpandEqTyVar = True}
 
-{-# LINE 1171 "src/ehc/Opts.chs" #-}
+{-# LINE 1214 "src/ehc/Opts.chs" #-}
 fioMkUnify :: FIOpts -> FIOpts
 fioMkUnify fi = fi {fioMode = FitUnify}
 
-{-# LINE 1180 "src/ehc/Opts.chs" #-}
+{-# LINE 1223 "src/ehc/Opts.chs" #-}
 fioIsSubsume :: FIOpts -> Bool
 fioIsSubsume fio =  case fioMode fio of {FitSubLR -> True ; _ -> False}
 
diff --git a/src/UHC/Light/Compiler/Opts/Base.hs b/src/UHC/Light/Compiler/Opts/Base.hs
--- a/src/UHC/Light/Compiler/Opts/Base.hs
+++ b/src/UHC/Light/Compiler/Opts/Base.hs
@@ -2,11 +2,15 @@
 
 module UHC.Light.Compiler.Opts.Base
 ( ImmediateQuitOption (..)
+, EhOpt (..)
 , EHCOpts (..)
 , emptyEHCOpts
+, ehcOptEhAstPP, ehcOptEhAstPPExtensive
 , ehcOptFromJust
+, ehcOptIsUnderDev
 , InOrOutputFor (..)
 , CoreOpt (..)
+, ehcOptEhPP
 , ehcOptTarget, ehcOptTargetFlavor
 , ehcOptCoreSysF, ehcOptCoreSysFCheck, ehcOptCoreSysFGen, ehcOptCoreSysFCheckOnlyVal
 , ehcOptEmitExecBytecode, ehcOptEmitBytecode
@@ -25,6 +29,7 @@
 import Data.Typeable
 import Data.Maybe
 import qualified Data.Map as Map
+import UHC.Light.Compiler.Base.UnderDev
 import UHC.Util.Pretty
 import qualified Data.Set as Set
 import Data.List
@@ -33,6 +38,7 @@
 import UHC.Util.FPath
 import UHC.Light.Compiler.EHC.Environment
 import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Base.Trace
 import UHC.Light.Compiler.Base.Optimize
 import UHC.Light.Compiler.Base.FileSearchLocation
 import qualified UHC.Light.Compiler.ConfigInstall as Cfg
@@ -44,7 +50,7 @@
 
 
 
-{-# LINE 63 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 69 "src/ehc/Opts/Base.chs" #-}
 data ImmediateQuitOption
   = ImmediateQuitOption_Help                                -- print help
   | ImmediateQuitOption_Version                             -- print version info
@@ -59,13 +65,13 @@
   -- -| ImmediateQuitOption_Meta_ExportEnv (Maybe String)       -- export (write) environmental info of installation
   -- -| ImmediateQuitOption_Meta_DirEnv                         -- print dir of environmental info of installation
 
-{-# LINE 87 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 93 "src/ehc/Opts/Base.chs" #-}
 data InOrOutputFor
   = OutputFor_Module
   | OutputFor_Pkg
   | InputFrom_Loc FileLoc
 
-{-# LINE 100 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 106 "src/ehc/Opts/Base.chs" #-}
 -- | Build pkg options, all (except obligatory name) wrapped in Maybe/[] because of possible absence.
 -- 20140829 AD: will be used to construct config file
 data PkgOption
@@ -78,15 +84,25 @@
 emptyPkgOption :: PkgOption
 emptyPkgOption = PkgOption emptyPkgName [] []
 
-{-# LINE 118 "src/ehc/Opts/Base.chs" #-}
--- | Core options
+{-# LINE 124 "src/ehc/Opts/Base.chs" #-}
+-- | EH specific options
+data EhOpt
+  = EhOpt_NONE				-- no-op option
+  | EhOpt_Dump 				-- dump textual EH output
+  | EhOpt_DumpAST 			-- dump textual EH output, as annotated AST
+  deriving (Eq, Ord, Enum, Bounded)
+
+{-# LINE 133 "src/ehc/Opts/Base.chs" #-}
+-- | Core specific options
 data CoreOpt
   = CoreOpt_NONE				-- no-op option
 --  | CoreOpt_PPParseable			-- pretty print parseable, negation means just make it readable
-  | CoreOpt_Dump 				-- dump textual core output
-  | CoreOpt_DumpBinary			-- dump binary core output
+  | CoreOpt_Readable			-- when there is a choice, make it more readable
+  | CoreOpt_Dump
+  | CoreOpt_DumpBinary
   | CoreOpt_DumpAlsoNonParseable-- dump also the parts which are not parseable
   | CoreOpt_Run					-- run after compilation
+  | CoreOpt_LoadOnly			-- only load what is available, to be used only (for now) by alternate compiler driver
   | CoreOpt_RunDump				-- dump CoreRun
   | CoreOpt_RunDumpVerbose		-- dump CoreRun, more verbose
   | CoreOpt_RunTrace			-- trace during running CoreRun
@@ -95,7 +111,7 @@
   | CoreOpt_RunPPVerbose		-- when dump CoreRun print more verbose info in comment
   deriving (Eq,Enum,Bounded)
 
-{-# LINE 181 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 196 "src/ehc/Opts/Base.chs" #-}
 -- | Pgm (internal program used) options, in particular alternate internal shell commands
 data PgmExec
   = PgmExec_CPP				-- alternate CPP
@@ -103,7 +119,7 @@
   | PgmExec_Linker			-- alternate linker
   deriving (Eq,Ord,Enum,Bounded)
 
-{-# LINE 190 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 205 "src/ehc/Opts/Base.chs" #-}
 -- | Wrapper around options, adding semantics for adapting cmd specific behavior
 data ExecOpt
   = ExecOpt_Plain String						-- ^ plain option
@@ -112,7 +128,7 @@
 execOptsPlain :: [ExecOpt] -> [String]
 execOptsPlain o = [ s | ExecOpt_Plain s <- o ]
 
-{-# LINE 206 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 221 "src/ehc/Opts/Base.chs" #-}
 -- | The options to use.
 data EHCOpts
   = EHCOpts
@@ -120,6 +136,8 @@
       ,  ehcOptAspects        ::  String            -- which aspects are included in this compiler
       ,  ehcOptShowHS         ::  Bool              -- show HS pretty print on stdout
       ,  ehcOptShowEH         ::  Bool              -- show EH pretty print on stdout
+      ,  ehcOptEhOpts         ::  [EhOpt]  	    	-- EH options
+      ,  ehcOptUnderDev		  ::  Set.Set UnderDev  -- turning on something under development (available options change according to whim and weather)
       ,  ehcOptPriv           ::  Bool              -- privately used (in general during switch between 2 impls of 1 feature)
       ,  ehcOptHsChecksInEH   ::  Bool              -- do checks in EH which already have been done in HS (usually related to name absence/duplication). This is used for EH compilation only.
       ,  ehcOptShowTopTyPP    ::  Bool              -- show EH type of expression
@@ -148,6 +166,7 @@
       ,  ehcOptImportFileLocPath
                               ::  FileLocPath
       ,  ehcOptVerbosity      ::  Verbosity         -- verbosity level
+      ,  ehcOptTraceOn        ::  !(Set.Set TraceOn)         -- on what to trace
 
       ,  ehcOptBuiltinNames   ::  EHBuiltinNames
       ,  ehcOptEnvironment    ::  EHCEnvironment    -- runtime environment
@@ -198,13 +217,18 @@
       }
       deriving Typeable
 
-{-# LINE 382 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 400 "src/ehc/Opts/Base.chs" #-}
 emptyEHCOpts
   = EHCOpts
       {  ehcOptTrace            =   \_ x -> x
       ,  ehcOptAspects          =   "base codegen core corebackend corein coreout corerun corerunin hmtyinfer noHmTyRuler"
       ,  ehcOptShowHS           =   False
+      ,  ehcOptEhOpts           =   []
       ,  ehcOptPriv             =   False
+      ,  ehcOptUnderDev         =   Set.fromList
+      									[ UnderDev_NameAnalysis		-- 20150924
+      									, UnderDev_NamedInst		-- 20150925
+      									]
       ,  ehcOptHsChecksInEH     =   False
       ,  ehcOptShowEH           =   False
       ,  ehcOptShowTopTyPP      =   False
@@ -225,6 +249,7 @@
       ,  ehcOptGenTrampoline_  	=	False
       ,  ehcOptGenTrace         =   False
       ,  ehcOptVerbosity        =   VerboseMinimal
+      ,  ehcOptTraceOn          =   Set.empty
       ,  ehcOptEmitHS           =   False
       ,  ehcOptEmitEH           =   False
 
@@ -272,14 +297,29 @@
       ,  ehcOptExecOptsMp		=   Map.empty
       }
 
-{-# LINE 556 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 584 "src/ehc/Opts/Base.chs" #-}
+-- | PP EH AST, with annotations
+ehcOptEhAstPP :: EHCOpts -> Bool
+ehcOptEhAstPP opts =
+     EhOpt_DumpAST `elem` ehcOptEhOpts opts
+
+-- | PP EH AST, with annotations
+ehcOptEhAstPPExtensive :: EHCOpts -> Bool
+ehcOptEhAstPPExtensive opts = (ehcOptEhAstPP opts && ehcOptDebug opts) || EhOpt_DumpAST `elem` ehcOptEhOpts opts
+
+{-# LINE 599 "src/ehc/Opts/Base.chs" #-}
+-- | Do some plain PP on EH
+ehcOptEhPP :: EHCOpts -> Bool
+ehcOptEhPP opts = ehcOptShowEH opts || ehcOptEmitEH opts || EhOpt_Dump `elem` ehcOptEhOpts opts
+
+{-# LINE 605 "src/ehc/Opts/Base.chs" #-}
 ehcOptTarget :: EHCOpts -> Target
 ehcOptTarget = maybeOk (\s -> panic ("ehcOptTarget: " ++ s)) id  . ehcOptMbTarget
 
 ehcOptTargetFlavor :: EHCOpts -> TargetFlavor
 ehcOptTargetFlavor = maybeOk (\s -> panic ("ehcOptTargetFlavor: " ++ s)) id . ehcOptMbTargetFlavor
 
-{-# LINE 564 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 613 "src/ehc/Opts/Base.chs" #-}
 -- | Generate system F (20120421 AD: very much under construction)
 ehcOptCoreSysF :: EHCOpts -> Bool
 ehcOptCoreSysF _    = False
@@ -296,7 +336,7 @@
 ehcOptCoreSysFCheckOnlyVal :: EHCOpts -> Bool
 ehcOptCoreSysFCheckOnlyVal opts = ehcOptCoreSysFCheck opts
 
-{-# LINE 598 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 647 "src/ehc/Opts/Base.chs" #-}
 -- generate bytecode
 ehcOptEmitExecBytecode :: EHCOpts -> Bool
 ehcOptEmitExecBytecode _ = False
@@ -304,12 +344,12 @@
 ehcOptEmitBytecode :: EHCOpts -> Bool
 ehcOptEmitBytecode _ = False
 
-{-# LINE 655 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 704 "src/ehc/Opts/Base.chs" #-}
 -- | Check Cmm
 ehcOptCmmCheck :: EHCOpts -> Bool
 ehcOptCmmCheck _    = False
 
-{-# LINE 665 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 714 "src/ehc/Opts/Base.chs" #-}
 -- | Via Core -> Grin -> CMM -> JS ?
 ehcOptIsViaGrinCmmJavaScript :: EHCOpts -> Bool
 ehcOptIsViaGrinCmmJavaScript opts
@@ -321,32 +361,37 @@
   = targetIsViaCoreJavaScript t
   where t = ehcOptTarget opts
 
-{-# LINE 686 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 735 "src/ehc/Opts/Base.chs" #-}
 ehcOptIsViaCmm :: EHCOpts -> Bool
 ehcOptIsViaCmm opts = ehcOptIsViaGrinCmmJavaScript opts
 {-# INLINE ehcOptIsViaCmm #-}
 
-{-# LINE 692 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 741 "src/ehc/Opts/Base.chs" #-}
 ehcOptIsViaGrin :: EHCOpts -> Bool
 ehcOptIsViaGrin opts = ehcOptIsViaGrinCmmJavaScript opts || targetIsGrinBytecode t || targetDoesHPTAnalysis t
   where t = ehcOptTarget opts
 
-{-# LINE 702 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 751 "src/ehc/Opts/Base.chs" #-}
 ehcOptBuiltin :: EHCOpts -> (EHBuiltinNames -> x) -> x
 ehcOptBuiltin o f = f $ ehcOptBuiltinNames o
 
 ehcOptBuiltin2 :: EHCOpts -> (EHBuiltinNames -> Int -> HsName) -> Int -> HsName
 ehcOptBuiltin2 o f i = f (ehcOptBuiltinNames o) i
 
-{-# LINE 714 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 763 "src/ehc/Opts/Base.chs" #-}
 -- | Either fromJust with a possible panic, or with a default value (when debugging)
 ehcOptFromJust :: EHCOpts -> String -> a -> Maybe a -> a
 ehcOptFromJust opts panicMsg n m
   | ehcOptDebug opts = maybe n id m
   | otherwise        = panicJust panicMsg m
 
-{-# LINE 726 "src/ehc/Opts/Base.chs" #-}
+{-# LINE 775 "src/ehc/Opts/Base.chs" #-}
 -- | Do linking into executable?
 ehcOptDoExecLinking :: EHCOpts -> Bool
 ehcOptDoExecLinking opts = ehcOptLinkingStyle opts == LinkingStyle_Exec
+
+{-# LINE 785 "src/ehc/Opts/Base.chs" #-}
+-- | Is something under development turned on?
+ehcOptIsUnderDev :: UnderDev -> EHCOpts -> Bool
+ehcOptIsUnderDev ud opts = ud `Set.member` ehcOptUnderDev opts
 
diff --git a/src/UHC/Light/Compiler/Pred/EvidenceToCore.hs b/src/UHC/Light/Compiler/Pred/EvidenceToCore.hs
--- a/src/UHC/Light/Compiler/Pred/EvidenceToCore.hs
+++ b/src/UHC/Light/Compiler/Pred/EvidenceToCore.hs
@@ -3,7 +3,6 @@
 , OverlapEvid (..)
 , evidKeyToBindMapUnion, predScopeToBindMapUnion
 , evidMpToCore
-, evidKeyCoreMpToBinds
 , EvidCBindL, evidKeyCoreMpToBinds2
 , evidKeyBindMpToCSubst )
 where
@@ -24,7 +23,6 @@
 import UHC.Util.Pretty
 import UHC.Util.Utils
 import Control.Monad.State
-import UHC.Light.Compiler.Base.Debug as Debug
 import Debug.Trace
 
 
@@ -498,20 +496,20 @@
         dbg m = id -- Debug.tr m (pp m)
         opts = feEHCOpts $ fiEnv env
 
-{-# LINE 595 "src/ehc/Pred/EvidenceToCore.chs" #-}
+{-# LINE 598 "src/ehc/Pred/EvidenceToCore.chs" #-}
 type EvidCBindL = [CBind]
 
 evidKeyCoreMpToBinds2 :: FIIn' gm -> EvidKeyToCExprMap -> (EvidCBindL,EvidKeyToCBindMap,PredScopeToCBindMap)
 evidKeyCoreMpToBinds2 env m
-  = (   [ mkd i (tcrCExpr r) (SysF.ty2TyCforFFI opts $ tcrTy r)
+  = (   [ mkd i r
         | (i,r) <- Map.toList independentOfAssumes
         ]
     , Map.unionsWith (++)
-      $ [ Map.singleton (subevdId $ head $ Set.toList $ tcrUsed r) [mkd i (tcrCExpr r) (SysF.ty2TyCforFFI opts $ tcrTy r)]
+      $ [ Map.singleton (subevdId $ head $ Set.toList $ tcrUsed r) [mkd i r]
         | (i,r) <- Map.toList dependentOn1Assume
         ]
     , Map.unionsWith (++)
-      $ [ Map.singleton (deepestScope (tcrScope r) (tcrUsed r)) [mkd i (tcrCExpr r) (SysF.ty2TyCforFFI opts $ tcrTy r)]
+      $ [ Map.singleton (deepestScope (tcrScope r) (tcrUsed r)) [mkd i r]
         | (i,r) <- Map.toList dependentOnNAssumes
         ]
     )
@@ -519,11 +517,12 @@
           = Map.partition (\r -> Set.null $ tcrUsed r) m
         (dependentOn1Assume, dependentOnNAssumes)
           = Map.partition (\r -> Set.size (tcrUsed r) == 1) m
-        mkd i e t         = acoreBind1MetaTy (mkHNm i) CMetaVal_Dict t e
+        -- mkd i e t         = acoreBind1MetaTy (mkHNm i) CMetaVal_Dict t e
+        mkd i r = acoreBind1MetaTy (mkHNm i) CMetaVal_Dict (SysF.ty2TyCforFFI opts $ tcrTy r) (tcrCExpr r)
         deepestScope sc u = maximumBy pscpCmpByLen $ sc : (map subevdScope $ Set.toList u)
         opts = feEHCOpts $ fiEnv env
 
-{-# LINE 622 "src/ehc/Pred/EvidenceToCore.chs" #-}
+{-# LINE 626 "src/ehc/Pred/EvidenceToCore.chs" #-}
 evidKeyBindMpToCSubst :: EvidKeyToCBindMap -> CSubst
 evidKeyBindMpToCSubst
   = acoreCSubstFromUidBindLL . Map.toList
diff --git a/src/UHC/Light/Compiler/Scanner/Common.hs b/src/UHC/Light/Compiler/Scanner/Common.hs
--- a/src/UHC/Light/Compiler/Scanner/Common.hs
+++ b/src/UHC/Light/Compiler/Scanner/Common.hs
@@ -17,75 +17,77 @@
 import UHC.Light.Compiler.Scanner.Scanner
 import UHC.Util.ParseUtils
 import UHC.Light.Compiler.Base.Target
+import UHC.Light.Compiler.Base.UnderDev
 import Data.Ratio
 
 
 
 
 
-{-# LINE 49 "src/ehc/Scanner/Common.chs" #-}
+
+{-# LINE 52 "src/ehc/Scanner/Common.chs" #-}
 ehScanOpts :: EHCOpts -> ScanOpts
 ehScanOpts opts
   =  defaultScanOpts
-{-# LINE 54 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 57 "src/ehc/Scanner/Common.chs" #-}
         {   scoKeywordsTxt      =
                 Set.fromList $
                        tokKeywStrsEH1
                     ++ offsideTrigs
-{-# LINE 60 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH4
 {-# LINE 63 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH5
+                    ++ tokKeywStrsEH4
 {-# LINE 66 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH6
+                    ++ tokKeywStrsEH5
 {-# LINE 69 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH8
+                    ++ tokKeywStrsEH6
 {-# LINE 72 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH9
+                    ++ tokKeywStrsEH8
 {-# LINE 75 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH11
+                    ++ tokKeywStrsEH9
 {-# LINE 78 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH12
+                    ++ tokKeywStrsEH11
 {-# LINE 81 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH90
+                    ++ tokKeywStrsEH12
 {-# LINE 84 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokKeywStrsEH91
+                    ++ tokKeywStrsEH90
 {-# LINE 87 "src/ehc/Scanner/Common.chs" #-}
-                    ++ (if ehcOptFusion opts then tokKeywStrsEH93 else [])
+                    ++ tokKeywStrsEH91
 {-# LINE 90 "src/ehc/Scanner/Common.chs" #-}
+                    ++ (if ehcOptFusion opts then tokKeywStrsEH93 else [])
+{-# LINE 93 "src/ehc/Scanner/Common.chs" #-}
         ,   scoKeywordsOps      =
                 Set.fromList $
                        tokOpStrsEH1
-{-# LINE 95 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH2
 {-# LINE 98 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH3
+                    ++ tokOpStrsEH2
 {-# LINE 101 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH4
+                    ++ tokOpStrsEH3
 {-# LINE 104 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH5
+                    ++ tokOpStrsEH4
 {-# LINE 107 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH6
+                    ++ tokOpStrsEH5
 {-# LINE 110 "src/ehc/Scanner/Common.chs" #-}
-                    ++ (if ehcOptExtensibleRecords opts then tokOpStrsEH7 else [])
+                    ++ tokOpStrsEH6
 {-# LINE 113 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH9
+                    ++ (if ehcOptExtensibleRecords opts then tokOpStrsEH7 else [])
 {-# LINE 116 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH10
+                    ++ tokOpStrsEH9 opts
 {-# LINE 119 "src/ehc/Scanner/Common.chs" #-}
-                    ++ tokOpStrsEH11
+                    ++ tokOpStrsEH10
 {-# LINE 122 "src/ehc/Scanner/Common.chs" #-}
+                    ++ tokOpStrsEH11
+{-# LINE 125 "src/ehc/Scanner/Common.chs" #-}
         ,   scoSpecChars        = Set.fromList $
                 "();,[]{}`"
         ,   scoOpChars          = Set.fromList $
                 "!#$%&*+/<=>?@\\^|-:.~"
-{-# LINE 128 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 131 "src/ehc/Scanner/Common.chs" #-}
         ,   scoSpecPairs        = Set.fromList $
                 [  show hsnORow, show hsnCRow
                 ,  show hsnOSum, show hsnCSum
                 ,  show hsnOImpl, show hsnCImpl
                 ]
-{-# LINE 140 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 143 "src/ehc/Scanner/Common.chs" #-}
         ,   scoOffsideTrigs     =   offsideTrigs
         ,   scoOffsideTrigsGE   =   offsideTrigsGE
         ,   scoOffsideModule    =   "let"
@@ -101,11 +103,11 @@
             [  "do"
             ]
 
-{-# LINE 165 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 168 "src/ehc/Scanner/Common.chs" #-}
 hsScanOpts :: EHCOpts -> ScanOpts
 hsScanOpts opts
   = ehScanOpts'
-{-# LINE 170 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 173 "src/ehc/Scanner/Common.chs" #-}
         {   scoKeywordsTxt      =
                 scoKeywordsTxt ehScanOpts' `Set.union`
                 (Set.fromList $
@@ -121,12 +123,12 @@
                     ++ tokKeywStrsHS90
                     ++ (if ehcOptFusion opts then tokKeywStrsHS93 else [])
                 )
-{-# LINE 205 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 208 "src/ehc/Scanner/Common.chs" #-}
         ,   scoPragmasTxt      =
                 (Set.fromList $
                        tokPragmaStrsHS99
                 )
-{-# LINE 211 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 214 "src/ehc/Scanner/Common.chs" #-}
         ,   scoKeywordsOps      =
                 scoKeywordsOps ehScanOpts'
                 `Set.union`
@@ -142,7 +144,7 @@
                     ++ tokOpStrsHS10
                     ++ tokOpStrsHS11
                 )
-{-# LINE 246 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 249 "src/ehc/Scanner/Common.chs" #-}
         ,   scoOffsideTrigs     =
                 scoOffsideTrigs ehScanOpts'
                 ++ offsideTrigs
@@ -155,7 +157,7 @@
             ]
         ehScanOpts' = ehScanOpts opts
 
-{-# LINE 264 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 267 "src/ehc/Scanner/Common.chs" #-}
 -- | 'ScanOpts' for 'Core' tokenization before parsing
 coreScanOpts :: EHCOpts -> ScanOpts
 coreScanOpts opts
@@ -184,15 +186,15 @@
   where hsScanOpts' = hsScanOpts opts
         ehScanOpts' = ehScanOpts opts
 
-{-# LINE 300 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 303 "src/ehc/Scanner/Common.chs" #-}
 -- | 'ScanOpts' for 'CoreRun' tokenization before parsing
 corerunScanOpts :: {- EHCOpts -> -} ScanOpts
 corerunScanOpts -- opts
   =  defaultScanOpts
         {   scoKeywordsTxt      =   Set.fromList $
                                         [ "alloc", "module", "tail", "eval", "case", "of", "let", "in", "app", "ffi", "dbg", "tag"
-                                        , "g", "d", "l", "i", "m"
-                                        , "data", "import"
+                                        , "g", "d", "l", "i", "m", "e", "u"
+                                        , "data", "import", "export"
                                         ]
         -- ,	scoKeywExtraChars	=	Set.fromList "."
         ,   scoKeywordsOps      =   Set.fromList [ "->", "." ]
@@ -202,7 +204,7 @@
         ,   scoDollarIdent      =   True
         }
 
-{-# LINE 321 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 324 "src/ehc/Scanner/Common.chs" #-}
 tycoreScanOpts :: ScanOpts
 tycoreScanOpts
   =  defaultScanOpts
@@ -222,7 +224,7 @@
         ,   scoDollarIdent      =   True
         }
 
-{-# LINE 352 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 355 "src/ehc/Scanner/Common.chs" #-}
 grinScanOpts :: ScanOpts
 grinScanOpts
   =  defaultScanOpts
@@ -247,14 +249,14 @@
         ,   scoDollarIdent      =   True
         }
 
-{-# LINE 384 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 387 "src/ehc/Scanner/Common.chs" #-}
 tyScanOpts :: ScanOpts
 tyScanOpts
   =  defaultScanOpts
         {   scoKeywordsTxt      =   Set.fromList [ "uid" ]
         }
 
-{-# LINE 392 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 395 "src/ehc/Scanner/Common.chs" #-}
 hsnScanOpts :: ScanOpts
 hsnScanOpts
   =  defaultScanOpts
@@ -289,7 +291,7 @@
         }
   where hsScanOpts' = hsScanOpts emptyEHCOpts
 
-{-# LINE 441 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 444 "src/ehc/Scanner/Common.chs" #-}
 foreignEntScanOpts :: FFIWay -> ScanOpts
 foreignEntScanOpts way
   =  o {   scoKeywordsTxt      =   Set.fromList [ "dynamic", "wrapper", "h", "static", "new", "js" ]
@@ -305,7 +307,7 @@
               _                 -> ("" , "" )
 
 
-{-# LINE 480 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 483 "src/ehc/Scanner/Common.chs" #-}
 splitTokensOnModuleTrigger :: ScanOpts -> [Token] -> Maybe ([Token],[Token])
 splitTokensOnModuleTrigger scanOpts ts
   = case break ismod ts of
@@ -314,7 +316,7 @@
   where ismod (Reserved s _) | s == scoOffsideModule scanOpts = True
         ismod _                                               = False
 
-{-# LINE 490 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 493 "src/ehc/Scanner/Common.chs" #-}
 offsideScanHandle :: ScanOpts -> FilePath -> Handle -> IO (OffsideInput [Token] Token (Maybe Token))
 offsideScanHandle scanOpts fn fh
   = do  {  tokens <- scanHandle scanOpts fn fh
@@ -330,7 +332,7 @@
           triggers  =  [ (Trigger_IndentGT,reserved x noPos) | x <- scoOffsideTrigs   scanOpts ]
                     ++ [ (Trigger_IndentGE,reserved x noPos) | x <- scoOffsideTrigsGE scanOpts ]
 
-{-# LINE 515 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 518 "src/ehc/Scanner/Common.chs" #-}
 floatDenot2NomDenom :: String -> (Integer,Integer)
 floatDenot2NomDenom denot
   = (numerator f,denominator f)
@@ -349,7 +351,7 @@
 intDenot2Integer :: Int -> String -> Integer
 intDenot2Integer b s = getBaseNumber (toInteger b) s
 
-{-# LINE 540 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 543 "src/ehc/Scanner/Common.chs" #-}
 pKeyTk, pKeyTk'         ::  IsParser p Token
                               => String -> p Token
 pKeyTk  key             =   pCostReserved' 9 key
@@ -358,18 +360,18 @@
 pKeyw                   ::  (IsParser p Token,Show k) => k -> p Token
 pKeyw k                 =   pKeyTk (show k)
 
-{-# LINE 550 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 553 "src/ehc/Scanner/Common.chs" #-}
 pKeywHsNname            ::  (IsParser p Token,Show k) => k -> p HsName
 pKeywHsNname k          =   tokMkQName <$> pKeyw k
 
 
-{-# LINE 556 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 559 "src/ehc/Scanner/Common.chs" #-}
 pStringTk, pCharTk,
   pInteger8Tk, pInteger10Tk, pInteger16Tk, pFractionTk,
-{-# LINE 564 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 567 "src/ehc/Scanner/Common.chs" #-}
   pQVaridTk, pQConidTk,
   pQVarsymTk, pQConsymTk,
-{-# LINE 568 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 571 "src/ehc/Scanner/Common.chs" #-}
   pVaridTk , pConidTk ,
   pVaridTk', pConidTk',
   pTextnmTk, pTextlnTk, pIntegerTk, pVarsymTk, pConsymTk
@@ -390,13 +392,13 @@
 pTextnmTk     =   pHsCostValToken' 7 TkTextnm    "<name>"
 pTextlnTk     =   pHsCostValToken' 7 TkTextln    "<line>"
 pIntegerTk    =   pInteger10Tk
-{-# LINE 596 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 599 "src/ehc/Scanner/Common.chs" #-}
 pQVaridTk     =   pHsCostValToken' 7 TkQVarid     "<identifier>"
 pQConidTk     =   pHsCostValToken' 7 TkQConid     "<Identifier>"
 pQConsymTk    =   pHsCostValToken' 7 TkQConOp     "<conoperator>"
 pQVarsymTk    =   pHsCostValToken' 7 TkQOp        "<operator>"
 
-{-# LINE 607 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 610 "src/ehc/Scanner/Common.chs" #-}
 pCONID, pCONID', pCONSYM, pVARID, pVARID', pVARSYM :: IsParser p Token => p Token
 
 pCONID           = pConidTk
@@ -406,7 +408,7 @@
 pVARID'          = pVaridTk'
 pVARSYM          = pVarsymTk
 
-{-# LINE 627 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 630 "src/ehc/Scanner/Common.chs" #-}
 pQCONID, pQCONSYM, pQVARID, pQVARSYM :: IsParser p Token => p Token
 
 pQCONID          = pQConidTk
@@ -414,7 +416,7 @@
 pQVARID          = pQVaridTk
 pQVARSYM         = pQVarsymTk
 
-{-# LINE 640 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 643 "src/ehc/Scanner/Common.chs" #-}
 tokGetVal :: Token -> String
 tokGetVal x
   = tokenVal x
@@ -425,14 +427,14 @@
 pHNm :: (IsParser p Token) => p Token -> p HsName
 pHNm p = (hsnFromString . tokGetVal) <$> p
 
-{-# LINE 662 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 665 "src/ehc/Scanner/Common.chs" #-}
 tokConcat :: Token -> Token -> Token
 tokConcat t1 t2 = Reserved (tokenVal t1 ++ tokenVal t2) (position t1)
 
 tokEmpty :: Token
 tokEmpty = Reserved "" noPos
 
-{-# LINE 674 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 677 "src/ehc/Scanner/Common.chs" #-}
 pMODULE        ,
     pWHERE     ,
     pSEMI      ,
@@ -466,7 +468,7 @@
     pIN
   :: IsParser p Token => p Token
 
-{-# LINE 709 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 712 "src/ehc/Scanner/Common.chs" #-}
 pMODULE          = pKeyTk "module"
 pWHERE           = pKeyTk "where"
 pSEMI            = pKeyTk ";"
@@ -504,29 +506,29 @@
 tokOpStrsEH1   = [ "=", "\\", show hsnArrow, "::", "@" ]
 tokOpStrsHS1   = [ "-", "*", "!", "_", "%", "." ]
 
-{-# LINE 748 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 751 "src/ehc/Scanner/Common.chs" #-}
 pTDOT    	,
     pQDOT
   :: IsParser p Token => p Token
 
-{-# LINE 754 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 757 "src/ehc/Scanner/Common.chs" #-}
 pTDOT            = pKeyTk "..."
 pQDOT            = pKeyTk "...."
 
 tokOpStrsEH2   = [ "...", "...." ]
 tokOpStrsHS2   = [  ]
 
-{-# LINE 762 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 765 "src/ehc/Scanner/Common.chs" #-}
 tokOpStrsEH3   = [ "%" ]
 tokOpStrsHS3   = [  ]
 
-{-# LINE 767 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 770 "src/ehc/Scanner/Common.chs" #-}
 pFORALL       ,
     pEXISTS   ,
     pTILDE
   :: IsParser p Token => p Token
 
-{-# LINE 774 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 777 "src/ehc/Scanner/Common.chs" #-}
 pFORALL          = pKeyTk "forall"
 pEXISTS          = pKeyTk "exists"
 pTILDE           = pKeyTk (show hsnEqTilde)
@@ -536,7 +538,7 @@
 tokOpStrsEH4   = [ ".", show hsnEqTilde ]
 tokOpStrsHS4   = [  ]
 
-{-# LINE 785 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 788 "src/ehc/Scanner/Common.chs" #-}
 pLARROW        ,
     pVBAR      ,
     pDATA      ,
@@ -549,7 +551,7 @@
     pDOTDOT
   :: IsParser p Token => p Token
 
-{-# LINE 799 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 802 "src/ehc/Scanner/Common.chs" #-}
 pLARROW          = pKeyTk "<-"
 pVBAR            = pKeyTk "|"
 pDATA            = pKeyTk "data"
@@ -566,12 +568,12 @@
 tokOpStrsEH5   = [ "|" ]
 tokOpStrsHS5   = [ "<-", "..", ":" ]
 
-{-# LINE 817 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 820 "src/ehc/Scanner/Common.chs" #-}
 pFFORALL      ,
     pEEXISTS
   :: IsParser p Token => p Token
 
-{-# LINE 823 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 826 "src/ehc/Scanner/Common.chs" #-}
 pFFORALL         = pKeyTk "Forall"
 pEEXISTS         = pKeyTk "Exists"
 
@@ -581,7 +583,7 @@
 tokOpStrsEH6   = [ "*" ]
 tokOpStrsHS6   = [  ]
 
-{-# LINE 834 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 837 "src/ehc/Scanner/Common.chs" #-}
 pOROWREC        ,
     pCROWREC    ,
     pOROWROW    ,
@@ -592,7 +594,7 @@
     pHASH
   :: IsParser p Token => p Token
 
-{-# LINE 846 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 849 "src/ehc/Scanner/Common.chs" #-}
 pOROWREC         = pKeyTk (show hsnORec)
 pCROWREC         = pKeyTk (show hsnCRec)
 pOROWROW         = pKeyTk (show hsnORow)
@@ -602,11 +604,11 @@
 pCOLEQUAL        = pKeyTk ":="
 pHASH            = pKeyTk "#"
 
-{-# LINE 857 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 860 "src/ehc/Scanner/Common.chs" #-}
 tokOpStrsEH7   = [ ":=", "#" ]
 tokOpStrsHS7   = [  ]
 
-{-# LINE 862 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 865 "src/ehc/Scanner/Common.chs" #-}
 pLABEL          ,
     pLETSTRICT  ,
     pSAFE       ,
@@ -616,7 +618,7 @@
     pEXPORT
   :: IsParser p Token => p Token
 
-{-# LINE 873 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 876 "src/ehc/Scanner/Common.chs" #-}
 pLABEL           = pKeyTk "label"
 pLETSTRICT       = pKeyTk "letstrict"
 pSAFE            = pKeyTk "safe"
@@ -630,13 +632,13 @@
   ++ map show allFFIWays
 tokKeywStrsHS8 = [ "default", "export", "label", "safe" ]
 
-{-# LINE 890 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 893 "src/ehc/Scanner/Common.chs" #-}
 pFFIWay :: IsParser p Token => p (FFIWay,Token)
 pFFIWay
   =   pAnyKey (\way -> (,) way <$> pKeyTk (show way)) allFFIWays
   <?> "pFFIWay"
 
-{-# LINE 900 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 903 "src/ehc/Scanner/Common.chs" #-}
 pDARROW         ,
     pLTCOLON    ,
     pOIMPL      ,
@@ -646,7 +648,7 @@
     pDO
   :: IsParser p Token => p Token
 
-{-# LINE 911 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 914 "src/ehc/Scanner/Common.chs" #-}
 pDARROW          = pKeyTk (show hsnPrArrow)
 pLTCOLON         = pKeyTk "<:"
 pOIMPL           = pKeyTk (show hsnOImpl)
@@ -657,34 +659,35 @@
 
 tokKeywStrsEH9 = [ "class", "instance" ]
 tokKeywStrsHS9 = [ "do" ]
-tokOpStrsEH9   = [ show hsnPrArrow, "<:" ]
+tokOpStrsEH9 opts
+               = [ show hsnPrArrow ] ++ if ehcOptIsUnderDev UnderDev_NamedInst opts then [] else [ "<:" ]
 tokOpStrsHS9   = [  ]
 
-{-# LINE 926 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 930 "src/ehc/Scanner/Common.chs" #-}
 tokOpStrsEH10  = [] -- [ show hsnDynVar ]
 tokOpStrsHS10  = [  ]
 
-{-# LINE 934 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 938 "src/ehc/Scanner/Common.chs" #-}
 pTYPE
   :: IsParser p Token => p Token
 
-{-# LINE 939 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 943 "src/ehc/Scanner/Common.chs" #-}
 pTYPE            = pKeyTk "type"
 
-{-# LINE 943 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 947 "src/ehc/Scanner/Common.chs" #-}
 tokKeywStrsEH11 = [ "type" ]
 tokKeywStrsHS11 = [  ]
 tokOpStrsEH11   = [  ]
 tokOpStrsHS11   = [  ]
 
-{-# LINE 950 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 954 "src/ehc/Scanner/Common.chs" #-}
 pQUALIFIED      ,
     pQUESTQUEST ,
     pAS         ,
     pHIDING
   :: IsParser p Token => p Token
 
-{-# LINE 958 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 962 "src/ehc/Scanner/Common.chs" #-}
 pQUALIFIED       = pKeyTk "qualified"
 pAS              = pKeyTk "as"
 pHIDING          = pKeyTk "hiding"
@@ -693,7 +696,7 @@
 tokKeywStrsEH12 = [  ]
 tokKeywStrsHS12 = [ "qualified", "as", "hiding" ]
 
-{-# LINE 968 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 972 "src/ehc/Scanner/Common.chs" #-}
 pDERIVING
   :: IsParser p Token => p Token
 
@@ -701,7 +704,7 @@
 
 tokKeywStrsEH91 = [ "deriving" ]
 
-{-# LINE 977 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 981 "src/ehc/Scanner/Common.chs" #-}
 pUNSAFE     ,
     pTHREADSAFE ,
     pDYNAMIC    ,
@@ -726,7 +729,7 @@
 tokKeywStrsEH90  = [  ]
 tokKeywStrsHS90  = [ "unsafe", "threadsafe", "dynamic" ]
 
-{-# LINE 1003 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 1007 "src/ehc/Scanner/Common.chs" #-}
 pFUSE         ,
     -- pWITH     ,
     pCONVERT
@@ -739,7 +742,7 @@
 tokKeywStrsEH93  = [  ]
 tokKeywStrsHS93  = [ "fuse", "convert" ]
 
-{-# LINE 1017 "src/ehc/Scanner/Common.chs" #-}
+{-# LINE 1021 "src/ehc/Scanner/Common.chs" #-}
 pLANGUAGE_prag  		,
 	pOPTIONSUHC_prag  	,
 	pDERIVABLE_prag		,
diff --git a/src/UHC/Light/Compiler/SourceCodeSig.hs b/src/UHC/Light/Compiler/SourceCodeSig.hs
--- a/src/UHC/Light/Compiler/SourceCodeSig.hs
+++ b/src/UHC/Light/Compiler/SourceCodeSig.hs
@@ -1,3 +1,3 @@
 module UHC.Light.Compiler.SourceCodeSig where
-sig = "e9ef6ccfd3a42f604b8a5ae3d8af410c"
-timestamp = "20150430 +0200 120858"
+sig = "e96c473dd93f5fa14b8293738022e1a5"
+timestamp = "20151013 +0200 204022"
diff --git a/src/UHC/Light/Compiler/Ty.hs b/src/UHC/Light/Compiler/Ty.hs
--- a/src/UHC/Light/Compiler/Ty.hs
+++ b/src/UHC/Light/Compiler/Ty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty.ag)
 module UHC.Light.Compiler.Ty(TyAGItf (..), Ty (..), TyAnn (..), TyL, tyInt, tyChar
 , tyLHdAndTl, tyProdArgs
 , tyUnAnn
@@ -712,7 +712,7 @@
 
 
 
-instance AppLike Ty Ty {- TyAnn () -} where
+instance {-# OVERLAPPING  #-} AppLike Ty Ty {- TyAnn () -} where
   -- AppLike
 
   app1App        = Ty_App
@@ -750,7 +750,7 @@
 
 
 
-instance RecLike Ty Ty {- TyAnn () -} where
+instance {-# OVERLAPPING  #-} RecLike Ty Ty {- TyAnn () -} where
   -- RecLike
   recRow r 		= foldl (\t (n,e) -> Ty_Ext t n e) r
 
diff --git a/src/UHC/Light/Compiler/Ty/FitsIn.hs b/src/UHC/Light/Compiler/Ty/FitsIn.hs
--- a/src/UHC/Light/Compiler/Ty/FitsIn.hs
+++ b/src/UHC/Light/Compiler/Ty/FitsIn.hs
@@ -5,6 +5,7 @@
 , fitsInForToTyCore
 , fitsIn'
 , fitPredIntoPred
+, fitPredToEvid''
 , fitPredToEvid'
 , fitPredToEvid )
 where
@@ -1060,8 +1061,8 @@
                             (Ty_Pred pr1) (Ty_Pred pr2)
 
 {-# LINE 1914 "src/ehc/Ty/FitsIn.chs" #-}
-fitPredToEvid' :: UID -> VarMp -> Ty -> Either ClGamInfo ClGam -> FIOut
-fitPredToEvid' u varmp prTy gg
+fitPredToEvid'' :: (ClGamInfo -> Ty) -> UID -> VarMp -> Ty -> Either ClGamInfo ClGam -> FIOut
+fitPredToEvid'' getTy u varmp prTy gg
   =  case prTy of
        Ty_Any  ->  emptyFO
        _       ->  fPr u prTy
@@ -1075,17 +1076,42 @@
                     where fClgi u clgi prTy
                             = fo {foTy = appUnArrRes (foTy fo)}
                             where (u',u1,u2) = mkNewLevUID2 u
-                                  fo = fitsIn (predFIOpts {fioBindRVars = FIOBindNoBut $ Set.singleton u2}) emptyFE u1 varmp (clgiPrToEvidTy clgi) ([prTy] `appArr` mkTyVar u2)
+                                  fo = fitsIn (predFIOpts {fioBindRVars = FIOBindNoBut $ Set.singleton u2}) emptyFE u1 varmp (getTy clgi) ([prTy] `appArr` mkTyVar u2)
                  Ty_Pred (Pred_Pred t)
                     ->  let  (aL,r) = appUnArr t
                              (_,aLr'@(r':aL')) = foldr (\t (u,ar) -> let (u',u1) = mkNewLevUID u in (u',fPr u1 t : ar)) (u,[]) (r : aL)
                         in   manyFO (aLr' ++ [emptyFO {foTy = map foTy aL' `appArr` foTy r'}])
 
 {-# LINE 1937 "src/ehc/Ty/FitsIn.chs" #-}
+fitPredToEvid' :: UID -> VarMp -> Ty -> Either ClGamInfo ClGam -> FIOut
+fitPredToEvid' = fitPredToEvid'' clgiPrToEvidRecTy
+{-
+fitPredToEvid' u varmp prTy gg =
+  =  case prTy of
+       Ty_Any  ->  emptyFO
+       _       ->  fPr u prTy
+  where  fPr u prTy
+            =  case tyUnAnn prTy of -- TBD: necessary?
+                 Ty_Pred p@(Pred_Class _)
+                    ->  case gg of
+                          Left clgi -> fClgi u clgi prTy
+                          Right g   -> maybe err (\clgi -> fClgi u clgi prTy) $ gamLookup (fst $ predMatchNmArgs p) g
+                                    where err = emptyFO {foErrL = [rngLift emptyRange mkErr_NamesNotIntrod "class" [fst $ tyPredMatchNmArgs prTy]]}
+                    where fClgi u clgi prTy
+                            = fo {foTy = appUnArrRes (foTy fo)}
+                            where (u',u1,u2) = mkNewLevUID2 u
+                                  fo = fitsIn (predFIOpts {fioBindRVars = FIOBindNoBut $ Set.singleton u2}) emptyFE u1 varmp (clgiPrToEvidRecTy clgi) ([prTy] `appArr` mkTyVar u2)
+                 Ty_Pred (Pred_Pred t)
+                    ->  let  (aL,r) = appUnArr t
+                             (_,aLr'@(r':aL')) = foldr (\t (u,ar) -> let (u',u1) = mkNewLevUID u in (u',fPr u1 t : ar)) (u,[]) (r : aL)
+                        in   manyFO (aLr' ++ [emptyFO {foTy = map foTy aL' `appArr` foTy r'}])
+-}
+
+{-# LINE 1963 "src/ehc/Ty/FitsIn.chs" #-}
 fitPredToEvid :: UID -> VarMp -> Ty -> ClGam -> FIOut
 fitPredToEvid u varmp prTy g = fitPredToEvid' u varmp prTy (Right g)
 
-{-# LINE 1946 "src/ehc/Ty/FitsIn.chs" #-}
+{-# LINE 1972 "src/ehc/Ty/FitsIn.chs" #-}
 mkFitsInWrap' :: FIEnv -> FitsIn'
 mkFitsInWrap' env
   =  \opt u varmp t1 t2
@@ -1098,7 +1124,7 @@
         -> let  fo = fitsIn opt env u varmp t1 t2
            in   (foTy fo, foVarMp fo, foErrL fo)
 
-{-# LINE 1964 "src/ehc/Ty/FitsIn.chs" #-}
+{-# LINE 1990 "src/ehc/Ty/FitsIn.chs" #-}
 -- fitsInForToTyCore :: C.KiFitsIn
 fitsInForToTyCore uniq t1 t2
   = foLInstToL fo
diff --git a/src/UHC/Light/Compiler/Ty/Ftv.hs b/src/UHC/Light/Compiler/Ty/Ftv.hs
--- a/src/UHC/Light/Compiler/Ty/Ftv.hs
+++ b/src/UHC/Light/Compiler/Ty/Ftv.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Ftv.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Ftv.ag)
 module UHC.Light.Compiler.Ty.Ftv(tyFtv
 , tyFtvMp
 , implsFtvMp) where
diff --git a/src/UHC/Light/Compiler/Ty/Pretty.hs b/src/UHC/Light/Compiler/Ty/Pretty.hs
--- a/src/UHC/Light/Compiler/Ty/Pretty.hs
+++ b/src/UHC/Light/Compiler/Ty/Pretty.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Pretty.ag)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Pretty.ag)
 module UHC.Light.Compiler.Ty.Pretty(ppTyWithCfg', ppTyWithCfg, ppTy
 , CfgPPTy
 , ppTyPr
@@ -69,7 +69,7 @@
 
 
 
-ppTyWithCfg' :: CfgPP x => x -> Ty -> PP_Doc
+ppTyWithCfg' :: CfgPP' x => x -> Ty -> PP_Doc
 ppTyWithCfg' x ty = pp_Syn_TyAGItf $ synTyWithCfg (cfgPPTy x) ty
 
 synTyWithCfg :: CfgPPTy -> Ty -> Syn_TyAGItf
@@ -118,7 +118,7 @@
 
 
 
-ppPredOccId' :: CfgPP x => x -> PredOccId -> PP_Doc
+ppPredOccId' :: CfgPP' x => x -> PredOccId -> PP_Doc
 ppPredOccId' x poi
   = ppi (poiId poi)
   where ppi = cfgppUID x
@@ -202,7 +202,7 @@
 
 
 
-cfgPPTy' :: CfgPP x => x -> CfgPPTy -> CfgPPTy
+cfgPPTy' :: CfgPP' x => x -> CfgPPTy -> CfgPPTy
 cfgPPTy' x c
   = c { cfgPPTyPPHsn        = cfgppHsName x
       , cfgPPTyPPVar        = \c u i -> cfgppVarHsName x Nothing (Just u) (Just i) Nothing
@@ -211,7 +211,7 @@
       , cfgPPTyPPVarDflt    = \c pre tv mbpp -> cfgppTyPPVarDflt x pre tv mbpp
       }
 
-cfgPPTy :: CfgPP x => x -> CfgPPTy
+cfgPPTy :: CfgPP' x => x -> CfgPPTy
 cfgPPTy x = cfgPPTy' x cfgPPTyDflt
 
 
@@ -222,7 +222,7 @@
       { cfgPPTyPPHsn                = pp
       , cfgPPTyPPCon                = \_ -> ppCon
       , cfgPPTyPPVar                = \c _ i -> ppTnUniq c i
-      , cfgPPTyPPVarDflt            = \cfg pre tv mbpp -> cfgPPTyPPHsn cfg $ mkHNm $ show tv
+      , cfgPPTyPPVarDflt            = \cfg pre tv mbpp -> maybe (cfgPPTyPPHsn cfg $ mkHNm $ show tv) id mbpp
       , cfgPPTyPPImplsPred          = \iv pr pv -> iv >|< "=" >|< pr >|< "/" >|< pv
       , cfgPPTyPPImplsTailCons      = \pr occs -> pr >|< occs
       , cfgPPTyPPImplsAppWrap       = ($)
diff --git a/src/UHC/Light/Compiler/Ty/TreeTrieKey.hs b/src/UHC/Light/Compiler/Ty/TreeTrieKey.hs
--- a/src/UHC/Light/Compiler/Ty/TreeTrieKey.hs
+++ b/src/UHC/Light/Compiler/Ty/TreeTrieKey.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/TreeTrieKey)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/TreeTrieKey)
 module UHC.Light.Compiler.Ty.TreeTrieKey where
 
 import UHC.Light.Compiler.Base.Common
diff --git a/src/UHC/Light/Compiler/Ty/Trf/BetaReduce.hs b/src/UHC/Light/Compiler/Ty/Trf/BetaReduce.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/BetaReduce.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/BetaReduce.hs
@@ -19,7 +19,6 @@
 import UHC.Light.Compiler.VarMp
 import Data.Maybe
 import UHC.Util.Pretty
-import UHC.Light.Compiler.Base.Debug
 
 {-# LINE 34 "src/ehc/Ty/Trf/BetaReduce.chs" #-}
 data TyBetaRedOut' x
diff --git a/src/UHC/Light/Compiler/Ty/Trf/Canonic.hs b/src/UHC/Light/Compiler/Ty/Trf/Canonic.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/Canonic.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/Canonic.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Canonic)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Canonic)
 module UHC.Light.Compiler.Ty.Trf.Canonic(TyCanonicOut
 , TyCanonicOpts (..), emptyTyCanonicOpts
 , tyCanonic
diff --git a/src/UHC/Light/Compiler/Ty/Trf/FreshVar.hs b/src/UHC/Light/Compiler/Ty/Trf/FreshVar.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/FreshVar.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/FreshVar.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/FreshVa)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/FreshVa)
 module UHC.Light.Compiler.Ty.Trf.FreshVar(tyFreshVar) where
 
 import UHC.Light.Compiler.Base.Common
diff --git a/src/UHC/Light/Compiler/Ty/Trf/Instantiate.hs b/src/UHC/Light/Compiler/Ty/Trf/Instantiate.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/Instantiate.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/Instantiate.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Instant)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Instant)
 module UHC.Light.Compiler.Ty.Trf.Instantiate(tyInst1Quants, tyInst1Exists, instCoConst, instContra, instCo
 , tyInstToL) where
 
@@ -9,7 +9,6 @@
 import UHC.Light.Compiler.Ty
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
-import UHC.Light.Compiler.Base.Debug
 import UHC.Util.Pretty
 import Data.List
 import qualified Data.Set as Set
@@ -46,8 +45,6 @@
 - Var: type variables, including a category: plain tyvars, fixed tyvars (aka skolems)
 
 -}
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Ty/Trf/MergePreds.hs b/src/UHC/Light/Compiler/Ty/Trf/MergePreds.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/MergePreds.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/MergePreds.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/MergePr)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/MergePr)
 module UHC.Light.Compiler.Ty.Trf.MergePreds(tyMergePreds
 , TyMergePredOut (..)
 , TQOGam) where
diff --git a/src/UHC/Light/Compiler/Ty/Trf/Quantify.hs b/src/UHC/Light/Compiler/Ty/Trf/Quantify.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/Quantify.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/Quantify.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Quantif)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Quantif)
 module UHC.Light.Compiler.Ty.Trf.Quantify(tyQuantify
 , TyQuOpts (..), defaultTyQuOpts
 , TyQuOut (..)
@@ -14,8 +14,6 @@
 import UHC.Light.Compiler.Ty
 import UHC.Light.Compiler.VarMp
 import UHC.Light.Compiler.Substitutable
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
 import qualified Data.Set as Set
 import qualified Data.Map as Map
 import Data.List as List
@@ -67,8 +65,6 @@
 - Var: type variables, including a category: plain tyvars, fixed tyvars (aka skolems)
 
 -}
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Ty/Trf/Subst.hs b/src/UHC/Light/Compiler/Ty/Trf/Subst.hs
--- a/src/UHC/Light/Compiler/Ty/Trf/Subst.hs
+++ b/src/UHC/Light/Compiler/Ty/Trf/Subst.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Subst.a)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Trf/Subst.a)
 module UHC.Light.Compiler.Ty.Trf.Subst(tyAppVarLookup, tyAppVarLookup2) where
 
 import UHC.Light.Compiler.Base.Common
@@ -9,9 +9,6 @@
 import UHC.Util.Utils
 import qualified Data.Map as Map
 import UHC.Light.Compiler.VarLookup
-import UHC.Light.Compiler.Base.Debug
-import UHC.Util.Pretty
-import UHC.Light.Compiler.Ty.Pretty
 
 
 
@@ -45,8 +42,6 @@
 - Var: type variables, including a category: plain tyvars, fixed tyvars (aka skolems)
 
 -}
-
-
 
 
 
diff --git a/src/UHC/Light/Compiler/Ty/UsedNames.hs b/src/UHC/Light/Compiler/Ty/UsedNames.hs
--- a/src/UHC/Light/Compiler/Ty/UsedNames.hs
+++ b/src/UHC/Light/Compiler/Ty/UsedNames.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Ty/UsedNames.a)
+-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/UsedNames.a)
 module UHC.Light.Compiler.Ty.UsedNames(tyUsedNames) where
 
 import Data.List
diff --git a/src/UHC/Light/Compiler/VarMp.hs b/src/UHC/Light/Compiler/VarMp.hs
--- a/src/UHC/Light/Compiler/VarMp.hs
+++ b/src/UHC/Light/Compiler/VarMp.hs
@@ -41,7 +41,6 @@
 import UHC.Light.Compiler.Error
 import UHC.Util.VarMp
 import UHC.Light.Compiler.VarLookup
-import UHC.Light.Compiler.Base.Debug
 import UHC.Util.Utils
 import Control.Monad
 import UHC.Util.Binary
diff --git a/uhc-light.cabal b/uhc-light.cabal
--- a/uhc-light.cabal
+++ b/uhc-light.cabal
@@ -1,5 +1,5 @@
 Name:				uhc-light
-Version:			1.1.9.0
+Version:			1.1.9.1
 License:			BSD3
 Copyright:			Utrecht University, Department of Information and Computing Sciences, Software Technology group
 Build-Type:			 Simple 
@@ -12,24 +12,25 @@
 Synopsis:			Part of UHC packaged as cabal/hackage installable library
 Description:		A 'light' variant of UHC including only an API and executables for compiling to Core representation (uhcl) and running CoreRun (uhcr). This version is just to test the infrastructure. Later versions will provide a fleshing out of the API and completion of the now rudimentary platform independent (Haskell) interpreted running etc..
 Cabal-Version:      >= 1.8
-data-files:          103/lib/ag/AnaDomain/AbsSyn.ag,103/lib/ag/Cmm/AbsSyn.ag,103/lib/ag/Core/AbsSyn.ag,103/lib/ag/CoreRun/AbsSyn.ag,103/lib/ag/EH/AbsSyn.ag,103/lib/ag/Error/AbsSyn.ag,103/lib/ag/Foreign/AbsSyn.ag,103/lib/ag/GrinByteCode/AbsSyn.ag,103/lib/ag/GrinCode/AbsSyn.ag,103/lib/ag/HS/AbsSyn.ag,103/lib/ag/JavaScript/AbsSyn.ag,103/lib/ag/JVMClass/AbsSyn.ag,103/lib/ag/LLVM/AbsSyn.ag,103/lib/ag/Silly/AbsSyn.ag,103/lib/ag/Ty/AbsSyn.ag,103/lib/ag/TyCore/AbsSyn.ag,103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.cr,103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.crr,103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.hi,103/lib/pkg/array-1.0.0.0/103/cr/plain/installed-pkg-config,103/lib/pkg/base-3.0.0.0/103/cr/plain/CompileAll,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/include/consUtils.h,103/lib/pkg/base-3.0.0.0/103/cr/plain/installed-pkg-config,103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.crr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Control/Monad.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Bits.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Char.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Either.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/IORef.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/List.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Maybe.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Data/Typeable.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Debug/Trace.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/Ptr.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Foreign/StablePtr.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/CTypes.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/dirUtils.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBase.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/HsBaseConfig.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/IntLikeInstance.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/MachDeps.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/TupleInstance.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/include/Typeable.h,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/installed-pkg-config,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Error.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Fix.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO/Unsafe.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/System/IO.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Array.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Base.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bits.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Bounded.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/BoxArray.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Char.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Enum.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Eq.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Float.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/GC.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics/Tuple.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Generics.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Handle.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IO.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/IOBase.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ix.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/LazyST.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MutVar.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/MVar.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/OldException.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ord.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Prims.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Ptr.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Read.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Real.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Run.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Show.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/ST.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StablePtr.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/StackTrace.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/STRef.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Types.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/Weak.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/UHC/WeakPtr.hi,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.cr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.crr,103/lib/pkg/uhcbase-1.1.8.12/103/cr/plain/Unsafe/Coerce.hi,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/CTypes.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/dirUtils.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBase.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/HsBaseConfig.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/IntLikeInstance.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/MachDeps.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/TupleInstance.h,103/lib/pkg/uhcbase-1.1.9.0/103/cr/plain/include/Typeable.h 
+data-files:          103/lib/ag/AnaDomain/AbsSyn.ag,103/lib/ag/Cmm/AbsSyn.ag,103/lib/ag/Core/AbsSyn.ag,103/lib/ag/CoreRun/AbsSyn.ag,103/lib/ag/EH/AbsSyn.ag,103/lib/ag/Error/AbsSyn.ag,103/lib/ag/Foreign/AbsSyn.ag,103/lib/ag/GrinByteCode/AbsSyn.ag,103/lib/ag/GrinCode/AbsSyn.ag,103/lib/ag/HS/AbsSyn.ag,103/lib/ag/JavaScript/AbsSyn.ag,103/lib/ag/JVMClass/AbsSyn.ag,103/lib/ag/LLVM/AbsSyn.ag,103/lib/ag/Silly/AbsSyn.ag,103/lib/ag/Ty/AbsSyn.ag,103/lib/ag/TyCore/AbsSyn.ag,103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.bcrr,103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.cr,103/lib/pkg/array-1.0.0.0/103/cr/plain/Data/Array.hi,103/lib/pkg/array-1.0.0.0/103/cr/plain/installed-pkg-config,103/lib/pkg/base-3.0.0.0/103/cr/plain/CompileAll,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Applicative.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Arrow.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Category.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Fix.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/Instances.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST/Lazy.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Control/Monad/ST.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Bool.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Complex.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Dynamic.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Eq.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Foldable.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Function.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ix.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Monoid.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ord.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Ratio.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/String.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Data/Traversable.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/include/consUtils.h,103/lib/pkg/base-3.0.0.0/103/cr/plain/installed-pkg-config,103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Numeric.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Prelude.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Console/GetOpt.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/System/Exit.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadP.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/ParserCombinators/ReadPrec.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read/Lex.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Read.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show/Functions.hi,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.bcrr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.cr,103/lib/pkg/base-3.0.0.0/103/cr/plain/Text/Show.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Control/Monad.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Bits.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Char.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Either.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/IORef.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/List.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Maybe.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Data/Typeable.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Debug/Trace.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/Ptr.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Foreign/StablePtr.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/CTypes.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/dirUtils.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBase.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/HsBaseConfig.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/IntLikeInstance.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/MachDeps.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/TupleInstance.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/include/Typeable.h,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/installed-pkg-config,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Error.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Fix.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO/Unsafe.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/System/IO.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Array.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Base.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bits.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Bounded.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/BoxArray.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Char.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Enum.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Eq.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Float.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/GC.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics/Tuple.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Generics.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Handle.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IO.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/IOBase.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ix.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/LazyST.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MutVar.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/MVar.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/OldException.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ord.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Prims.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Ptr.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Read.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Real.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Run.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Show.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/ST.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StablePtr.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/StackTrace.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/STRef.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Types.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/Weak.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/UHC/WeakPtr.hi,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.bcrr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.cr,103/lib/pkg/uhcbase-1.1.9.1/103/cr/plain/Unsafe/Coerce.hi 
 extra-source-files:  changelog.md 
 
 Library
   Hs-Source-Dirs:        src 
-  Build-Depends:		fgl,uulib>=0.9.19,hashable>=1.1&&<1.3,uhc-util==0.1.5.5,base>=4.7&&<5,vector,syb,network,binary,mtl,transformers,directory,containers,array,process,filepath,primitive,binary,syb,bytestring,uulib>=0.9.12,old-locale
-  Extensions:			RankNTypes,MultiParamTypeClasses,FunctionalDependencies,UndecidableInstances,DeriveDataTypeable,OverlappingInstances,LiberalTypeSynonyms,StandaloneDeriving,DeriveGeneric,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,ScopedTypeVariables
-  Exposed-Modules:		 UHC.Light.Compiler.API,UHC.Light.Compiler.Base.API,UHC.Light.Compiler.Core.API,UHC.Light.Compiler.CoreRun.API,UHC.Light.Compiler.CoreRun.API.Internal,UHC.Light.Compiler.EHC.Main,UHC.Light.Compiler.EHC.Main.Compile,UHC.Light.Compiler.EHC.Main.Utils 
-  Other-Modules:		 Paths_uhc_light,UHC.Light.Compiler.AbstractCore,UHC.Light.Compiler.AbstractCore.Utils,UHC.Light.Compiler.AnaDomain,UHC.Light.Compiler.AnaDomain.Ftv,UHC.Light.Compiler.AnaDomain.Pretty,UHC.Light.Compiler.AnaDomain.Trf.Instantiate,UHC.Light.Compiler.AnaDomain.Trf.Subst,UHC.Light.Compiler.AnaDomain.Utils,UHC.Light.Compiler.Base.CfgPP,UHC.Light.Compiler.Base.Common,UHC.Light.Compiler.Base.Debug,UHC.Light.Compiler.Base.FileSearchLocation,UHC.Light.Compiler.Base.Fld,UHC.Light.Compiler.Base.HsName,UHC.Light.Compiler.Base.HsName.Builtin,UHC.Light.Compiler.Base.Optimize,UHC.Light.Compiler.Base.PackageDatabase,UHC.Light.Compiler.Base.ParseUtils,UHC.Light.Compiler.Base.Parser,UHC.Light.Compiler.Base.Parser2,UHC.Light.Compiler.Base.Pragma,UHC.Light.Compiler.Base.RLList,UHC.Light.Compiler.Base.Range,UHC.Light.Compiler.Base.Strictness,UHC.Light.Compiler.Base.Target,UHC.Light.Compiler.Base.TermLike,UHC.Light.Compiler.Base.TreeTrie,UHC.Light.Compiler.Base.UID,UHC.Light.Compiler.CHR,UHC.Light.Compiler.CHR.Constraint,UHC.Light.Compiler.CHR.Key,UHC.Light.Compiler.CHR.Solve,UHC.Light.Compiler.CodeGen.BasicAnnot,UHC.Light.Compiler.CodeGen.Bits,UHC.Light.Compiler.CodeGen.BuiltinPrims,UHC.Light.Compiler.CodeGen.BuiltinSizeInfo,UHC.Light.Compiler.CodeGen.CVar,UHC.Light.Compiler.CodeGen.Const,UHC.Light.Compiler.CodeGen.ImportUsedModules,UHC.Light.Compiler.CodeGen.ModuleImportExportImpl,UHC.Light.Compiler.CodeGen.RefGenerator,UHC.Light.Compiler.CodeGen.Tag,UHC.Light.Compiler.CodeGen.TrfUtils,UHC.Light.Compiler.CodeGen.ValAccess,UHC.Light.Compiler.Config,UHC.Light.Compiler.ConfigCabal,UHC.Light.Compiler.ConfigDefines,UHC.Light.Compiler.ConfigInstall,UHC.Light.Compiler.ConfigInternalVersions,UHC.Light.Compiler.Core,UHC.Light.Compiler.Core.BindExtract,UHC.Light.Compiler.Core.Check,UHC.Light.Compiler.Core.Coercion,UHC.Light.Compiler.Core.ExtractFFE,UHC.Light.Compiler.Core.FFI,UHC.Light.Compiler.Core.FvS,UHC.Light.Compiler.Core.Merge,UHC.Light.Compiler.Core.ModAsMap,UHC.Light.Compiler.Core.Parser,UHC.Light.Compiler.Core.Pretty,UHC.Light.Compiler.Core.Subst,UHC.Light.Compiler.Core.SysF.AsTy,UHC.Light.Compiler.Core.ToCoreRun,UHC.Light.Compiler.Core.ToGrin,UHC.Light.Compiler.Core.Trf,UHC.Light.Compiler.Core.Trf.ANormal,UHC.Light.Compiler.Core.Trf.AnaRelevance,UHC.Light.Compiler.Core.Trf.AnnBasedSimplify,UHC.Light.Compiler.Core.Trf.CAFGlobalAsArg,UHC.Light.Compiler.Core.Trf.ConstProp,UHC.Light.Compiler.Core.Trf.ElimNonCodegenConstructs,UHC.Light.Compiler.Core.Trf.ElimTrivApp,UHC.Light.Compiler.Core.Trf.EraseExtractTysigCore,UHC.Light.Compiler.Core.Trf.EtaRed,UHC.Light.Compiler.Core.Trf.ExplicitStackTrace,UHC.Light.Compiler.Core.Trf.FixAfterParse,UHC.Light.Compiler.Core.Trf.FloatToGlobal,UHC.Light.Compiler.Core.Trf.InlineLetAlias,UHC.Light.Compiler.Core.Trf.LamGlobalAsArg,UHC.Light.Compiler.Core.Trf.LetDefBeforeUse,UHC.Light.Compiler.Core.Trf.LetFlattenStrict,UHC.Light.Compiler.Core.Trf.LetUnrec,UHC.Light.Compiler.Core.Trf.OptimizeStrictness,UHC.Light.Compiler.Core.Trf.RenUniq,UHC.Light.Compiler.Core.UsedModNms,UHC.Light.Compiler.Core.Utils,UHC.Light.Compiler.CoreRun,UHC.Light.Compiler.CoreRun.Check,UHC.Light.Compiler.CoreRun.Parser,UHC.Light.Compiler.CoreRun.Pretty,UHC.Light.Compiler.CoreRun.Prim,UHC.Light.Compiler.CoreRun.Run,UHC.Light.Compiler.CoreRun.Run.Val,UHC.Light.Compiler.CoreRun.Run.Val.Prim,UHC.Light.Compiler.CoreRun.Run.Val.RunExplStk,UHC.Light.Compiler.CoreRun.Run.Val.RunImplStk,UHC.Light.Compiler.Deriving,UHC.Light.Compiler.EH,UHC.Light.Compiler.EH.MainAG,UHC.Light.Compiler.EH.MainAG_AGItf,UHC.Light.Compiler.EH.MainAG_CaseAlt,UHC.Light.Compiler.EH.MainAG_CaseAlts,UHC.Light.Compiler.EH.MainAG_DataConstr,UHC.Light.Compiler.EH.MainAG_DataConstrs,UHC.Light.Compiler.EH.MainAG_DataField,UHC.Light.Compiler.EH.MainAG_DataFieldExpr,UHC.Light.Compiler.EH.MainAG_DataFieldPatExpr,UHC.Light.Compiler.EH.MainAG_DataFields,UHC.Light.Compiler.EH.MainAG_Decl,UHC.Light.Compiler.EH.MainAG_Decls,UHC.Light.Compiler.EH.MainAG_Expr,UHC.Light.Compiler.EH.MainAG_ExprAnn,UHC.Light.Compiler.EH.MainAG_FuncDep,UHC.Light.Compiler.EH.MainAG_FuncDeps,UHC.Light.Compiler.EH.MainAG_KiExpr,UHC.Light.Compiler.EH.MainAG_KiExprAnn,UHC.Light.Compiler.EH.MainAG_MbTyExpr,UHC.Light.Compiler.EH.MainAG_PatExpr,UHC.Light.Compiler.EH.MainAG_PatExprAnn,UHC.Light.Compiler.EH.MainAG_PrExpr,UHC.Light.Compiler.EH.MainAG_PrExprs,UHC.Light.Compiler.EH.MainAG_RecExpr,UHC.Light.Compiler.EH.MainAG_RecPatExpr,UHC.Light.Compiler.EH.MainAG_RowTyExpr,UHC.Light.Compiler.EH.MainAG_TyExpr,UHC.Light.Compiler.EH.MainAG_TyExprAnn,UHC.Light.Compiler.EH.MainAG_TyExprs,UHC.Light.Compiler.EH.MainAG_TyVar,UHC.Light.Compiler.EH.MainAG_TyVars,UHC.Light.Compiler.EH.MainAG_common,UHC.Light.Compiler.EH.Parser,UHC.Light.Compiler.EHC.ASTHandler,UHC.Light.Compiler.EHC.ASTHandler.Instances,UHC.Light.Compiler.EHC.BuildFunction,UHC.Light.Compiler.EHC.BuildFunction.Run,UHC.Light.Compiler.EHC.Common,UHC.Light.Compiler.EHC.CompileGroup,UHC.Light.Compiler.EHC.CompilePhase.Cleanup,UHC.Light.Compiler.EHC.CompilePhase.Common,UHC.Light.Compiler.EHC.CompilePhase.CompileC,UHC.Light.Compiler.EHC.CompilePhase.FlowBetweenPhase,UHC.Light.Compiler.EHC.CompilePhase.Link,UHC.Light.Compiler.EHC.CompilePhase.Module,UHC.Light.Compiler.EHC.CompilePhase.Output,UHC.Light.Compiler.EHC.CompilePhase.Parsers,UHC.Light.Compiler.EHC.CompilePhase.Run,UHC.Light.Compiler.EHC.CompilePhase.Semantics,UHC.Light.Compiler.EHC.CompilePhase.TopLevelPhases,UHC.Light.Compiler.EHC.CompilePhase.Transformations,UHC.Light.Compiler.EHC.CompilePhase.Translations,UHC.Light.Compiler.EHC.CompileRun,UHC.Light.Compiler.EHC.CompileUnit,UHC.Light.Compiler.EHC.Environment,UHC.Light.Compiler.EHC.FileSuffMp,UHC.Light.Compiler.EHC.InitialSetup,UHC.Light.Compiler.Error,UHC.Light.Compiler.Error.Pretty,UHC.Light.Compiler.FinalEnv,UHC.Light.Compiler.Foreign,UHC.Light.Compiler.Foreign.Boxing,UHC.Light.Compiler.Foreign.Extract,UHC.Light.Compiler.Foreign.Parser,UHC.Light.Compiler.Foreign.Pretty,UHC.Light.Compiler.Gam,UHC.Light.Compiler.Gam.AppSpineGam,UHC.Light.Compiler.Gam.Base,UHC.Light.Compiler.Gam.ClGam,UHC.Light.Compiler.Gam.ClassDefaultGam,UHC.Light.Compiler.Gam.DataGam,UHC.Light.Compiler.Gam.FixityGam,UHC.Light.Compiler.Gam.Full,UHC.Light.Compiler.Gam.Instantiate,UHC.Light.Compiler.Gam.KiGam,UHC.Light.Compiler.Gam.PolGam,UHC.Light.Compiler.Gam.Quantify,UHC.Light.Compiler.Gam.TyGam,UHC.Light.Compiler.Gam.TyKiGam,UHC.Light.Compiler.Gam.Utils,UHC.Light.Compiler.Gam.ValGam,UHC.Light.Compiler.Generics,UHC.Light.Compiler.HI,UHC.Light.Compiler.HS,UHC.Light.Compiler.HS.MainAG,UHC.Light.Compiler.HS.ModImpExp,UHC.Light.Compiler.HS.Parser,UHC.Light.Compiler.LamInfo,UHC.Light.Compiler.Module.ImportExport,UHC.Light.Compiler.Module.Merge,UHC.Light.Compiler.NameAspect,UHC.Light.Compiler.Opts,UHC.Light.Compiler.Opts.Base,UHC.Light.Compiler.Opts.CommandLine,UHC.Light.Compiler.Pred,UHC.Light.Compiler.Pred.CHR,UHC.Light.Compiler.Pred.CommonCHR,UHC.Light.Compiler.Pred.Evidence,UHC.Light.Compiler.Pred.EvidenceToCore,UHC.Light.Compiler.Pred.Heuristics,UHC.Light.Compiler.Pred.RedGraph,UHC.Light.Compiler.Pred.ToCHR,UHC.Light.Compiler.Scanner.Common,UHC.Light.Compiler.Scanner.Machine,UHC.Light.Compiler.Scanner.Scanner,UHC.Light.Compiler.Scanner.Token,UHC.Light.Compiler.Scanner.TokenParser,UHC.Light.Compiler.SourceCodeSig,UHC.Light.Compiler.Substitutable,UHC.Light.Compiler.Ty,UHC.Light.Compiler.Ty.AppSpineGam,UHC.Light.Compiler.Ty.FIEnv,UHC.Light.Compiler.Ty.FIEnv2,UHC.Light.Compiler.Ty.FitsIn,UHC.Light.Compiler.Ty.FitsInCommon,UHC.Light.Compiler.Ty.FitsInCommon2,UHC.Light.Compiler.Ty.Ftv,UHC.Light.Compiler.Ty.Parser,UHC.Light.Compiler.Ty.Pretty,UHC.Light.Compiler.Ty.TreeTrieKey,UHC.Light.Compiler.Ty.Trf.BetaReduce,UHC.Light.Compiler.Ty.Trf.Canonic,UHC.Light.Compiler.Ty.Trf.FreshVar,UHC.Light.Compiler.Ty.Trf.Instantiate,UHC.Light.Compiler.Ty.Trf.MergePreds,UHC.Light.Compiler.Ty.Trf.Quantify,UHC.Light.Compiler.Ty.Trf.Subst,UHC.Light.Compiler.Ty.UsedNames,UHC.Light.Compiler.Ty.Utils1,UHC.Light.Compiler.Ty.Utils2,UHC.Light.Compiler.VarLookup,UHC.Light.Compiler.VarMp,UHC.Light.Compiler.VarMp.Utils 
+  Build-Depends:		fgl,uulib>=0.9.19,hashable>=1.1&&<1.3,uhc-util>=0.1.6.2&&<0.1.7,base>=4.7&&<5,vector,syb,network,binary,mtl,transformers,directory,containers,array,process,filepath,primitive,binary,syb,bytestring,uulib>=0.9.12,old-locale
+  Extensions:			RankNTypes,MultiParamTypeClasses,FunctionalDependencies,UndecidableInstances,DeriveDataTypeable,LiberalTypeSynonyms,StandaloneDeriving,DeriveGeneric,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,ScopedTypeVariables
+  Exposed-Modules:		 UHC.Light.Compiler.API,UHC.Light.Compiler.Base.API,UHC.Light.Compiler.Core.API,UHC.Light.Compiler.CoreRun.API,UHC.Light.Compiler.CoreRun.API.Internal,UHC.Light.Compiler.EH.Main,UHC.Light.Compiler.EHC.Main,UHC.Light.Compiler.EHC.Main.Compile,UHC.Light.Compiler.EHC.Main.Utils 
+  Other-Modules:		 Paths_uhc_light,UHC.Light.Compiler.AbstractCore,UHC.Light.Compiler.AbstractCore.Utils,UHC.Light.Compiler.AnaDomain,UHC.Light.Compiler.AnaDomain.Ftv,UHC.Light.Compiler.AnaDomain.Pretty,UHC.Light.Compiler.AnaDomain.Trf.Instantiate,UHC.Light.Compiler.AnaDomain.Trf.Subst,UHC.Light.Compiler.AnaDomain.Utils,UHC.Light.Compiler.Base.CfgPP,UHC.Light.Compiler.Base.Common,UHC.Light.Compiler.Base.Debug,UHC.Light.Compiler.Base.FileSearchLocation,UHC.Light.Compiler.Base.Fld,UHC.Light.Compiler.Base.HsName,UHC.Light.Compiler.Base.HsName.Builtin,UHC.Light.Compiler.Base.Optimize,UHC.Light.Compiler.Base.PackageDatabase,UHC.Light.Compiler.Base.ParseUtils,UHC.Light.Compiler.Base.Parser,UHC.Light.Compiler.Base.Parser2,UHC.Light.Compiler.Base.Pragma,UHC.Light.Compiler.Base.RLList,UHC.Light.Compiler.Base.Range,UHC.Light.Compiler.Base.Strictness,UHC.Light.Compiler.Base.Target,UHC.Light.Compiler.Base.TermLike,UHC.Light.Compiler.Base.Trace,UHC.Light.Compiler.Base.TreeTrie,UHC.Light.Compiler.Base.UID,UHC.Light.Compiler.Base.UnderDev,UHC.Light.Compiler.CHR,UHC.Light.Compiler.CHR.Constraint,UHC.Light.Compiler.CHR.Key,UHC.Light.Compiler.CHR.Solve,UHC.Light.Compiler.CodeGen.BasicAnnot,UHC.Light.Compiler.CodeGen.Bits,UHC.Light.Compiler.CodeGen.BuiltinPrims,UHC.Light.Compiler.CodeGen.BuiltinSizeInfo,UHC.Light.Compiler.CodeGen.CEnv,UHC.Light.Compiler.CodeGen.CVar,UHC.Light.Compiler.CodeGen.Const,UHC.Light.Compiler.CodeGen.ImportUsedModules,UHC.Light.Compiler.CodeGen.ModuleImportExportImpl,UHC.Light.Compiler.CodeGen.RefGenerator,UHC.Light.Compiler.CodeGen.Tag,UHC.Light.Compiler.CodeGen.TrfUtils,UHC.Light.Compiler.CodeGen.ValAccess,UHC.Light.Compiler.Config,UHC.Light.Compiler.ConfigCabal,UHC.Light.Compiler.ConfigDefines,UHC.Light.Compiler.ConfigInstall,UHC.Light.Compiler.ConfigInternalVersions,UHC.Light.Compiler.Core,UHC.Light.Compiler.Core.BindExtract,UHC.Light.Compiler.Core.Check,UHC.Light.Compiler.Core.Coercion,UHC.Light.Compiler.Core.ExtractFFE,UHC.Light.Compiler.Core.FFI,UHC.Light.Compiler.Core.FvS,UHC.Light.Compiler.Core.Merge,UHC.Light.Compiler.Core.ModAsMap,UHC.Light.Compiler.Core.Parser,UHC.Light.Compiler.Core.Pretty,UHC.Light.Compiler.Core.Subst,UHC.Light.Compiler.Core.SysF.AsTy,UHC.Light.Compiler.Core.ToCoreRun,UHC.Light.Compiler.Core.ToGrin,UHC.Light.Compiler.Core.Trf,UHC.Light.Compiler.Core.Trf.ANormal,UHC.Light.Compiler.Core.Trf.AnaRelevance,UHC.Light.Compiler.Core.Trf.AnnBasedSimplify,UHC.Light.Compiler.Core.Trf.CAFGlobalAsArg,UHC.Light.Compiler.Core.Trf.ConstProp,UHC.Light.Compiler.Core.Trf.ElimNonCodegenConstructs,UHC.Light.Compiler.Core.Trf.ElimTrivApp,UHC.Light.Compiler.Core.Trf.EraseExtractTysigCore,UHC.Light.Compiler.Core.Trf.EtaRed,UHC.Light.Compiler.Core.Trf.ExplicitStackTrace,UHC.Light.Compiler.Core.Trf.FixAfterParse,UHC.Light.Compiler.Core.Trf.FloatToGlobal,UHC.Light.Compiler.Core.Trf.InlineLetAlias,UHC.Light.Compiler.Core.Trf.LamGlobalAsArg,UHC.Light.Compiler.Core.Trf.LetDefBeforeUse,UHC.Light.Compiler.Core.Trf.LetFlattenStrict,UHC.Light.Compiler.Core.Trf.LetUnrec,UHC.Light.Compiler.Core.Trf.OptimizeStrictness,UHC.Light.Compiler.Core.Trf.RenUniq,UHC.Light.Compiler.Core.UsedModNms,UHC.Light.Compiler.Core.Utils,UHC.Light.Compiler.CoreRun,UHC.Light.Compiler.CoreRun.Check,UHC.Light.Compiler.CoreRun.ModImpExp,UHC.Light.Compiler.CoreRun.Parser,UHC.Light.Compiler.CoreRun.Pretty,UHC.Light.Compiler.CoreRun.Prim,UHC.Light.Compiler.CoreRun.Run,UHC.Light.Compiler.CoreRun.Run.Val,UHC.Light.Compiler.CoreRun.Run.Val.Prim,UHC.Light.Compiler.CoreRun.Run.Val.RunExplStk,UHC.Light.Compiler.CoreRun.Run.Val.RunImplStk,UHC.Light.Compiler.Deriving,UHC.Light.Compiler.EH,UHC.Light.Compiler.EH.MainAG,UHC.Light.Compiler.EH.MainAG_AGItf,UHC.Light.Compiler.EH.MainAG_CaseAlt,UHC.Light.Compiler.EH.MainAG_CaseAlts,UHC.Light.Compiler.EH.MainAG_DataConstr,UHC.Light.Compiler.EH.MainAG_DataConstrs,UHC.Light.Compiler.EH.MainAG_DataField,UHC.Light.Compiler.EH.MainAG_DataFieldExpr,UHC.Light.Compiler.EH.MainAG_DataFieldPatExpr,UHC.Light.Compiler.EH.MainAG_DataFields,UHC.Light.Compiler.EH.MainAG_Decl,UHC.Light.Compiler.EH.MainAG_Decls,UHC.Light.Compiler.EH.MainAG_Expr,UHC.Light.Compiler.EH.MainAG_ExprAnn,UHC.Light.Compiler.EH.MainAG_FuncDep,UHC.Light.Compiler.EH.MainAG_FuncDeps,UHC.Light.Compiler.EH.MainAG_KiExpr,UHC.Light.Compiler.EH.MainAG_KiExprAnn,UHC.Light.Compiler.EH.MainAG_MbTyExpr,UHC.Light.Compiler.EH.MainAG_PatExpr,UHC.Light.Compiler.EH.MainAG_PatExprAnn,UHC.Light.Compiler.EH.MainAG_PrExpr,UHC.Light.Compiler.EH.MainAG_PrExprs,UHC.Light.Compiler.EH.MainAG_RecExpr,UHC.Light.Compiler.EH.MainAG_RecPatExpr,UHC.Light.Compiler.EH.MainAG_RowTyExpr,UHC.Light.Compiler.EH.MainAG_TyExpr,UHC.Light.Compiler.EH.MainAG_TyExprAnn,UHC.Light.Compiler.EH.MainAG_TyExprs,UHC.Light.Compiler.EH.MainAG_TyVar,UHC.Light.Compiler.EH.MainAG_TyVars,UHC.Light.Compiler.EH.MainAG_common,UHC.Light.Compiler.EH.Parser,UHC.Light.Compiler.EHC.ASTHandler,UHC.Light.Compiler.EHC.ASTHandler.Instances,UHC.Light.Compiler.EHC.ASTPipeline,UHC.Light.Compiler.EHC.ASTTypes,UHC.Light.Compiler.EHC.BuildFunction,UHC.Light.Compiler.EHC.BuildFunction.Run,UHC.Light.Compiler.EHC.Common,UHC.Light.Compiler.EHC.CompileGroup,UHC.Light.Compiler.EHC.CompilePhase.Cleanup,UHC.Light.Compiler.EHC.CompilePhase.Common,UHC.Light.Compiler.EHC.CompilePhase.CompileC,UHC.Light.Compiler.EHC.CompilePhase.FlowBetweenPhase,UHC.Light.Compiler.EHC.CompilePhase.Link,UHC.Light.Compiler.EHC.CompilePhase.Module,UHC.Light.Compiler.EHC.CompilePhase.Output,UHC.Light.Compiler.EHC.CompilePhase.Parsers,UHC.Light.Compiler.EHC.CompilePhase.Run,UHC.Light.Compiler.EHC.CompilePhase.Semantics,UHC.Light.Compiler.EHC.CompilePhase.TopLevelPhases,UHC.Light.Compiler.EHC.CompilePhase.Transformations,UHC.Light.Compiler.EHC.CompilePhase.Translations,UHC.Light.Compiler.EHC.CompileRun,UHC.Light.Compiler.EHC.CompileRun.Base,UHC.Light.Compiler.EHC.CompileUnit,UHC.Light.Compiler.EHC.Environment,UHC.Light.Compiler.EHC.FileSuffMp,UHC.Light.Compiler.EHC.InitialSetup,UHC.Light.Compiler.Error,UHC.Light.Compiler.Error.Pretty,UHC.Light.Compiler.FinalEnv,UHC.Light.Compiler.Foreign,UHC.Light.Compiler.Foreign.Boxing,UHC.Light.Compiler.Foreign.Extract,UHC.Light.Compiler.Foreign.Parser,UHC.Light.Compiler.Foreign.Pretty,UHC.Light.Compiler.Gam,UHC.Light.Compiler.Gam.AppSpineGam,UHC.Light.Compiler.Gam.Base,UHC.Light.Compiler.Gam.ClGam,UHC.Light.Compiler.Gam.ClassDefaultGam,UHC.Light.Compiler.Gam.DataGam,UHC.Light.Compiler.Gam.FixityGam,UHC.Light.Compiler.Gam.Full,UHC.Light.Compiler.Gam.Instantiate,UHC.Light.Compiler.Gam.KiGam,UHC.Light.Compiler.Gam.PolGam,UHC.Light.Compiler.Gam.Quantify,UHC.Light.Compiler.Gam.TyGam,UHC.Light.Compiler.Gam.TyKiGam,UHC.Light.Compiler.Gam.Utils,UHC.Light.Compiler.Gam.ValGam,UHC.Light.Compiler.Generics,UHC.Light.Compiler.HI,UHC.Light.Compiler.HS,UHC.Light.Compiler.HS.MainAG,UHC.Light.Compiler.HS.ModImpExp,UHC.Light.Compiler.HS.Parser,UHC.Light.Compiler.LamInfo,UHC.Light.Compiler.Module.ImportExport,UHC.Light.Compiler.Module.Merge,UHC.Light.Compiler.NameAspect,UHC.Light.Compiler.Opts,UHC.Light.Compiler.Opts.Base,UHC.Light.Compiler.Opts.CommandLine,UHC.Light.Compiler.Pred,UHC.Light.Compiler.Pred.CHR,UHC.Light.Compiler.Pred.CommonCHR,UHC.Light.Compiler.Pred.Evidence,UHC.Light.Compiler.Pred.EvidenceToCore,UHC.Light.Compiler.Pred.Heuristics,UHC.Light.Compiler.Pred.RedGraph,UHC.Light.Compiler.Pred.ToCHR,UHC.Light.Compiler.Scanner.Common,UHC.Light.Compiler.Scanner.Machine,UHC.Light.Compiler.Scanner.Scanner,UHC.Light.Compiler.Scanner.Token,UHC.Light.Compiler.Scanner.TokenParser,UHC.Light.Compiler.SourceCodeSig,UHC.Light.Compiler.Substitutable,UHC.Light.Compiler.Ty,UHC.Light.Compiler.Ty.AppSpineGam,UHC.Light.Compiler.Ty.FIEnv,UHC.Light.Compiler.Ty.FIEnv2,UHC.Light.Compiler.Ty.FitsIn,UHC.Light.Compiler.Ty.FitsInCommon,UHC.Light.Compiler.Ty.FitsInCommon2,UHC.Light.Compiler.Ty.Ftv,UHC.Light.Compiler.Ty.Parser,UHC.Light.Compiler.Ty.Pretty,UHC.Light.Compiler.Ty.TreeTrieKey,UHC.Light.Compiler.Ty.Trf.BetaReduce,UHC.Light.Compiler.Ty.Trf.Canonic,UHC.Light.Compiler.Ty.Trf.FreshVar,UHC.Light.Compiler.Ty.Trf.Instantiate,UHC.Light.Compiler.Ty.Trf.MergePreds,UHC.Light.Compiler.Ty.Trf.Quantify,UHC.Light.Compiler.Ty.Trf.Subst,UHC.Light.Compiler.Ty.UsedNames,UHC.Light.Compiler.Ty.Utils1,UHC.Light.Compiler.Ty.Utils2,UHC.Light.Compiler.VarLookup,UHC.Light.Compiler.VarMp,UHC.Light.Compiler.VarMp.Utils 
+  Ghc-Options:			-fno-warn-tabs
 
 Executable uhcl
   Hs-Source-Dirs:        src-main 
-  Build-Depends:		uhc-light==1.1.9.0, fgl,uulib>=0.9.19,hashable>=1.1&&<1.3,uhc-util==0.1.5.5,base>=4.7&&<5,vector,syb,network,binary,mtl,transformers,directory,containers,array,process,filepath,primitive,binary,syb,bytestring,uulib>=0.9.12,old-locale
-  Extensions:			RankNTypes,MultiParamTypeClasses,FunctionalDependencies,UndecidableInstances,DeriveDataTypeable,OverlappingInstances,LiberalTypeSynonyms,StandaloneDeriving,DeriveGeneric,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,ScopedTypeVariables
+  Build-Depends:		uhc-light==1.1.9.1, fgl,uulib>=0.9.19,hashable>=1.1&&<1.3,uhc-util>=0.1.6.2&&<0.1.7,base>=4.7&&<5,vector,syb,network,binary,mtl,transformers,directory,containers,array,process,filepath,primitive,binary,syb,bytestring,uulib>=0.9.12,old-locale
+  Extensions:			RankNTypes,MultiParamTypeClasses,FunctionalDependencies,UndecidableInstances,DeriveDataTypeable,LiberalTypeSynonyms,StandaloneDeriving,DeriveGeneric,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,ScopedTypeVariables
   Main-Is:           	EHC.hs
 
 Executable uhcr
   Hs-Source-Dirs:        src-main 
-  Build-Depends:		uhc-light==1.1.9.0, fgl,uulib>=0.9.19,hashable>=1.1&&<1.3,uhc-util==0.1.5.5,base>=4.7&&<5,vector,syb,network,binary,mtl,transformers,directory,containers,array,process,filepath,primitive,binary,syb,bytestring,uulib>=0.9.12,old-locale
-  Extensions:			RankNTypes,MultiParamTypeClasses,FunctionalDependencies,UndecidableInstances,DeriveDataTypeable,OverlappingInstances,LiberalTypeSynonyms,StandaloneDeriving,DeriveGeneric,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,ScopedTypeVariables
+  Build-Depends:		uhc-light==1.1.9.1, fgl,uulib>=0.9.19,hashable>=1.1&&<1.3,uhc-util>=0.1.6.2&&<0.1.7,base>=4.7&&<5,vector,syb,network,binary,mtl,transformers,directory,containers,array,process,filepath,primitive,binary,syb,bytestring,uulib>=0.9.12,old-locale
+  Extensions:			RankNTypes,MultiParamTypeClasses,FunctionalDependencies,UndecidableInstances,DeriveDataTypeable,LiberalTypeSynonyms,StandaloneDeriving,DeriveGeneric,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,ScopedTypeVariables
   Main-Is:           	EHCRun.hs
